51微控制器點亮乙個led燈

2021-10-03 09:44:50 字數 2948 閱讀 9464

51微控制器是很多小白入門嵌入式的一款微控制器,雖然51實際工作中用得不多,但是作為入門學習的一款微控制器卻是非常值得推薦的。畢竟一開始學的時候,作為我們這種普普通通的學習能力而言的小白,最好是簡單易學,可以快速的看到學習的成果,那是最可以激勵我們學習下去的動力和興趣。

簡單學習51微控制器後,可以參加一些學院的小比賽,這是作為過來人的經驗。參加一些小比賽,不僅能激勵自己,還能看到大家在做什麼,在學習哪些領域的知識。那麼接下來就開始我們的微控制器之旅吧,直接從點亮乙個led等開始。微控制器的介紹什麼,大家肯定可以從很多地方學習到,這個其實自然而然會明白。

選用keil5編譯器,新建乙個工程:

#include//使用微控制器的資源,標頭檔案將c程式中能用到的暫存器名或暫存器中某位的名稱與硬體位址值做了對應 ,下面給出了具體的內容

sbit led0 = p0^0;     //即定義led0為p0口的第1位,以便進行位操作。bit和int char之類的差不多,只不過char=8位, bit=1位而已。

void main()

led0 = 0;  //p0口的第乙個io接到了發光二極體輸出端(三角形箭頭端),發光二極體另一端輸入接了vcc

}51標頭檔案中的定義:

sfr p0 = 0x80; //p0口

sfr p1 = 0x90; //p1口

sfr p2 = 0xa0; //p2口

sfr p3 = 0xb0; //p3口

sfr psw = 0xd0; //程式狀態字,具體位意義見位定義

sfr acc = 0xe0; //累加器,程式設計師最常用的

sfr b = 0xf0; //暫存器,主要用於乘除

sfr sp = 0x81; //堆疊指標,初始化為07;先加1後壓棧,先出棧再減1,

sfr dpl = 0x82;

sfr dph = 0x83; //資料指標,用途大

sfr pcon = 0x87; //電源控制

sfr tcon = 0x88; //timer/counter控制

sfr tmod = 0x89; //timer/counter方式控制

sfr tl0 = 0x8a;

sfr tl1 = 0x8b; //

sfr th0 = 0x8c; //存著當前的計數值

sfr th1 = 0x8d; //我就想不明白,當時設計的時候,為什麼不把th0,tl0放在連續的位址!

sfr ie = 0xa8; //好東西,中斷控制

sfr ip = 0xb8; //中斷優先順序控制,沒有設計過要求時間嚴格的系統,所以至今沒有用過

sfr scon = 0x98; //哇,熟悉,串列埠控制暫存器

sfr sbuf = 0x99; //哇,更熟悉,串列埠緩衝暫存器

sbit cy = 0xd7; //進製或借位,有就是1,沒有就是0

sbit ac = 0xd6; //輔助進借位,(麻煩b)

sbit f0 = 0xd5; //沒有具體用途,可以由使用者決定他的意義,所以它就沒有意義

sbit rs1 = 0xd4;

sbit rs0 = 0xd3; //工作暫存器選擇,這個在下面解釋

sbit ov = 0xd2; //over!溢位,有是1,沒有是0

sbit p = 0xd0; //奇偶校驗,奇數個1是1

sbit tf1 = 0x8f; //t1的中斷請求標誌

sbit tr1 = 0x8e; //timer 1 running,好記吧~

sbit tf0 = 0x8d; //

sbit tr0 = 0x8c; //把上面兩個1換成0

sbit ie1 = 0x8b; //interrupt external 1 外中斷請求標誌

sbit it1 = 0x8a; //interrupt triggle 1 外中斷觸發方式

sbit ie0 = 0x89;

sbit it0 = 0x88; //同樣,把上面的兩個1換成0

sbit ea = 0xaf; //enable all哇,重要,全域性中斷控制,光著他,哈哈,什麼都不用作了,就像放假一樣

sbit es = 0xac; //enable serial,開串列埠中斷

sbit et1 = 0xab; //enable timer/counter 1

sbit ex1 = 0xaa; //enable external 1

sbit et0 = 0xa9; //enable timer/counter 0

sbit ex0 = 0xa8; //enable external 0

sbit ps = 0xbc; //序列中斷優先順序

sbit pt1 = 0xbb; //t1優先順序

sbit px1 = 0xba; //外部中斷1優先順序

sbit pt0 = 0xb9; //

sbit px0 = 0xb8; //上面兩個1換成0

//控制暫存器!!!!

sbit rd = 0xb7; //讀

sbit wr = 0xb6; //寫

sbit t1 = 0xb5; //t/c1

sbit t0 = 0xb4; //t/c0

sbit int1 = 0xb3; //外中斷1

sbit int0 = 0xb2; //外中斷0

sbit txd = 0xb1; //序列傳送

sbit rxd = 0xb0; //序列接收

sbit sm0 = 0x9f; //

sbit sm1 = 0x9e; //串列埠工作方式

sbit sm2 = 0x9d; //什麼鬼特徵位,要用查書,或者等我以後解釋,啊哈

sbit ren = 0x9c; //序列接收允許

sbit tb8 = 0x9b; //收到的第九位

sbit rb8 = 0x9a; //要發的第九位

sbit ti = 0x99; //哇,熟悉吧,傳送完成中斷標誌

sbit ri = 0x98; //接收完成中斷標誌

STC微控制器點亮乙個LED燈

led,發光二極體,是一種半導體固體發光器件。如圖 led的符號為 led的工作是有方向性的,只有當正級接到led陽極 負極接到led的陰極 的時候才能工作,如果反接led是不能正常工作的。led的原理 析 一共有八個led燈d1 d8,開發板上面led的原理圖如上圖,led的陽極串聯乙個電阻,然後...

金沙灘51微控制器點亮乙個LED燈

我用的開發板型號是金沙灘51微控制器 ide是keil4,普通的c語言環境。include 包含特殊功能暫存器定義的標頭檔案 sbit led p0 0 sbit addr0 p1 0 sbit addr1 p1 1 sbit addr2 p1 2 sbit addr3 p1 3 sbit enle...

51微控制器之點亮乙個燈

接下來的學習將主要轉為使用keil程式設計,並使用proteus進行 推薦有條件的同學可以購買乙個板子進行實物的練習 發光二極體常用來指示系統工作狀態,製作節日彩燈 廣告牌匾等。大部分發光二極體工作電流1到5ma之間,其內阻為20到100 電流越大,亮度也越高。為保證發光二極體正常工作,同時減少功耗...