標題:
初學單片機,如何在主函數(shù)里面調(diào)用我在串口助手里面輸入的數(shù)字
[打印本頁]
作者:
yusabc
時間:
2018-5-30 12:23
標題:
初學單片機,如何在主函數(shù)里面調(diào)用我在串口助手里面輸入的數(shù)字
初學單片機,哪位大哥幫我看下如何在主函數(shù)里面調(diào)用我在串口助手里面輸入的數(shù)字,我下面的不行啊幫忙看下哪里錯了
0.png
(19.24 KB, 下載次數(shù): 56)
下載附件
2018-5-30 16:38 上傳
作者:
yusabc
時間:
2018-5-30 12:25
sbit led=P2^0; //D1
sbit led1=P2^1; //D1
sbit led2=P2^2; //D1
void delay(u16 i)
{
while(i--);
}
void display()
{
while(1)
{
led=0;
delay(50000); //大約延時450ms
led=1;
delay(50000); //大約延時450ms
}
}
void display1()
{
while(1)
{
led1=0;
delay(50000); //大約延時450ms
led1=1;
delay(50000); //大約延時450ms
}
}
void display2()
{
while(1)
{
led2=0;
delay(50000); //大約延時450ms
led2=1;
delay(50000); //大約延時450ms
}
}
void UsartInit()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數(shù)器初始值設置,注意波特率是4800的
TL1=0XF3;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數(shù)器
}
void main()
{
UsartInit();
switch(SBUF)
{
case(1):
display() ;break;
case(2):
display1() ;break;
case(3):
display2() ;break;
}
while(1);
}
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF;//出去接收到的數(shù)據(jù)
RI = 0;//清除接收中斷標志位
SBUF=receiveData;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標志位
}
作者:
TT1998
時間:
2018-6-3 18:29
你把switch放到中斷看看,感覺是sbuf的問題
作者:
woshige
時間:
2018-6-3 20:09
串口助手輸入的“數(shù)字”其實是字符,并且有對應的ASCII碼值,你把case里的123當做字符用單引號括起來就可以了,或者使用ASCII值
作者:
loading88
時間:
2018-6-4 10:25
你這里問題有;
第一:不能直接判斷SBUF寄存器里面的數(shù)據(jù)
第二:你得確定串口來的數(shù)據(jù)是1.2.3,或者是ASCII碼值
void main()
{
u8 receiveData;
receiveData=SBUF;
UsartInit();
switch(receiveData)
{
case(1): //可能是ASSCII碼0X31
display() ;break;
case(2): //可能是ASSCII碼0X32
display1() ;break;
case(3): //可能是ASSCII碼0X33
display2() ;break;
}
while(1);
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1