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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    #include <reg52.h>( F% k4 ^9 M& m

    " J- N  Q* [( W0 O  a8 ssbit ADDR0 = P1^0;
    ! M: m! g, q- fsbit ADDR1 = P1^1;
    ( s! c4 @4 K& c) z" Lsbit ADDR2 = P1^2;
    % `; f) l* M! H  xsbit ADDR3 = P1^3;
    - m5 I+ p  h5 X( y( D: s+ Usbit ENLED = P1^4;4 w0 R3 O' {8 z: W& J: X  C+ i0 N" y

    - G. ~$ `- J4 S# [9 @( v7 [unsigned char code LedChar[] = {  r/ t  D2 @* \  E; D2 @
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    ( j9 }* t# B2 [) d    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E* Z$ H: J3 s8 s0 W+ ]# ~& U' \
    };0 ]1 V& d7 ~5 {1 H% }
    - r; G1 u- t6 ~/ `
    void main()
    9 f: C8 q* g5 l{
    ! J" J0 ~" s  E. d    unsigned char cnt = 0;
    ! m! o0 H% D& P. j3 f6 U+ [    unsigned char sec = 15;
    - e) {) N& x* p( @' }% R* q* r/ O! }5 d9 a) f* ?/ ]
        ENLED = 0;  
    # N$ h% h/ w: x$ g3 y2 b0 h  A  O    ADDR3 = 1;
    2 c# ^0 z' r5 Q: L/ S    ADDR2 = 0;1 k' L0 @* I* z4 G( I7 q7 A  D
        ADDR1 = 0;
    4 i1 L1 D) N) Z! L- g    ADDR0 = 0;8 {1 B7 i1 ~. f7 j* y( ~+ P
        TMOD = 0x01;
    3 }5 ^* i- Q6 f1 Q    TH0  = 0xB8;
    * s1 Z- P  {) S2 u/ i    TL0  = 0x00;
    1 b/ i% @" e9 M1 X1 D    TR0  = 1;  
    1 D  U" [( f8 t( T/ ?6 y, V2 _& `0 K/ ?% o+ ^2 ?# i
        while (1), i/ L  p/ x% ?, x. Q( M
        {
    ( }" _/ |  c3 G2 T0 e0 G- J        if (TF0 == 1)      
    / h. ?6 c6 g/ E& |0 A        {
    ( w; o7 c; I# c; k            TF0 = 0;    ; b0 T$ [; f' \
                TH0 = 0xB8;    9 ]  o) I+ G) D- Z. v. v( x* d, A
                TL0 = 0x00;% C% Y3 x, B+ z
                cnt++;        ! Q+ U+ m8 G0 B& @1 W' d! m) J
                if (cnt >= 50); Q2 H) H' Z. c% }: F% e* T
                {
    4 H" Q$ l2 U1 c! K, i' D1 {/ _                cnt = 0;         
    1 s2 E9 g' B: ~7 A1 _; G                P0 = LedChar[sec];$ b! D( ^5 C! y9 X" _9 w
                    sec--;            
    # s8 p7 B( H3 ]% M$ b$ |) t2 v                if (sec < 0)    2 Y% g5 r; }/ d, o) ~  Z
                    {& W" X: {9 b- o5 x& f+ ]
                        sec = 15;
    + ]6 [5 z  s- U0 I) J( U  y                }. ?# p. r& E9 g1 L- i
                }
    # y' E1 I; v7 X% [6 j6 w! x+ V5 v        }) n% i( w0 \- \4 [7 d  j( P
        }0 V* E  ?; |/ B8 c- _
    }- G; q5 U- \3 x# C; c7 S8 i
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2023-2-9 13:11 | 只看该作者
    你不觉得
    5 v/ ~: e$ z: b2 r9 m6 e8 Runsigned char sec
    3 o- V, @6 B5 y; M/ a0 }if (sec < 0)
    / q/ I. B: T- p! q2 D1 k这两句自相矛盾吗?

    该用户从未签到

    3#
    发表于 2023-2-9 13:19 | 只看该作者
    错误:unsigned char sec = 15;) j0 p) [9 M4 ]) t
    正确: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 Z) S& ^) c$ \: s# V9 P            if (cnt >= 50)- L8 {2 r) D5 l: ]! a  _0 l* {
                {
    9 b( ?/ O3 z+ u; o$ ~% u, X+ I                cnt = 0;         
    1 c7 k7 ]% s2 T                P0 = LedChar[sec];
    9 \2 q  G1 g) s$ T# I* Y                sec++;            . R  v# s6 W" ]* ], c" _  U# v- j
                    if (sec == 15)   2 [% Q6 Q( G5 m4 S8 r
                    {) j  K& X2 P, c) h) j
                        sec = 0;
    9 l/ O4 ^; X' H7 P, M, E- _& ]                }0 G& J( O/ n, q8 F7 w% g9 b
                }
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-29 13:52 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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