找回密码
 注册
关于网站域名变更的通知
查看: 182|回复: 4
打印 上一主题 下一主题

数码管的静态显示:为什么数码管到零后就消失了,不能循环

[复制链接]
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2023-2-9 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    #include <reg52.h>
    & {' q0 \9 M0 B% z
    . {% ?8 ~- f9 Msbit ADDR0 = P1^0;2 E" z$ {5 K% e- [! P4 z% `* `7 u; `
    sbit ADDR1 = P1^1;6 D4 Y! Z0 s& V7 Z( ?+ l8 }# F
    sbit ADDR2 = P1^2;$ x) Y5 l; A- Y
    sbit ADDR3 = P1^3;9 c# t9 i) S+ ~0 O
    sbit ENLED = P1^4;
    ; h3 c, s8 u  R* j. N( m# r4 K5 @& g5 L! e% }% ^
    unsigned char code LedChar[] = {  G: X* ~4 ]2 N6 }9 b/ ?/ |
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,  r9 E( a, W- V. |* i5 a
        0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E* ?) c0 A* f6 |0 x: w0 w1 V
    };9 p/ ?2 S! F, j# [/ K
    ) {  E2 R5 B; K- a3 O* @
    void main(), k3 H3 @& X3 U" v8 L
    {
    : q6 L8 X+ ?& Y1 A    unsigned char cnt = 0;
    2 r% w3 q3 J# ?    unsigned char sec = 15;, x% y! [: ~& K; A2 {( N8 U. h
    2 r& U: w& X# ~3 `# y! H; D& @7 Y% V
        ENLED = 0;  % U" k+ k2 f. G) |- b: k# z. x
        ADDR3 = 1;
    # k6 ~- d0 F8 k' ^% Z+ D    ADDR2 = 0;
    9 p6 c; A+ ?2 o6 H    ADDR1 = 0;
    2 ]% [" J1 T2 W    ADDR0 = 0;
    $ ?, ^5 a8 s, v    TMOD = 0x01;
    ) R" p. c- G4 V/ O    TH0  = 0xB8;2 b3 b; V, R# e) M% w3 U( E
        TL0  = 0x00;. [! ]1 v& g( }- |& }
        TR0  = 1;  
    7 ~$ j( g8 X% W8 Y+ s: h/ P5 \
    / z/ X; d$ S/ f7 }5 q0 v    while (1)
    8 p0 [6 `: ^3 D4 j! F. K. ~    {
    / r: O! j  W- G        if (TF0 == 1)      ' V1 ^, ?3 b3 Q
            {. v5 L, F8 b! r" P5 I2 `( c
                TF0 = 0;    3 ]! L% q! V+ M3 E7 b, o& _
                TH0 = 0xB8;   
    $ I; E( q0 C" X& K' M            TL0 = 0x00;
    7 I5 r+ o7 b( h7 M+ L$ M9 @            cnt++;        
    ' j! h$ e" F3 O2 }            if (cnt >= 50)
    6 V# N. i7 h/ e* H3 x9 ~4 w& Z            {
    # A8 T# o$ P# c, t; p                cnt = 0;          7 J) G$ I3 n9 Q0 A
                    P0 = LedChar[sec];
    4 N% }, U+ W  ~* `; h7 {6 X- H                sec--;            1 }2 i' C1 Z; B5 G# j/ {6 n
                    if (sec < 0)    5 ]* Y6 E( j% i6 p7 q
                    {
    1 M" r. O/ v+ W* M1 U; ?5 W/ a$ e# j4 {" F                    sec = 15;, N4 h1 |- }4 G) D( Z* h* ^1 m
                    }
    ( \4 X' e3 s! ?; J9 g            }
    2 q6 i; e- N4 |$ o& R8 Q: t6 t; D        }5 q+ r. w/ `1 T: t/ `# s
        }  i$ j* Z0 g+ _+ Y* v  J
    }, y6 h; b' z& d  F3 y. Z' q
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2023-2-9 13:11 | 只看该作者
    你不觉得
    2 w, O9 n8 O: ]$ ^$ \4 Nunsigned char sec
    ' z1 l; |/ x7 _8 U" Fif (sec < 0)
    0 g, y( }/ V% H9 y, b" r7 e2 b这两句自相矛盾吗?

    该用户从未签到

    3#
    发表于 2023-2-9 13:19 | 只看该作者
    错误:unsigned char sec = 15;( M& H: @* P$ q/ [/ }
    正确:char sec = 15;
  • TA的每日心情
    慵懒
    2022-1-21 15:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2023-2-9 13:26 | 只看该作者
    sec 永远到不会小于0,由此sec的值不会在0-15循环,而是0-255循环。LedChar[]会溢出错误而中断运行。
  • TA的每日心情
    开心
    2022-1-21 15:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2023-2-9 13:32 | 只看该作者
    sec减到最后sec=0;改成        cnt++;        0 b& t) J$ g# W3 Y3 B! Z) l
                if (cnt >= 50)( z$ G, X6 Y1 g( w: I% Q& _3 [
                {
    ( O* L% Y' @8 j0 A                cnt = 0;         
    % C6 j. P. p0 i7 Q2 ^/ ~, f# ]                P0 = LedChar[sec];
    4 m" _! I: j# Q( z; {( U/ l                sec++;            0 u$ T( e; S& s7 \0 `
                    if (sec == 15)   
    ( h; k% M- J( `. G. M                {0 G9 a! f3 K1 y
                        sec = 0;
    ( |6 t& E2 G2 \8 ~( ]2 ^                }; F/ S5 g+ d* ^$ a1 \" @* M
                }
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-21 11:04 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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