标题: 【求助】 输入与输出不符,请帮忙检查代码 [打印本页]

作者: 51_users    时间: 2020-10-24 10:23
标题: 【求助】 输入与输出不符,请帮忙检查代码
用串口助手将数字发送到数码管,输入一个数,在数码管将这个数显示出来。目前出了点问题,请帮忙检查,谢谢。

#include <reg52.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

sbit dula = P2^6;
sbit wela = P2^7;
uchar num;
uchar code du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f};
uchar code we[]={0xfe,0xfd,0xfb};
void display(uchar i)
{
        static uchar wei;
        switch (wei)
        {
                case 0: dula=1;
                                                P0=du[i/100];
                                                dula=0;
                                                break;
                case 1: dula=1;
                                                P0=du[i%100/10];
                                                dula=0;
                                                break;
                case 2: dula=1;
                                                P0=du[i%10];
                                                dula=0;
                                                break;               
        }
        wei++;
        if(wei == 3)
                wei = 0;
        P0=0xff;
        wela=1;
        P0=we[wei];
        wela=0;
}
void timer0Init()
{
        EA=1;
        ET0=1;
        TR0=1;
        REN=1;
        TMOD|=0x01;
        TH0=0xED;
        TL0=0xFF;       
}
void uartInit()
{
        EA=1;
        ES=1;
        SM0=0;
        SM1=1;
        REN=1;
        TR1=1;
        TMOD|=0x20;
        TH1=0xfd;
        TL1=0xfd;       
}

void main()
{
        timer0Init();
        uartInit();
        while(1);
}
void timmer0() interrupt 1
{
                TH0=0xED;
                TH1=0xFF;
                display(num);
}
void uart() interrupt 4
{
        if(RI)
        {                       
                num=SBUF;
                RI=0;
        }
}


作者: dsf232    时间: 2020-10-28 09:55
可能是你串口发送的是字符,而数码管显示函数需要的是数值,所以导致显示错误,比如串口发送的是'0',而你这里认为的是0,就会误操作




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