51單片機C語言版 點亮LED燈
仿真軟件 proteus + keil
單片機c語言基本知識:
sfr:特殊功能寄存器聲明
eg: sfr 堆棧名=地址
這裏一般不需要自己定義,特殊功能寄存器在reg51.h這個頭文件裏已經定義好了。
sbit:特殊功能位聲明
eg: sbit 變量名=地址名
在給某個引腳取名的時候會用到
bit:位變量聲明
例: sfr SCON=0x89;
sbit LED =P0^2; //表示將LED燈接在P0.2引腳上
C51中常用到的一些預處理命令:
#define
#define A P0(注意後面不加分號)
#typedef
typedef unsigned char uint;(此處後面要加分號)
下圖爲C51的基本數據類型
用typedf是因爲有時關鍵字比較長,因此重新定義。
#ifndef…#endif :條件編譯
常用於頭文件的定義還有一些程序條件編譯
運算符
==測試等於
!=測試不等於
&&邏輯與
||邏輯或
!邏輯非
---------------------------------------------------------------------------------------
點亮LED仿真
keil:
1.新建一個文件夾,打開keil軟件,新建一個工程,保存到剛纔新建的文件夾中,此處命名爲LED,在Atmel中選擇自己所用的AT89C51單片機,點擊確定;
2.選擇文件新建一張白紙,保存,保存時要將擴展名寫成.c的形式,因爲這裏是要寫主函數,此處命名爲main.c。雙擊源組將這張白紙添加到工程裏,此時可寫代碼。
代碼如下:
//實現一個LED燈
#include<reg51.h> //頭文件包含所需的庫
//#define led P1 //定義整個P1IO口寄存器
sbit led1=P1^0; //sbit (置位)注意此處P應該大寫
sbit led2=P1.1;
sbit led3=P1.2;
sbit led4=P1.3;
sbit led5=P1.4;
sbit led6=P1.5;
sbit led7=P1.6;
sbit led8=P1.7;
void main()
{
while(1) //設置一個while死循環,讓程序永遠執行下面代碼
{
//led1=0xfe; //1111 1110
led1=0; //對每一位進行設置,可設置任意的LED燈
led2=1;
led3=0;
led4=1;
led5=0;
led6=1;
led7=0;
led8=1;
}
}
3.編譯成功後,如下圖點擊,之後選擇output,勾選creat HEX file.產生HEX文件。
proteus:
如下圖所示,選擇放置器件單片機和LED燈,並連接好電路。
雙擊單片機芯片,在program file中添加剛纔所產生的HEX文件,添加成功後進行編譯。
編譯後: