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

用51做一个0.00-99.9S的秒表

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用51做一个0.00-99.9S的秒表
% C0 l+ a9 a& y3 H9 _& c  Y5 S- I4 n1 n& g
6 y% b7 F4 X) t3 g, Z
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器9 b& q4 [2 ~/ O' x7 _0 N" \* p+ h
typedef unsigned int uint;          //对数据类型进行声明定义
! _0 Q# ]- \* D' l3 j/ ptypedef unsigned char uchar;- j, ^" W) G1 Z1 u/ O

" c2 O3 P- d+ }# ]uchar datas[3]={0,0,0}; # ?4 W4 r' O, @. ]+ C! n
uchar code smgduan[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//显示0~F的值
" O3 G2 x* k2 u# X* P2 Y4 L0 \8 [# J
" E  @+ D: O' |/ h3 z$ [8 R! j' E8 \
5 c$ k, Q. l& X) ~8 Y3 Xuint sec = 0;                        
( }  Z& ?' _/ a/ f" ?9 b) e) Vuchar i = 0;
- g/ O5 ~' x$ G/ t2 N8 u' s7 ?uint count = 0;
! [: T/ _- L7 t# A* D$ Rbit flag = 0;% ^% x+ F, H2 l9 C+ o; }9 @

3 m2 m: a; n; L* O7 U) |* b' |
- m7 G( _. Y9 `6 g  u/ ?* zvoid Timer0Init()
0 ?. B: L- G6 @- Q! d# s/ H{
* _8 L9 U$ _9 c. X- X8 o& k        TMOD=0x01;//选择为定时器0 模式1,工作方式1,仅用TR0打开启动。
" p5 g5 P  A+ H* I5 B% J        TH0=(-2500)>>8;        //给定时器赋初值,定时1ms
9 W$ t: R" g# L/ f* m$ ?, s0 T        TL0=(-2500)&0x00ff;        
7 _/ J9 d  {' K$ V9 C, p7 Q        ET0=1;//打开定时器0中断允许9 U. L  m3 D6 Z. V9 \
        EA=1;//打开总中断" T8 I& w) D- x& M& c% X' ]
        TR0=1;//打开定时器                        
9 n- W: \) n4 J0 n}
4 L! D( e& i5 ]4 Ivoid jisuan()
9 |# J9 P1 p/ X& L/ H{
) E; t5 a0 q7 F; w! H, S3 d   datas[0] = sec%10;
9 V. }$ I* O/ t* i$ ?4 ~4 R   datas[1] = sec/10%10;
4 V9 W8 ]0 G( P) V1 Y% G' p2 y   datas[2] = sec/100%10;
# w6 g+ x1 Y$ m3 z2 ^& r) X1 S- Z}7 h! t" K) w. [5 Q. [. j. n! L
void main(), j  d: M; c$ n: H
{        
# b  }5 b! G6 }  w; {& C        Timer0Init(); //定时器0初始化
5 m, o# }  }( e8 a" X        while(1)1 h6 e' B) x1 H, J
        {9 h  [+ W0 ~0 }, R- O" i
                if(flag)
) J/ _0 F$ D, |+ ~2 S$ a8 j                {. Y" y8 W  _1 y0 E7 j5 L% ]3 C
                    sec ++;
  H  h* E) m+ x1 _$ t$ [4 o            jisuan();
$ [$ z& m+ O3 z! x9 X                    flag = 0;: `& @2 m% N- C" b
                    if(sec == 999)
$ h* X0 m) K' B/ {                   {
* H4 R* x# t9 M# C6 R                         sec = 0;
0 }$ x( m; L: S4 n: x3 Q8 e( |6 [' @( O                   }" j. a. |8 E4 e6 x9 N
                }/ q0 ^% I, u8 i6 a" D/ o
        }                : Z7 u1 [3 O2 x0 p; i5 @
}
8 g* J. P) ~* \! {. L4 svoid Timer0() interrupt 1
* E! I5 s. C4 I2 |& S. i{        
$ F+ O) R. w, J& m/ T; V    TH0=(-2500)>>8;        //给定时器赋初值,定时2.5ms
4 R" O7 a/ l+ U$ Q& c# X9 N        TL0=(-2500)&0x00ff;        
7 \. r: [3 {  x- \5 N. S        P0 = 0x00;! o0 f2 t7 `  }7 {( \
        P2 = i <<2;
9 K3 B1 R4 S8 ?' t( V+ ^    if(i == 1)         
% X) X1 k" K) O% g4 n& r           P0 = smgduan[datas]|0x80;- H+ i: N" Y' I. J
    else, W& M2 c9 H3 w3 t
       P0 = smgduan[datas];
$ j; h# T( W$ a9 ^; W2 S        i ++;
: o3 P, K: D" ~& I2 W) [2 q/ o        if(i == 3)
" L# M9 C0 E; ]          i = 0;! o9 O2 {$ x3 f; Q% Z0 ]9 g
        count ++;
9 O- X; U9 _  t* E        if(count == 40)//0.1S
' r" z; w, o4 ^. I+ w$ r; a. E        {
! K9 u0 ^3 h' ]" R            count = 0;; ]' x" Z0 P% e* x) y5 h0 B
            flag = 1;
" |4 |/ l7 z2 k8 H        }* P/ p; a' e$ c, a. q  e6 V
}
, A- m2 U' r) j

该用户从未签到

2#
发表于 2019-1-11 14:04 | 只看该作者
不错,谢谢分享
  • TA的每日心情
    郁闷
    2025-5-27 15:47
  • 签到天数: 47 天

    [LV.5]常住居民I

    4#
    发表于 2024-8-10 16:47 | 只看该作者
    一点下载都要搞个威望值,一点都不地到
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-15 13:14 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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