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

下图中左边的单片机用串口接收数据,用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)
 {
 ;
 }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值