- #include "reg52.h"
- unsigned char DateLenght;
- unsigned char Rec_Statu;
- unsigned char Rec_cnt;
- unsigned char PackFlag;
- unsigned char rxbuf[20];
- void Uart_Init()
- {
- SCON = 0x50;
- TMOD |= 0x20;
- TH1 = 0xfd;
- TL1=0xfd;
- ES = 1; //時能串口中斷
- EA = 1;
- TR1 = 1; //啟動定時器1
- }
- void Uart_SendByte(unsigned char dat)
- {
- SBUF=dat;
- while(TI==0)
- TI=0;
- }
- void Uart_SendString(unsigned char *pt)
- {
- while(*pt)
- Uart_SendByte(*pt++);
- }
- void ReciProcess() interrupt 4
- {
- unsigned char Temp;
- if(RI)
- {
- RI=0;
- Temp=SBUF;
- if(Temp==0xfe)
- {
- Rec_Statu=1;
- Rec_cnt=0;
- PackFlag=0;
- }
- if(Rec_Statu==1)
- {
- rxbuf[Rec_cnt++]=Temp;
- }
- if(Temp==0xfa)
- {
- PackFlag=1;
- Rec_Statu=0;
- DateLenght=Rec_cnt;
- }
- }
- }
- void main(void)
- {
- char i;
- Uart_Init();
- Uart_SendString("hello,world.\r\n");
- while(1)
- {
- if(PackFlag)
- {
- PackFlag=0;
- for(i=0;i<DateLenght;i++)
- {
- Uart_SendByte(rxbuf[i]);
- rxbuf[i]=0;
- }
- }
- }
- }
復制代碼 |