|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用51做一个0.00-99.9S的秒表+ q% s# W) _7 W( |3 ^: M
6 H- v% R9 j+ I8 E5 `$ \. ?+ w I6 p. n$ b0 ?
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
1 y7 d4 L1 \( U# Htypedef unsigned int uint; //对数据类型进行声明定义
( u3 _; J! a, ]0 w' Otypedef unsigned char uchar;
$ d" T+ \) w. O# q' C' \9 E3 ^4 M
uchar datas[3]={0,0,0};
0 F" h1 e1 R4 W& u. m0 Tuchar code smgduan[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//显示0~F的值
3 y* V: R$ b9 B* x/ {# X
T9 o0 ~5 k4 W; w/ p+ ~3 ?( h4 o) J% }9 d; V' c& z' q
uint sec = 0; 9 \: k, [6 X7 S$ l7 w
uchar i = 0;
8 C: n# D4 ~% x* c o. wuint count = 0;
% O+ ]* Y, |2 @7 ~# @- \bit flag = 0;/ f* G+ S& K, o
% S! w; j# w' w1 L2 I& C+ n+ [
; c% \9 i$ A* }7 w- n) a% T4 `% p
void Timer0Init()
0 A4 }; p' z1 x- W{
. X9 E3 \( U% M* Z2 D- ]+ I( w2 j TMOD=0x01;//选择为定时器0 模式1,工作方式1,仅用TR0打开启动。, d7 K, h3 k1 B4 M' n
TH0=(-2500)>>8; //给定时器赋初值,定时1ms
0 c( {' H! g9 V9 T: f X! T TL0=(-2500)&0x00ff; ; p* T$ G2 L' m9 M' Z4 ~
ET0=1;//打开定时器0中断允许' X; v$ r1 v% F' t) e+ \
EA=1;//打开总中断% ]8 C7 a5 z N7 n8 ~
TR0=1;//打开定时器 . `6 f4 J/ k/ D
}) [7 C% Q% E1 l1 w: U* g O
void jisuan()6 A/ n4 F& ~1 g6 |0 B
{
" C4 S+ W3 @, D$ y4 @4 s9 C datas[0] = sec%10;% a9 t. G! b0 F5 S& ~
datas[1] = sec/10%10;
3 R: ^ z3 Y! F. F$ Z datas[2] = sec/100%10;
6 C3 f- o$ Y# ^9 g}
1 I. u9 ?" t8 R5 vvoid main()
$ \ H; {( R" l5 v# i" J( {# X( @+ q{ 3 D8 Y R. n( ~, T3 ^
Timer0Init(); //定时器0初始化; D4 G0 K' x" q. K
while(1)2 `$ ^! s7 {" h: S6 a* u
{
0 P2 a" H3 B! K$ L" I if(flag)
& s8 a- \: {* y$ T4 b {7 ^6 d7 c4 D% n; ^* A) G. X! q
sec ++;
* K8 z# T1 c+ t4 m* G' y$ r: S jisuan();
" [. ^/ N( q4 y flag = 0;
0 e7 d: z% Y* R2 Y# A$ r if(sec == 999)% S1 I, n0 b; M" u" O9 t! {
{: z" d! ^: `5 c# \0 u) T9 |* a8 g: E
sec = 0;, ]# z3 M, U; k% e
}
* J4 v2 y* y4 S5 y1 I }! i7 [7 ]2 X. N0 O0 Y- A4 u
}
; H4 e- L) E X$ R- a}
: {# B4 a5 r: p o1 j* p( Q& { rvoid Timer0() interrupt 12 l. }! \" O/ r* d& e
{
0 u* B! b ]4 Q9 Z# G TH0=(-2500)>>8; //给定时器赋初值,定时2.5ms. I1 L6 V, B- }+ |( C* V9 Z
TL0=(-2500)&0x00ff;
# ~9 L5 h7 [/ A) O& T7 @6 O* E P0 = 0x00;
# o. o$ p* o2 l( l w P2 = i <<2;
( V0 s% A7 g2 h2 Z& W% Q if(i == 1)
. |# `& N5 r9 _. B P0 = smgduan[datas]|0x80;" P5 E$ ?. s, P& o- g& m
else
' g+ y- t) Z z- u, r' W9 ] P0 = smgduan[datas];7 K& {" m, {* p' l7 @0 w9 H2 G
i ++;
! m x3 p9 k6 U0 s if(i == 3)
! Y$ |; |# I4 w" W* R i = 0;
- m8 h& K/ }8 V: N& _ count ++;
. p, `0 R, r; |. n0 B. S4 N if(count == 40)//0.1S
- h, C; Q$ Q$ {. M7 p ~ {
8 m5 f% ~( {' J$ [$ M" ~' X count = 0;
, [9 Y* S1 g% d+ o- x, k& c' \ flag = 1;4 y8 _ w. K, H) ?% M( t; U
}
$ U# \0 d# ^, |6 W% ]& ~9 T& {}8 U2 b! t' n' X2 _( l+ d
|
|