|
作為一個小白,今天才自己學了串口通信,然后就想通過發送數字來控制LED的亮和滅。剛開始錯誤挺多的,但是自己不斷修改,寫出這個程序還是挺高興的。
#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
uchar i;
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
sbit led4=P2^4;
sbit led5=P2^5;
sbit led6=P2^6;
sbit led7=P2^7;
void uart_init() //串口初始化函數
{
TMOD=0x20; //設置計數器工作方式2
TH1=0xF3; //計數器初始值設置,注意波特率是4800
TL1=0xF3;
PCON=0x80; //波特率加倍
TR1=1; //打開計數器
SCON=0x50; //設置為工作方式1
ES=1; //打開接收中斷
EA=1; //打開總中斷
}
void uart() interrupt 4
{
uchar receiveData;
i=SBUF;
switch(i)
{
case '0':led0=0;break;
case '1':led1=0;break;
case '2':led2=0;break;
case '3':led3=0;break;
case '4':led4=0;break;
case '5':led5=0;break;
case '6':led6=0;break;
case '7':led7=0;break;
default:P2=0XFF;break;
}
// if(i=='0') led0=0;
// else if(i=='1') led1=0;
// else if(i=='2') led2=0;
// else if(i=='3') led3=0;
// else if(i=='4') led4=0;
// else if(i=='5') led5=0;
// else if(i=='6') led6=0;
// else if(i=='7') led7=0;
// else if(i=='8') P2=0xff;
receiveData=SBUF; //出去接收到的數據
RI=0; //清除接收中斷標志位
SBUF=receiveData; //將接收到的數據放入到發送寄存器
while(!TI); //等待發送數據完成
TI=0; //清除發送完成標志位
}
void main()
{
uart_init(); //串口初始化
while(1);
}
|
-
-
串口通信控制led亮滅.rar
2018-7-17 16:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
22.78 KB, 下載次數: 179, 下載積分: 黑幣 -5
評分
-
查看全部評分
|