找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1020|回复: 2
打印 上一主题 下一主题
收起左侧

接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题 0-9显示没问题...

[复制链接]
跳转到指定楼层
楼主
ID:717843 发表于 2020-5-9 20:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

  5. void main()
  6. {
  7.   uchar temp=0;
  8.   SCON = 0x50;              //设置为工作方式1,方式1要确定波特率,设置定时器   01010000 方式一,10位异步收发器(8位数据) 第二个1是REN允许串行接收位
  9.   TMOD = 0x20;            //8位重装载      00100000    0打开定时器
  10.   PCON = 0x00;            //波特率不倍增

  11.   TH1 = 0xFA;                //波特率4800
  12.   TL1 = 0xFA;

  13.   ES = 1;                    //打开通信中断
  14.   EA = 1;                    //打开总中断
  15.   TR1 = 1;                //打开计数器


  16.   
  17.   P2 = 0xa0;P0 = 0x00;P2 = 0;    //选中蜂鸣器,关闭蜂鸣器
  18.   P2 = 0xE0;        //选中数码管              打开Y7

  19.   P2=0XC0;P0=0X01;P2=0xFF;P0=0XFF; //一个数码管亮
  20.   while(1)
  21.   {
  22.    
  23.        temp=SBUF;         //SBUF是接收区
  24.        P0=duan[temp];                        
  25.        RI=0;             //清除接收中断标志位
  26. }
  27. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-5-10 08:47 | 只看该作者
        while(1)
        {       
                if(RI==1)                                //查询接收中断请求标志
                {
                        RI=0;             //清除接收中断标志位
                        temp=SBUF;         //SBUF是接收区
                        P0=duan[temp];                //temp范围0~f
                }
        }
回复

使用道具 举报

板凳
ID:717843 发表于 2020-5-10 16:55 | 只看该作者
wulin 发表于 2020-5-10 08:47
while(1)
        {       
                if(RI==1)                                //查询接收中断请求标志

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表