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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    #include <reg52.h>2 Q0 G" J) R3 J2 V$ W& @9 S) ]

    ! o+ W* f- i8 d9 q' M9 {# i. C! p6 ysbit ADDR0 = P1^0;
    . n0 i1 [( w8 u, o: Xsbit ADDR1 = P1^1;; O+ V0 o! U$ A3 n. [4 ?
    sbit ADDR2 = P1^2;. }: ^* ]* G) M& V
    sbit ADDR3 = P1^3;
    . G/ I9 Z7 _7 E/ ]4 v+ Xsbit ENLED = P1^4;7 u& W4 P+ K: `$ o, \: R

    2 }6 e& O; \& h$ U. ^4 A- U& tunsigned char code LedChar[] = {8 F2 f  I2 G( S$ L
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    " D; n" i7 t$ \& C    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
    : i5 W1 R; R. B8 N& j( F};+ a3 ?* u% l/ n, M4 ]

    8 c' \% p, z* W, a9 b& i7 ?! zvoid main()
    - J* M( g# y1 C4 W" _4 c; D. j{
    $ v  R8 U" g0 L# Z    unsigned char cnt = 0;' e/ h7 _5 n& A6 e7 S8 G5 ^
        unsigned char sec = 15;
    # L, q( ]! o7 E7 k, R3 y$ ^" _- z* z4 S' C. T) w
        ENLED = 0;  
    : `& q" [2 r& M8 X' \    ADDR3 = 1;+ ~- K+ W( h/ ?9 A: w$ X- I
        ADDR2 = 0;
    1 v0 J# H3 c) a0 Q6 ?( y    ADDR1 = 0;, V/ u- r: a1 v% q- k
        ADDR0 = 0;
    ! C, s, _* {$ _" ]0 M, f    TMOD = 0x01;+ ?- I( s. I* R6 g; j) ?& x6 C
        TH0  = 0xB8;
    % _$ p5 A5 O3 A9 p  X7 O# v5 }" e    TL0  = 0x00;
    - N* q  i0 m& e. P5 c    TR0  = 1;  
    5 b& I& u# H. A' a% i& ~# G; T$ P. U3 ^( I
        while (1)
    0 v- ^  Y; D5 N, |9 ]3 |( W  j    {
    & \$ ]4 P2 D1 \# f2 D2 Y& K        if (TF0 == 1)      " _3 b, v) ~1 A4 t: o! [$ Z( e& ^' W
            {
    / H  J$ t5 h" m& F; u            TF0 = 0;   
    ) I: _- L9 i  d# E5 {3 ~8 ?' S            TH0 = 0xB8;    4 ]# u8 d7 p( }6 P1 h( o
                TL0 = 0x00;
    % [) @  @- ~8 t7 B# p            cnt++;        
    ( V/ ]% U% f5 d6 B9 f4 t            if (cnt >= 50)
    3 x- s! _7 C8 y& x! g' D* X+ A            {
    . G8 U# Q. h! H$ n6 R+ |/ W                cnt = 0;         
    9 V# J3 a# M% h                P0 = LedChar[sec];
    . d/ _' c  l& I+ b# D3 L9 l                sec--;            , @4 f7 N, E, i0 J- p2 F8 @
                    if (sec < 0)    8 E- U! o( n* B1 i# d# Q/ ?
                    {
    5 G) N  N* p1 U# ?6 Y, u- V$ z                    sec = 15;
    2 [4 H5 N* r4 `, b7 M  F7 W, q                }- [/ E9 i: K) P% e/ z
                }
    & Y, ]* ^* N( `* K$ x) y        }, Y/ G6 a' M" ~4 D
        }
    ! U% _& I6 [  s1 m- N}5 q( k; u. f/ Y, c( N0 B
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2023-2-9 13:11 | 只看该作者
    你不觉得
    + R' B7 K/ V8 y( P3 Ounsigned char sec
    9 X7 \+ T7 S# d  iif (sec < 0)" E4 m8 T4 M: Y, Z% g1 d
    这两句自相矛盾吗?

    该用户从未签到

    3#
    发表于 2023-2-9 13:19 | 只看该作者
    错误:unsigned char sec = 15;
    9 Q7 U+ F* A2 T7 z) Q6 A9 M* h正确: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++;        " z( T  W& d1 Q  q6 ~7 v. t. a
                if (cnt >= 50)
    2 G  V4 s) W+ d            {
    8 G* G7 B; u. c0 c, I2 v                cnt = 0;         ) z1 v( u/ A. B9 v+ u1 j
                    P0 = LedChar[sec];
    . g+ W. j  U9 _8 Z                sec++;            
    4 c# G% }( X+ \1 r                if (sec == 15)     C7 P- {) e3 d6 }2 Q; c2 ?- F
                    {1 L: ~$ p: ~; E
                        sec = 0;
    ) q9 f3 L# y+ m6 T                }$ O6 S7 Z% H, B
                }
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-5 12:34 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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