找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2149|回復: 10
收起左側

數碼管的靜態(tài)顯示:為什么數碼管到零后就消失了,不能循環(huán)

[復制鏈接]
ID:1060333 發(fā)表于 2023-1-5 15:54 | 顯示全部樓層 |閱讀模式
#include <reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

unsigned char code LedChar[] = {
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};

void main()
{
    unsigned char cnt = 0;
    unsigned char sec = 15;

    ENLED = 0;  
    ADDR3 = 1;
    ADDR2 = 0;
    ADDR1 = 0;
    ADDR0 = 0;
    TMOD = 0x01;
    TH0  = 0xB8;
    TL0  = 0x00;
    TR0  = 1;  

    while (1)
    {
        if (TF0 == 1)      
        {
            TF0 = 0;   
            TH0 = 0xB8;   
            TL0 = 0x00;
            cnt++;        
            if (cnt >= 50)
            {
                cnt = 0;         
                P0 = LedChar[sec];
                sec--;            
                if (sec < 0)   
                {
                    sec = 15;
                }
            }
        }
    }
}

回復

使用道具 舉報

ID:883242 發(fā)表于 2023-1-5 19:26 | 顯示全部樓層
你不覺得
unsigned char sec
if (sec < 0)
這兩句自相矛盾嗎?
回復

使用道具 舉報

ID:213173 發(fā)表于 2023-1-5 21:00 | 顯示全部樓層
錯誤:unsigned char sec = 15;
正確:char sec = 15;
回復

使用道具 舉報

ID:155507 發(fā)表于 2023-1-5 21:21 | 顯示全部樓層
應該改成這樣
if (sec >= 255)   
回復

使用道具 舉報

ID:1056573 發(fā)表于 2023-1-6 00:42 | 顯示全部樓層
sec 永遠到不會小于0,由此sec的值不會在0-15循環(huán),而是0-255循環(huán)。LedChar[]會溢出錯誤而中斷運行。
回復

使用道具 舉報

ID:487569 發(fā)表于 2023-1-6 08:23 | 顯示全部樓層
sec 是uchar 型,取值范圍是0~255,當sec=0的時候,執(zhí)行sec--之后,sec=255而不會滿足sec<0
回復

使用道具 舉報

ID:1023753 發(fā)表于 2023-1-13 10:11 | 顯示全部樓層
if (sec == 0)
回復

使用道具 舉報

ID:466250 發(fā)表于 2023-2-5 20:05 | 顯示全部樓層
if (sec == -1)
回復

使用道具 舉報

ID:965189 發(fā)表于 2023-2-5 22:44 | 顯示全部樓層
sec不會小于0。
回復

使用道具 舉報

ID:419968 發(fā)表于 2023-2-6 00:28 | 顯示全部樓層
sec減到最后sec=0;改成        cnt++;        
            if (cnt >= 50)
            {
                cnt = 0;         
                P0 = LedChar[sec];
                sec++;            
                if (sec == 15)   
                {
                    sec = 0;
                }
            }
回復

使用道具 舉報

ID:1061331 發(fā)表于 2023-2-6 00:38 | 顯示全部樓層
可以試試 if (sec >= 256)   
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表