當前位置:編程學習大全網 - 編程語言 - STC 89c52rc單片機代碼

STC 89c52rc單片機代碼

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

波特率設為9600,無奇偶校驗,晶振11.0592MHz,STC89C52。

微控制器通過串口接收字符“a”,微控制器反饋“a”,開p1.0 =1。

如果微控制器在30秒內沒有收到“a”p 1.0 = 0。

問題:1。延誤和端口要根據妳的實際情況來改變。

2.上電或復位後,P1.0=0的第壹次切換時間比後面的切換時間長,不壹致。之後就正常了

******************************************************************/

# include & ltreg52.h & gt

#定義uchar無符號字符

#定義uint無符號整數

uchar buf

sbit out = p1^0;

Void delay(無符號字符)//11.0592 MHz,帶參數delay。

{

無符號字符I,j,k;

for(k = s;k & gt0;k -)

{

I = 180;

j = 73

{

while(-j);

} while(-I);

}

}

無效總管(無效)

{

SCON = 0x 50;//設置串口工作模式

PCON = 0x 00;//波特率不相乘

TMOD = 0x 20;//定時器1工作在8位自動重載模式下產生波特率。

EA = 1;

ES = 1;//允許串行端口中斷

TL 1 = 0x FD;

th 1 = 0x FD;//波特率9600

tr 1 = 1;

while(1)

{

延時(100);//Delay,這個要根據實際情況修改成妳需要的值。

out = 0;//正常開機。延遲後,P1.0將等於0。

//從串口接收到A後,會立刻讓P1.0等於1。

//然後如果延遲時間內沒有再次收到A,程序會讓P1.0再次等於0,循環。。。

}

}

/*********************************************************

串行中斷服務功能

*********************************************************/

無效串行()中斷4

{

ES = 0;//關閉串行中斷

RI = 0;//清除串行接受標誌位。

buf = SBUF//從串行緩沖區獲取數據

開關(緩沖器)

{

case 0x 61:out = 1;打破;//接收到字符A,使得P2.0為高(0x61是“A”的ASCII碼的十六進制形式)

//case 0x 32:out = 0;打破;//接收到字符2,使P2.0為低電平(供測試使用)

默認:break//收到其他數據,無動作。

}

ES = 1;//允許串行端口中斷

}

  • 上一篇:眼下求職就業越來越難,拋開其他不說,選擇科學高效的求職方式十分重要,不知道妳們有什麽高見?
  • 下一篇:如何實現webrtc多人視頻直播會議?
  • copyright 2024編程學習大全網