标题: 接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题 0-9显示没问题... [打印本页]

作者: 张珂珂    时间: 2020-5-9 20:42
标题: 接收计算机发送数据(0-16),用数码管显示出来,超过10显示有问题 0-9显示没问题...
  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. }
复制代码



作者: wulin    时间: 2020-5-10 08:47
        while(1)
        {       
                if(RI==1)                                //查询接收中断请求标志
                {
                        RI=0;             //清除接收中断标志位
                        temp=SBUF;         //SBUF是接收区
                        P0=duan[temp];                //temp范围0~f
                }
        }
作者: 张珂珂    时间: 2020-5-10 16:55
wulin 发表于 2020-5-10 08:47
while(1)
        {       
                if(RI==1)                                //查询接收中断请求标志

谢谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1