欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

单片机 串口采用中断服务收发数据

程序员文章站 2022-03-04 15:04:57
下图中左边的单片机用串口接收数据,用C语言编程,实现将接收的数值送到数码管进行实时显示(接收数据范围为0~9)。(1) 已知晶振频率=11.0592MHz;(2) 要求配置串口工作在异步方式,8位数据位,波特率=2400;(3) 必须用中断服务程序对接收数据进行处理并驱动显示,主程序中的后台循环while应为空。//发送#include sbit button =P1^0;void delay(unsigned int n);char cnt...

下图中左边的单片机用串口接收数据,用C语言编程,实现将接收的数值送到数码管进行实时显示(接收数据范围为0~9)。

(1) 已知晶振频率=11.0592MHz;

(2) 要求配置串口工作在异步方式,8位数据位,波特率=2400;

(3) 必须用中断服务程序对接收数据进行处理并驱动显示,主程序中的后台循环while应为空。
单片机 串口采用中断服务收发数据

//发送 #include <reg51.h> sbit button =P1^0; void delay(unsigned int n); char cnt=0; void inter (void) interrupt 4 { TI=0; delay(100); SBUF=cnt++; if(cnt>9) cnt=0; } void main(void) { TMOD =0x20; TH1=0xf4;//256-(11059200/2400/32/12)=244 TL1=0xf4; TR1=1; ES=1;//打开串口中断开关 EA=1;//打开中断总开关 SCON=0x50; PCON=0x00; SBUF=cnt++;//要先发送一帧才会产生中断 while(1) { ; } } void delay(unsigned int n) { unsigned int cnt; for(;n>0;n--) { for(cnt=0;cnt<1000;cnt++); } } //接收 #include <reg51.h> sbit led=P1^0; sfr display=0x80; char led_mod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void inter (void) interrupt 4 { char serial_byte; serial_byte=SBUF; P0=led_mod[serial_byte]; RI=0; } void main(void) { TMOD=0x20; TH1=0xf4; TL1=0xf4; TR1=1; EA=1;//打开中断总开关 ES=1;//打开串口中断开关 SCON=0x50; PCON=0x00; while(1) { ; } } 

本文地址:https://blog.csdn.net/qq_45653763/article/details/107907667

相关标签: 单片机