📄 serial.c
字号:
#include "config.h"
void InitSerial(void)
{
SCON=0x50;
PCON=0x80;
TMOD=TMOD&0x0f;
TMOD=TMOD|0x20;
TH1=0xf3; //com is 4800 b/s
TL1=0xf3;
TR1=1;
ES=1;
EA=1;
}
bit GetRight=0;
void main(void)
{
InitSerial();
while(1)
{
if(GetRight==1)
{
GetRight=0;
SBUF='O';
while(TI==0);
TI=0;
SBUF='K';
while(TI==0);
TI=0;
SBUF='!';
while(TI==0);
TI=0;
}
}
}
unsigned char Buf[NBYTE-2];
void comm(void) interrupt 4
//"串行口中断"
{
static unsigned char Sum,Flag=0,i;
unsigned char temp;
if(RI==1)
{
RI=0;
temp=SBUF;
switch(Flag)
{
case 0:
if(temp==STARTBYTE1)
{
Flag=1;
}
break;
case 1:
if(temp==STARTBYTE2)
{
Sum=STARTBYTE1+STARTBYTE2;
i=0;
Flag=2;
break;
}
if(temp==STARTBYTE1) break;
Flag=0;
break;
case 2:
if(temp==STARTBYTE1)
{
Flag=3;
break;
}
Sum+=temp;
if((i>=(NBYTE-3))&&Sum==0)
{
GetRight=1;
Flag=0;
break;
}
Buf[i++]=temp;
break;
case 3:
if(temp==STARTBYTE2)
{
Sum=STARTBYTE1+STARTBYTE2;
Flag=2;
i=0;
break;
}
Sum+=STARTBYTE1;
if((i>=(NBYTE-3))&&Sum==0)
{
GetRight=1;
Flag=0;
break;
}
Buf[i++]=STARTBYTE1;
if(temp==STARTBYTE1)
{
break;
}
Sum+=temp;
if((i>=(NBYTE-3))&&Sum==0)
{
GetRight=1;
Flag=0;
break;
}
Buf[i++]=temp;
Flag=2;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -