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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用51做一个0.00-99.9S的秒表
7 A. U, \& ]* A* P7 s; \' l4 w, e6 E1 m8 s, d6 D
7 f# G) g0 C# b
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
! S7 ^& W# g5 J0 X) atypedef unsigned int uint;          //对数据类型进行声明定义. \" v) E, r& d9 ~& ?5 }
typedef unsigned char uchar;3 n5 f* ]+ D, f  P- E
5 R/ W/ O8 t( n
uchar datas[3]={0,0,0}; 4 I: U: @# L1 D8 j
uchar code smgduan[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//显示0~F的值
" w9 b9 q: U! o9 T  Q" o' J% B0 i1 z7 j5 A
+ u( H. ]9 [1 C! i4 f
uint sec = 0;                        3 p2 r9 H: N+ n4 `% O
uchar i = 0;
: N5 X, }4 v, w- a, h' v/ buint count = 0;  [- n1 |- G/ N! J+ r
bit flag = 0;
" A) ^$ W4 l% b) b8 V* X/ B: w+ F$ x: @0 w

3 }8 e) F  A* @void Timer0Init()
4 o4 |; L& w) y{3 y5 v1 L9 r/ c2 q" \' }* C
        TMOD=0x01;//选择为定时器0 模式1,工作方式1,仅用TR0打开启动。
' c2 B% C3 X- h) v2 {# `% M        TH0=(-2500)>>8;        //给定时器赋初值,定时1ms
* u# L8 l' V" u& Q4 x1 d2 ^        TL0=(-2500)&0x00ff;        
) l1 u  w; ]; i+ r; d        ET0=1;//打开定时器0中断允许
" `5 r9 a. ^) A- `        EA=1;//打开总中断' \" q; s% Y" L6 ]9 m
        TR0=1;//打开定时器                        ( b" f) ?- ?6 Y9 t( @" l% [+ m
}
1 u) e) z: u6 w4 Qvoid jisuan()7 m" I( g" \. d& e2 m! c& _6 Y' c
{
+ w% F% V: Q8 X3 c& ^   datas[0] = sec%10;) B/ t& P9 A2 ?
   datas[1] = sec/10%10;
) @& Y4 H& Y8 g/ V) a- _' H9 d   datas[2] = sec/100%10;; y; y- j) M% O: v8 l& X  ^4 c% c
}/ u0 Z  A4 X1 Q, T& l
void main()! @6 T, y$ E7 }" |
{        ; A4 u( H- G9 ?( [- u1 M' @1 }7 r
        Timer0Init(); //定时器0初始化
" N2 F- O; H* ^7 l/ H        while(1)
) p$ u( B( |3 y: ?# H7 Y7 E$ c1 N        {' U% e: _: @  I0 s& J
                if(flag)- T; E! o2 W! X  u6 v" H5 }0 K
                {# w$ ~# I  I2 C9 r2 a# _
                    sec ++;$ F9 g9 m  g9 e% k% j6 d" n" ~
            jisuan();
' u- O7 P2 W7 p4 A! `                    flag = 0;" u' E- }* A. Z
                    if(sec == 999)
9 y' x" o' ^' V# g4 w                   {$ \! e2 T, S% x( M. E3 ^: M
                         sec = 0;3 L) t3 x9 k2 I' Y2 F2 e7 o
                   }4 N+ v% h/ H. [* z6 H9 O
                }9 W1 w$ I' u$ H/ C" N" A  @6 U+ ^
        }               
) S0 t7 B5 K6 e1 K: m}& x3 z  K( L0 ^: F, M9 T
void Timer0() interrupt 1
6 l# `6 T  ?$ \{        % b" N) {; b2 {1 Z2 A
    TH0=(-2500)>>8;        //给定时器赋初值,定时2.5ms) t4 g' t2 y& ]$ K
        TL0=(-2500)&0x00ff;        7 n2 q0 c5 u" b* h, S5 x
        P0 = 0x00;
- k4 o5 A  \. r: b  G) I* R        P2 = i <<2;9 O$ A. {  p4 Z, a/ C8 p4 p
    if(i == 1)         6 _( t! L% T7 E4 _
           P0 = smgduan[datas]|0x80;
, F) }; z$ j2 F' B. ]8 h    else
3 y' t9 z- U. p% L       P0 = smgduan[datas];
; Y  y; M; g) G9 F( U% g! k! y        i ++;
* @6 s& s1 M- h1 ?' I5 Q        if(i == 3)
$ r3 W. P' m8 v( R* S9 T          i = 0;
; k. Q6 f2 M6 ^5 P; i        count ++;
: u  H$ r( N8 G& R" E        if(count == 40)//0.1S
5 P) x" l+ \1 w        {9 I. A) X% Q0 L% \2 {
            count = 0;) {# M" O( T/ w$ d
            flag = 1;
6 F0 J) ?+ J: V; k        }
  k# E, `1 }$ B5 C& D( B3 l}
8 F/ r+ c2 h$ H" E8 ^0 @

该用户从未签到

2#
发表于 2019-1-11 14:04 | 只看该作者
不错,谢谢分享
  • TA的每日心情
    擦汗
    2025-10-20 15:44
  • 签到天数: 62 天

    [LV.6]常住居民II

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 22:10 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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