|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <reg52.h>
a6 M1 a% d0 f5 c) }- V& n$ D0 u& ~, |$ d* R$ ^
sbit DGT0=P2^3;//数码管控制位
% F* P. }7 Z( }% msbit DGT1=P2^2;9 V; B8 @( |. O2 t2 r- s
sbit DGT2=P2^1;
% w% D/ u7 ^9 i' @# [sbit DGT3=P2^0; i: Q4 Y& s" g; l4 Z6 I
sbit BEEP=P2^5;
0 ^) {8 {; K6 Z0 d1 ^6 u& P" b- _+ X/ N% k; b! w# H/ b
" G% x$ N! n/ s! ?. u) f
unsigned char code LedChar[]={
5 ~3 l3 K, u2 X' |# o. t1 o& q 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};% @# r6 b0 @; \( x5 N( t3 }6 @
unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间
- h9 v ^- ~$ z _0 f& M J/ H# q1 U) Sunsigned char flagls=0;//工作表示
& j9 ~+ S9 `" V- _unsigned int cnt=0;//计数器8 `1 K: b( x t1 g. q# h. t
unsigned char i=0;//循环变量
7 U2 G( R- j+ z* Yvoid main()
" q* Q; N# B, d9 A7 L{
/ R5 k) ~$ @0 ?, U0 U unsigned int sec=1000;//定义变量,倒计时起始数据% B2 b9 d+ X1 D6 O
3 @$ J, @ y# P8 j& B, i
TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时+ f0 X7 r+ [1 }# v' H4 k
TH0=0xFC;//定时器初置
# G( P5 ]: n# b0 [1 e& n% D) S- I TL0=0x18;
# V; S: Z4 k. p p TR0=1;//启动定时计数
' e" i/ F7 K+ y3 ?& {! Y EA=1;//允许中断6 N3 n, |! S0 c8 l$ t r
ET0=1;//允许定时器0中断2 K' U$ t: u0 ]9 R6 [" C
while(1)
7 R8 O: Y" u& n' _+ {( y8 H6 J {
. a$ _: s v; d% l LedBuff[0]=LedChar[sec%10];//计数值个位存入$ O i0 u. Q/ D, \* B; {
LedBuff[1]=LedChar[sec%100/10];//十位) _) E4 P$ U( Z. f" o! L1 L$ B
LedBuff[2]=LedChar[sec%1000/100];//百位1 X1 C1 H9 U9 C3 u
LedBuff[3]=LedChar[sec/1000];//千位
/ |8 S* t1 h- ~7 P' G
. S& Y) t/ \" N" N! j* k J7 N5 y if(flagls==1)//判断1秒时间到,工作表示有效
. C& q( d: J) Z8 Q8 i1 s: c {$ K: u, \) x" W9 D/ p1 n' \
flagls=0;//等等下一秒,清零1 d6 K0 U, K4 S6 y4 `, x
sec--;4 |' x/ r- }' ?, v
+ t" h- C5 d: }! }' J
3 J5 H6 H7 [4 _6 n V }
1 {' f( B% }! @7 P/ i }
2 Q5 C" O6 j7 g: g1 q" f; X 5 ^9 g8 n; P" X' p1 e
% J) J' H" ^0 x( I" C6 ]' z} ~; R9 `: @3 N& C
void InterruptTime0() interrupt 1//定时中断$ ?! r6 Q$ v3 X' Q
{
( `& e- Q! T" ^8 u' k- d7 s" I TH0=0xFC;//重赋初始值# G( o" i/ L$ K$ O6 j2 H3 H4 Q& P
TL0=0x18;/ e1 f1 {8 J" k' d+ v5 U. M4 b+ e: B" ~
cnt++;//计数器加1
0 t- ~ p; h/ C, ]4 d7 N' t- c if (cnt>=200)//时间
1 v0 i6 {" m8 r {
: ~# h! t5 ~6 N7 i0 d) C cnt=0;//准备下一秒记时
e. K/ w/ c% y$ `- q; W) ` flagls=1;//1秒时间到
$ @0 m2 \' w" B1 l% H) a$ |
9 I: X" v( H! P* ~$ _6 ^) Y }
; a2 \- E# w+ W) f& r& e+ v P0=0xFF;//熄灭,P0高电平! _" U# Z* ^1 Q$ i4 s% l0 v* Q
0 A" W ]# q/ {# b7 n switch (i)/ t) R3 z. |! {* T2 L
{: m; x/ v0 y A1 y% Z+ u3 {
case 0 GT3=0;DGT2=0;DGT1=0;DGT0=1;i++ 0=LedBuff[0];break;//个位' V) g' _. U8 p! w% b
case 1 GT3=0;DGT2=0;DGT1=1;DGT0=0;i++ 0=LedBuff[1];break;//十位
+ W, n4 s% k) P; g* d case 2 GT3=0;DGT2=1;DGT1=0;DGT0=0;i++ 0=LedBuff[2];break;//百位/ M- I0 w- l& R' b6 J. T+ k! h" K5 S
case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位& Z; D: e& I0 c6 G3 Q0 c+ o
}# ^7 w9 ]& w1 O H. M+ e3 H7 o
}5 @4 u) P$ Q: ~, m. k8 w
0 H! Y) J. a( }) O
7 U, Y6 {7 Q P7 D I
# a( o% ?: ^. C; H% a( y
4 M3 c! X; M& R$ E; ^% ?' a# H+ G* B+ o9 t( b; l0 P
如何把修改程序加进去?
' `/ b) Q8 c. P0 ]; e
! y: p1 I6 L& R5 h |
|