|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Clap3hame3 于 2021-12-15 14:01 编辑
' ?1 X! \* ~3 e* @/ Z& _$ S/ E
( t, B4 [" I$ }#include <reg52.h>& t' I& G( O5 \
1 X k) Q! Z1 C& C$ N
sbit DGT0=P2^3;//数码管控制位1 ?" R n% h" p
sbit DGT1=P2^2;
6 p/ l# c7 d" }- Q% D2 r, g) f" osbit DGT2=P2^1;, Q6 k6 t6 k3 M9 m6 d7 k' {% y
sbit DGT3=P2^0;
6 k8 E8 e! _" F1 [ p
3 o$ l6 w3 w) Yunsigned char code LedChar[]={
" d7 |6 @ W7 }5 D6 A 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};5 M T# C* ?$ F1 s* x. F+ l
unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间+ d: h* I3 A1 ]2 M
unsigned char flagls=0;//工作表示" j( b) {2 T5 J4 m4 b5 y: \
unsigned int cnt=0;//计数器9 B1 Y3 }$ \& _% f; L
unsigned char i=0;//循环变量0 `. _) ? Q& R/ U c
void main()/ q& M' h+ y+ u& M8 @$ e2 V q
{. m3 f4 j0 z9 E6 ]
unsigned int sec=1000;//定义变量,倒计时起始数据6 Y) D, T8 X+ T& v2 R
9 I- U$ x9 \( l2 f+ B; c1 E TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时
' u0 W& D- D: b TH0=0xFC;//定时器初置
# @! a5 r- N1 J( z' F TL0=0x18;
) U! }( x, S0 Z. @0 E1 {6 R8 @! }& H' ? TR0=1;//启动定时计数3 P! A. F* U# K' G0 a
EA=1;//允许中断8 P8 \6 J& Y& ?
ET0=1;//允许定时器0中断# y/ W4 M' W/ _. q% x' L1 B! e2 @: j
while(1)
! l+ M0 M$ @. X) W- @8 M7 ~ {
( I0 Q* q" v+ S6 _. v6 |9 Z LedBuff[0]=LedChar[sec%10];//计数值个位存入# z$ z; @4 c8 S! w2 r
LedBuff[1]=LedChar[sec%100/10];//十位
; w' v1 [9 r- M3 S LedBuff[2]=LedChar[sec%1000/100];//百位9 T/ u. K* E# S+ K" O5 U% Y. H8 |
LedBuff[3]=LedChar[sec/1000];//千位
) a; b1 U; H* l6 Z2 w6 L
6 q1 Y2 A6 Y# z& u: ?5 a+ o$ A if(flagls==1)//判断1秒时间到,工作表示有效
4 Q2 a( A' q# a+ N& `* ?" | {
0 d: ~$ ^& D% A# Z% g flagls=0;//等等下一秒,清零
/ o) n. {! a! t* L$ W sec--;//倒计数
1 O$ V( }, z0 y$ I4 H- u1 W7 F4 L( p
$ ?' ?" |8 T5 s6 B }
2 P4 V3 [' Y7 }. e }. k) Z; B/ `8 j# e' ]' ]9 Y7 R4 y
$ y, c. `* D5 T% Z" q; E- @: T+ z; ~4 ] c- D
}
" `3 t' V6 R8 f7 S& v* n/ tvoid InterruptTime0() interrupt 1//定时中断! e/ d7 Z3 r4 r4 ?+ R7 J
{
! l* v- ]( F2 a9 ^# E* t, l' u TH0=0xFC;//重赋初始值2 Y, K4 w* P1 C/ U6 V$ U% ^' d
TL0=0x18;5 P2 X3 r6 @# j9 |
cnt++;//计数器加1
3 k) g; e3 S7 L4 U+ C' n if (cnt>=200)//中断1000次得1秒,工作表示
" u/ |1 B# |/ a, N, Q! R! ]* q {4 n% \- ?' x' ]# X2 r* @# ?+ M7 f4 {
cnt=0;//准备下一秒记时
) S8 l+ v* n# n/ W `) f flagls=1;//1秒时间到9 y$ e" J; X$ k4 [% @* @8 \% I+ D' c
# _2 U5 G( v7 q& ^( ^2 ~: {3 d
}8 Y) K+ n6 z( o2 v! {5 X
P0=0xFF;//熄灭,P0高电平, n( _6 F6 {# ]( l& Q
switch (i)
6 h; S1 u" Y! g1 U {
- z4 C) ?, V6 y$ t+ F& [ case 0 GT3=0;DGT2=0;DGT1=0;DGT0=1;i++ 0=LedBuff[0];break;//个位: \2 Y! S$ y' E0 V; ]' q6 X
case 1 GT3=0;DGT2=0;DGT1=1;DGT0=0;i++ 0=LedBuff[1];break;//十位, T: c5 G, f4 H! ?6 n
case 2 GT3=0;DGT2=1;DGT1=0;DGT0=0;i++ 0=LedBuff[2];break;//百位
2 V; W5 a3 M4 g; `9 E; d. H4 i- v: k case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位 x3 H' d' ~3 E/ U% z
}; P+ h: F X/ q3 Y9 g% d
}
# [/ v$ F/ f, ^, [! n x这怎么让蜂鸣器响啊
; ^) p5 H& G. p& n& u4 S8 R5 j$ G( G6 N$ }5 p6 L& q5 X9 g- s
|
|