找回密码
 立即注册

QQ登录

只需一步,快速开始

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

【求助】 输入与输出不符,请帮忙检查代码

[复制链接]
跳转到指定楼层
楼主
ID:595380 发表于 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;
        }
}

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

使用道具 举报

沙发
ID:363696 发表于 2020-10-28 09:55 | 只看该作者
可能是你串口发送的是字符,而数码管显示函数需要的是数值,所以导致显示错误,比如串口发送的是'0',而你这里认为的是0,就会误操作
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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