1.頭文件
在 #include<reg52.h>頭文件中,把單片機中的寄存器地址封裝起來定義成宏供我們調用,寄存器這個概念我們初學先不用太深刻的去理解它,在《手把手教你學51單片機》文檔中2.4.1節有講解,大家熟讀幾遍,如果還是無法理解后面我們再用程序配合硬件來領悟它們的作用。
2.單片機端口
首先我們知道STC89C52RC這個芯片有4*8=32個IO端口是可以被我們用程序控制輸出高電平或低電平的。拿P0表示它可以一次性控制8個引腳端口輸出每個引腳想輸出的電平狀態,P0是一個寄存器,它的功能是控制所對應的8個單片機IO端口(P0.0~P0.7)輸出我們想要輸出的電平,比如我們控制P0.0單個IO端口輸出低電平,P0.1~P0.7這7個IO端口輸出高電平,程序中使用這條語句“P0=0xFE;”,其他P1,P2,P3也是一樣的操作。
3.IO端口與二進制
C語言中的十六進制0xFE用二進制表示 11111110,我們也就知道了單片機的P0.0排在了這八個位的最底端。我們控制P0.2單個IO端口輸出低電平,其他IO端口輸出高電平,則是“P0=0xFB; ”二進制表示 11111011。對這些知識沒有過接觸的讀者用計算器可以快速查看,不過以后還是盡量口算比較好。
4.單個IO端口聲明
有時我們只關心單片機的一個引腳的電平控制,其他7個我們不用把人家強制輸出成其他電平,而“P0=0xFE;”就是強制把其他7個IO端口都輸出了固定高電平狀態。要想實現單獨控制一個IO端口,這時我們用這條語句來聲明“sbit LED=P0^0;”也就是只控制一個位,此時想讓單獨的P0.0輸出低電平只需“LED=0;”即可,LED不過是表示P0.0所用的名字而已,你可以根據喜好改寫這個名字。
值得注意的是,程序書寫中如果沒有“sbit LED=P0^0;”這個提前定義,直接“P0.0=0;”這樣書寫是不符合語法的,必須先給IO端口一個命名,而且“sbit LED=P0.0;”這樣的寫法同樣也不符合語法,規定是“P0^0”。
還有我們也不能命名已經在 #include<reg52.h>頭文件中已有的名字,查看頭文件內容可知,有些名字已經被使用,
像“sbit PSW=P0^0;”,“sbit CY=P0^0;”這樣定義會編譯報錯的,因為命名沖突了。#include<reg52.h>頭文件中已有的名字我們后期會使用到的。
5.程序點亮LED
1.硬件連接
假設開發板上的LED連接情況如下
成人app那么我們用程序來點亮它就比較簡單了,只需讓P0.0輸出低電平即可。
2.代碼
#include <reg52.h> sbit LED = P0^0; void main() { LED= 0; while (1);//程序執行到此處語句,則不再往下執行下面的語句,相當于程序運行停在了此處,其實是這條語句一直在死循環空作功,文檔2.4.3節有參考 }
3.提醒
成人app上述代碼只是簡單入門第一個程序,但是這段代碼在本教程所使用的開發板中并不能點亮一盞燈,原因是開發板實際硬件連接并不是如上圖所示。此講的原理圖只是作為第一個程序的入門講解參考。
本文固定URL:http://hnsaiyang.com/course/177