欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 蓝桥杯单片学习总结(Day12 串口通讯实验)

蓝桥杯单片学习总结(Day12 串口通讯实验)

2025/9/21 12:49:49 来源:https://blog.csdn.net/2302_80724534/article/details/140531453  浏览:    关键词:蓝桥杯单片学习总结(Day12 串口通讯实验)

实验现象:

        通过串口调试助手发送数字1~8,板子上面的对应指示灯亮。注意此处发送应选择文本模式发送。

 实例代码:

#include <STC15F2K60S2.H>#define BUAD	9600  //所需波特率、
#define SYSTEMCLOCK	11059200L  //系统时钟频率,L表示该数据为长整型
void uart_sendstring(unsigned char *str);
unsigned char flag;  //数据接收标志位
char rin='1';void UartInit(void)		//9600bps@11.0592MHz
{SCON = 0x50;		//8位数据,可变波特率AUXR |= 0x40;		//定时器1时钟为Fosc,即1TTMOD = 0x00;		//设定定时器1为16位自动重装方式TL1 = 65535-(SYSTEMCLOCK/4/BUAD);		//设定定时初值与终值,固定模板TH1 = (65535-(SYSTEMCLOCK/4/BUAD)>>8);		TR1 = 1;		//启动定时器1ES=1;EA=1;
}void main()
{UartInit();while(1){if(flag){flag=0;switch(rin){case '1':{P2=(P2&0x1f)|0x80;P0=0xfe;P2&=0x1f;uart_sendstring('1');}break;case '2':{P2=(P2&0x1f)|0x80;P0=0xfd;P2&=0x1f;uart_sendstring('2');}break;case '3':{P2=(P2&0x1f)|0x80;P0=0xfb;P2&=0x1f;uart_sendstring('3');}break;case '4':{P2=(P2&0x1f)|0x80;P0=0xf7;P2&=0x1f;uart_sendstring('4');}break;case '5':{P2=(P2&0x1f)|0x80;P0=0xef;P2&=0x1f;uart_sendstring('5');}break;case '6':{P2=(P2&0x1f)|0x80;P0=0xdf;P2&=0x1f;uart_sendstring('6');}break;case '7':{P2=(P2&0x1f)|0x80;P0=0xbf;P2&=0x1f;uart_sendstring('7');}break;case '8':{P2=(P2&0x1f)|0x80;P0=0x7f;P2&=0x1f;uart_sendstring('8');}break;default:uart_sendstring("error\r\n");  //输入其他数据返回errorbreak;}ES=1;}}
}//串口中断服务函数
void uart_Proc() interrupt 4
{if(RI)  //正在接收数据{RI=0;  //需要手动赋0rin=SBUF;  //定时持续接收数据ES=0;flag=1;}
}//通过串口发送信息
void uart_sendstring(unsigned char *str)
{unsigned char *p;p=str;while(*p!='\0'){SBUF=*p;  //sendwhile(TI==0)  //等待发送标志位TI=0;p++;	}
}

实验原理: 

        

        EA为总开关,ES为串行口中断开关 ,在使用串行口中断前必须闭合EA、ES,即EA=1;

ES=1;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词