成人app

首頁  /  單片機教程  /  程序點燈  /  

程序點燈

點擊打開在線編譯器,邊學邊練

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。對這些知識沒有過接觸的讀者用計算器可以快速查看,不過以后還是盡量口算比較好。

QQ截圖20200326165726.png


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連接情況如下

QQ截圖20200326165726.png

成人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

上一課:初識原理圖 下一課:實際LED硬件連接
第一章 單片機入門
第二章 LED
第三章 蜂鳴器
第四章 數碼管
第五章 獨立按鍵
第六章 多文件編程
第七章 外部中斷
第八章 定時器
第九章 舵機與超聲波模塊
第十章 串口通信
第十一章 1602液晶屏
第十二章 IIC通信
第十三章 紅外遙控與溫度傳感器
第十四章 AD與DA
第十五章 混合例程
第十六章 完結
Dotcpp在線編譯      (登錄可減少運行等待時間)