#define uchar unsigned char
#define LLONG 30
//char code table[]="Hello!"
uchar code table[]={'F','i','r','s','t','C','h','a','r',':',0x0d,0x0a,'W','W','W','.','H','E','B','T','U','.','E','D','U','.','C','N',0x0d,0x0a}
uchar Flag,FirstChar=0,UARTChar[10]={0}
void uart() interrupt 4
{
ES=0 //---- 中断暂停 ----
RI=0 //---- 清标志位 ----
FirstChar=SBUF
Flag=1
ES=1 //---- 中断开启 ----
}
void main()
{
char i=0
TH1=0xFD
TL1=0xFD
TMOD=0x20//T1在定时器方式
TCON=0x40//TR1=1
PCON=0x00//SMOD为0
SCON=0x50//串行方式1 REN=1
IP=0x00
IE=0x90
while(1)
{
if(Flag==1)
{
ES=0 //---- 中断暂停 ----
Flag=0 //---- 清标志位 ----
for(i=0i<10i++)
{
SBUF=table[i]
while(!TI)
TI=0
}
SBUF=FirstChar
while(!TI) //---- 通讯等待 ----
TI=0 //---- 清标志位 ----
for(i=10i<LLONGi++)
{
SBUF=table[i]
while(!TI)
TI=0
}
ES=1 //---- 中断开启 ----
}
}
}
这个设计的思路是这样:PC机,可以自发自收,在COM1、COM2之间,连接线路,可以使用“串口调试助手”软件。保证单个字节、多个字节连续、单向、互相、都能畅通无阻。
串口调试助手的作者,写了一本书,你试试看,通信的方法,写得很好的。
当PC机发、收成功之后,再和单片机进行互相通信的调试。
最后,再研究制定自己的通信协议。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)