STC8单片机串口通信实例:接收控制命令并发送对应指令
//头文件 #include <STC8.H> #include 'intrins.h' #define uchar unsigned char #define uint unsigned int
//定义控制命令 char command_1[15] = 'ONA'; char command_2[15] = 'ONB'; char command_3[15] = 'ONC'; char command_4[15] = 'OND'; char command_0[15] = 'ONF'; char temp=0;
//延迟函数 void Delay_ms(uint k) { uchar data i, j, m; for (m = 0; m < k; m++) { nop(); nop(); nop(); i = 11; j = 190; do { while (--j); } while (--i); } }
//串口初始化函数 void UartInit(void) { PCON &= 0x7F; SCON = 0x50; AUXR &= 0xBF; AUXR &= 0xFE; TMOD &= 0x0F; TMOD |= 0x20; TL1 = 0xFD; TH1 = 0xFD; ET1 = 0; TR1 = 1; }
//串口发送函数 void UartSend(char dat) { SBUF = dat; while (!TI); TI=0; }
//串口发送字符串函数 void UartSendStr(char *p) { while (*p) { UartSend(*p++);// 发送数据 } }
//主函数 void main() { UartInit(); //串口初始化 ES = 1; //开启串口中断 EA = 1; //开启总中断 while (1) { Delay_ms(10); //延迟10ms } }
//串口接收中断函数 void UART_Interrupt() interrupt 4 {
uint m = 300;
uint n = -300;
while (!RI);
RI = 0; // 清除接收中断标志位
temp = SBUF;
UartSend(temp);// 读取接收到的数据
if(temp == '0')
{
UartSendStr(command_0); //发送控制命令
}
if(temp=='1')
{
UartSendStr(command_1); //发送控制命令
}
if(temp=='2')
{
UartSendStr(command_2); //发送控制命令
}
if(temp=='3')
{
UartSendStr(command_3); //发送控制命令
}
if(temp=='4')
{
UartSendStr(command_4); //发送控制命令
}
}
原文地址: http://www.cveoy.top/t/topic/oTdC 著作权归作者所有。请勿转载和采集!