标题:
单片机串口通讯程序变量赋值问题
[打印本页]
作者:
Thunder.
时间:
2019-4-8 09:43
标题:
单片机串口通讯程序变量赋值问题
如图 我想把这三个数取过来 231 是定义三个数组呢 还是直接使用变量赋值 这下面是我写的 但是取不出来
#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; //定时器工作方式,选择了定时器1,工作方式2 八位初值自动重装的8位定时器。
TH1=0xfd; //定时器1初值 ,设置波特率为9600 晶振11.0529MHZ?
TL1=0xfd;
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TR1=1; //开启定时器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;
}
}
复制代码
QQ图片20190408094138.jpg
(195.71 KB, 下载次数: 159)
下载附件
2019-4-8 09:43 上传
串口发送的内容
作者:
孤剑酷
时间:
2019-4-10 19:54
提供一个思路,因为串口输出过来的都是有空格来断开的,当你需要这些数据的时候,你可以在你获取数据的程序里按照顺序以空格来判断这个数据是不是完整的,类似于C语言的那个提取字符串。
作者:
chtyise
时间:
2019-4-10 23:14
如果按你写的程序,当串口接收数据是0xe7,这样可以的.
如果按你电脑上的数据是三个十六进制数,程序可以用数组接收,
注意电脑收到是6个数据0x32 0x20 0x33 0x20 0x31 0x20
作者:
louis333
时间:
2019-4-11 08:52
串口接受的一般是字符串发送,发送的是ASCII码,需要转换成自己需要的数字,去掉空格,用数组储存起来比较合适!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1