|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include <reg52.h>
/ C/ O, k4 W% b2 B! g0 `/ M* i- F
sbit DGT0=P2^3;//数码管控制位
% Y2 l! [* P4 Z8 U7 k$ ^- U0 Xsbit DGT1=P2^2;/ a) h& a; |1 }' U, M1 m
sbit DGT2=P2^1;
+ J( Y2 ]4 A7 H* U' J5 M9 \- U5 ksbit DGT3=P2^0;
3 \& O4 M" Y9 D1 ^sbit BEEP=P2^5;
Y; r+ t" e9 L. i/ F3 P8 B
- W! S6 I/ E) m8 T
( G1 }' n- h+ cunsigned char code LedChar[]={
0 m& e4 u9 i$ F. t7 w 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
4 J! ~" _) N% @' `& V0 s _unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间
+ X p4 M6 m( [- Bunsigned char flagls=0;//工作表示
( F M( m0 \& J: Z8 nunsigned int cnt=0;//计数器4 [0 g8 r0 G0 r% E* T+ B' O& Z
unsigned char i=0;//循环变量
5 h! F3 K' k, ]1 vvoid main()
' Z0 ^1 G3 p3 X6 ~9 X{
" p& K' W% D4 p2 R unsigned int sec=1000;//定义变量,倒计时起始数据
D% S* P- G7 Q" @ 7 R2 ~4 @8 P* |$ p% I. c5 B* b4 g
TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时# ? `: ^' e4 u" m0 I; j
TH0=0xFC;//定时器初置" M, W2 _ P5 F
TL0=0x18;
% g8 j! y+ t9 z4 o0 y3 v. ~) W TR0=1;//启动定时计数
2 d/ s g2 |5 ]/ _% p. \8 W- T6 C EA=1;//允许中断
! ]( @( o5 @1 d" m/ |: g ET0=1;//允许定时器0中断5 D6 ^. j- Z) [8 N6 j0 ~ _
while(1)
% N! W6 M& t: Y% a3 w, n/ x {
! R" g7 A5 ]# r) |4 v% f LedBuff[0]=LedChar[sec%10];//计数值个位存入0 S. @1 u8 C* C: G7 j! S" J
LedBuff[1]=LedChar[sec%100/10];//十位5 }9 R z' P) b; D3 R
LedBuff[2]=LedChar[sec%1000/100];//百位* P; Z ]. i& K0 n. k0 }# L5 M
LedBuff[3]=LedChar[sec/1000];//千位" _% Q+ D- K- T2 ]6 r5 O
2 y$ `9 X3 [6 \# N/ U; _% T/ h' w5 Q. R
if(flagls==1)//判断1秒时间到,工作表示有效
5 _& x- d; ~. W+ ]! w0 @1 O {
. m: T% a3 `- v( J flagls=0;//等等下一秒,清零- s) O% o2 }8 l0 C. O2 g. ], S
sec--;
1 n% x' G M; ~, |' f9 ` _1 ?1 c* _/ z / W4 H) {$ ]% f" a9 E' O
* x/ Q7 C" S3 i0 a
}
% }& k: M# Q& b- ^ }
" `8 o: b) @! D# r- e+ Q
- |* l+ n/ v) ~$ E" r
- Q0 x( V4 k3 b; w}' k4 N4 x* t6 I: p* I6 \
void InterruptTime0() interrupt 1//定时中断) s/ @* ^" ]: g
{7 y5 S+ H: _ {, Y& r# R+ d
TH0=0xFC;//重赋初始值
+ V, q$ O! M2 i# L9 r, O TL0=0x18;( T8 G- Q7 v3 j! `% E, F
cnt++;//计数器加1' p; q* M; K0 G2 o: F
if (cnt>=200)//时间 w/ L- `7 J7 c6 R; M
{. ~' f8 q: _( s
cnt=0;//准备下一秒记时! @# h! L2 O4 I& L2 m8 `# ?
flagls=1;//1秒时间到
+ v9 j: [5 [$ j + W; n: J$ ]: p. L% v$ l
}9 k1 @1 z$ n' d# `1 X
P0=0xFF;//熄灭,P0高电平
7 }6 H8 }, L9 o
6 Q. X9 g( q& F3 f7 ~ switch (i)4 M7 I' N3 d5 A; v' H1 V1 E; ~
{
: t/ M1 j6 w% v case 0 GT3=0;DGT2=0;DGT1=0;DGT0=1;i++ 0=LedBuff[0];break;//个位$ N* |' K/ _! {! ]
case 1 GT3=0;DGT2=0;DGT1=1;DGT0=0;i++ 0=LedBuff[1];break;//十位1 ?. T2 ~9 m, t" B& w
case 2 GT3=0;DGT2=1;DGT1=0;DGT0=0;i++ 0=LedBuff[2];break;//百位/ O, d; t, K3 G' D3 }
case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位; F* u0 N" f" D. ?: p
}( w5 n/ ]& h' W2 J0 y
}
8 k d! ~+ ]' \7 ?1 Z6 V0 [3 C2 p! k- p
6 R/ e- }/ l4 u
: ^+ T/ J! O. p/ X
" M5 |7 R. ?3 _/ c& B8 E' c! u! R" W0 f- Q
如何把修改程序加进去?
: }1 p4 ^0 ]9 M2 R q; a8 G! W- B
|
|