標題:
求單片機大神指教,手機發(fā)送字符無法改變led的亮滅
[打印本頁]
作者:
探路
時間:
2017-11-23 19:26
標題:
求單片機大神指教,手機發(fā)送字符無法改變led的亮滅
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned int
#define uint unsigned char
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
uchar temp,c;
void init() //串口初始化
{
ES=0;//關(guān)中斷
TMOD=0x20;//定時器工作方式2,8位自動重裝模式,用于產(chǎn)生波特率
TH1=0xfd;//波特率位9600.晶振位11.059
TL1=0xfd;
SCON=0x50;//REN=1允許串行接受狀態(tài),串口口工作方式1
PCON=0x00;//波特率不加倍
TR1=1;//定時器1開始工作,產(chǎn)生波特率
// TI=0;//發(fā)送標志位置0
// RI=0;//接受標志位置0
EA=1;
ES=1;//開串口中斷
led1=0;
led2=0;
led3=0;
}
void send(uchar a)//單字節(jié)數(shù)據(jù)發(fā)送
{
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2)
led3=1; //發(fā)送指示燈標志,每接收一次,此燈亮滅交替
else
led3=0;
c++;
}
void ctrl()//接收處理函數(shù)
{
switch(temp)
{
case '1':led1=1;
send(temp);
break;
case '2':led2=1;
send(temp);
break;
case '3':led1=0;led2=0;
send(temp);
break;
case '4':led1=1;led2=1;
send(temp);
break;
case '5':led3=0;
send(temp);
break;
default:
led1=1;
led2=1;
led3=1;
send(temp);
}
}
void main()
{
// led1=0;
// led2=0;
// led3=0;
init();
while(1)
{
// if(RI==1)//是否有數(shù)據(jù)到來
// {
// RI=0;
// temp=SBUF; //暫存接收到的數(shù)據(jù)
ctrl();
// }
}
}
void ser() interrupt 4
{
RI=0;
temp=SBUF; //暫存接收到的數(shù)據(jù)
}
作者:
hange_v
時間:
2017-11-23 20:09
很簡單,串口收到的是ASCII,把你收到的字符temp-'0'才是真正的數(shù)字。。。
作者:
ljn123123
時間:
2017-11-23 22:37
手機發(fā)送的是ascall,還有,注意一下發(fā)送的是hex還是文本模式
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1