標(biāo)題:
單片機(jī)串口通訊程序變量賦值問(wèn)題
[打印本頁(yè)]
作者:
Thunder.
時(shí)間:
2019-4-8 09:43
標(biāo)題:
單片機(jī)串口通訊程序變量賦值問(wèn)題
如圖 我想把這三個(gè)數(shù)取過(guò)來(lái) 231 是定義三個(gè)數(shù)組呢 還是直接使用變量賦值 這下面是我寫(xiě)的 但是取不出來(lái)
#include<stc12.h>//頭文件
sbit DU=P2^6;
sbit WE=P2^7;
unsigned int date[6],value,one,two,three;
unsigned char num=0;
unsigned int code sz[4]={0x3f,0x06,0x5b ,0x4f};
void delay(unsigned char xms) //xms等于幾就延遲幾毫秒
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void UartConfiguration()
{
TMOD=0x20; //定時(shí)器工作方式,選擇了定時(shí)器1,工作方式2 八位初值自動(dòng)重裝的8位定時(shí)器。
TH1=0xfd; //定時(shí)器1初值 ,設(shè)置波特率為9600 晶振11.0529MHZ?
TL1=0xfd;
AUXR |= 0x40; //定時(shí)器1時(shí)鐘為Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TR1=1; //開(kāi)啟定時(shí)器1
SCON=0X50;
PCON=0X00;
ES=1; //允許串口中斷
EA=1; //允許中斷(總閘)
}
void main()
{
UartConfiguration();
while(1)
{
// one=date[0]%10;
// two=date[2]%10;
// three=date[4]%10;
one=value%10;
two=(value%100)/10;
three=value/100;
P0=sz[one];
DU=1;
DU=0;
P0=0x7f;
WE=1;
WE=0;
delay(2);
P0=sz[two];
DU=1;
DU=0;
P0=0xbf;
WE=1;
WE=0;
delay(2);
P0=sz[three];
DU=1;
DU=0;
P0=0xdf;
WE=1;
WE=0;
delay(2);
}
}
void Uart() interrupt 4
{
if(RI==1)
{
RI=0;
// date[num]=SBUF;
// num++;
// if(num==7)
// {
// num=0;
// }
value=SBUF;
}
}
復(fù)制代碼
QQ圖片20190408094138.jpg
(195.71 KB, 下載次數(shù): 159)
下載附件
2019-4-8 09:43 上傳
串口發(fā)送的內(nèi)容
作者:
孤劍酷
時(shí)間:
2019-4-10 19:54
提供一個(gè)思路,因?yàn)榇谳敵鲞^(guò)來(lái)的都是有空格來(lái)斷開(kāi)的,當(dāng)你需要這些數(shù)據(jù)的時(shí)候,你可以在你獲取數(shù)據(jù)的程序里按照順序以空格來(lái)判斷這個(gè)數(shù)據(jù)是不是完整的,類似于C語(yǔ)言的那個(gè)提取字符串。
作者:
chtyise
時(shí)間:
2019-4-10 23:14
如果按你寫(xiě)的程序,當(dāng)串口接收數(shù)據(jù)是0xe7,這樣可以的.
如果按你電腦上的數(shù)據(jù)是三個(gè)十六進(jìn)制數(shù),程序可以用數(shù)組接收,
注意電腦收到是6個(gè)數(shù)據(jù)0x32 0x20 0x33 0x20 0x31 0x20
作者:
louis333
時(shí)間:
2019-4-11 08:52
串口接受的一般是字符串發(fā)送,發(fā)送的是ASCII碼,需要轉(zhuǎn)換成自己需要的數(shù)字,去掉空格,用數(shù)組儲(chǔ)存起來(lái)比較合適!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1