|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Clap3hame3 于 2021-12-15 14:01 编辑
2 a0 f( `- [- C% u) A. W: e/ |& b- m3 `8 V) C
#include <reg52.h>, g* L K) X# K6 H# t
$ }: K- X5 L ~ L' C4 ^- x
sbit DGT0=P2^3;//数码管控制位
9 H0 n3 E1 A: E; L) B+ [! nsbit DGT1=P2^2;
) X3 m7 V( U) p2 \" Nsbit DGT2=P2^1;" ?* N% P7 r* ?( |
sbit DGT3=P2^0;5 z4 C4 z: u w
; Z% c% x* ?3 A( o
unsigned char code LedChar[]={3 b1 A. n5 D1 H2 z* m
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
n& y9 x# Z( B1 Sunsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间
^8 I0 O, A: ~( U4 @0 M( _unsigned char flagls=0;//工作表示
7 d1 { J/ |7 e! A! h. Bunsigned int cnt=0;//计数器" N: E0 l: g$ B7 g2 R3 H! N, c1 @
unsigned char i=0;//循环变量
; y6 s) p" u3 {9 @$ s5 @$ Y4 gvoid main()) w0 n6 s4 |+ a% |7 K
{: A: ? R9 K! L
unsigned int sec=1000;//定义变量,倒计时起始数据
( ^% M( m) u* n) {
5 P2 g2 Z( b2 ~' @: X# U TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时0 e* ]) w5 x2 F% ~; B& Y% G& W5 i4 |
TH0=0xFC;//定时器初置
9 @& T& \4 B( M/ x, W( |7 D* d e TL0=0x18;
3 |1 t& f4 h2 G$ y$ ^7 p TR0=1;//启动定时计数) E- n/ ]1 t. m- ]; j
EA=1;//允许中断7 f! L) }/ e7 k$ f9 T v6 u& b
ET0=1;//允许定时器0中断& _3 F, u* W- m* [, a7 O% y
while(1)
: W; `9 `; v' v+ ~0 [5 K. t {
a V" O, {) T7 x+ K! o9 ~ LedBuff[0]=LedChar[sec%10];//计数值个位存入 a! n2 [# O- T
LedBuff[1]=LedChar[sec%100/10];//十位
: k8 G" j; p& t" I" \& |2 a# t- ] LedBuff[2]=LedChar[sec%1000/100];//百位9 y: T3 ]$ o/ I5 S2 t: R0 V# F
LedBuff[3]=LedChar[sec/1000];//千位
( j, t$ R$ Y! v$ I( o" M7 B2 I) z% m2 [0 ^
if(flagls==1)//判断1秒时间到,工作表示有效
9 t1 {, P5 g" { {
, @% d+ N9 z/ x4 ]0 m0 s* q5 L flagls=0;//等等下一秒,清零6 x2 f/ I: C3 |+ ?# H
sec--;//倒计数
6 r# e, h( k0 _% _ |
) J- S1 r" T: G' _8 }# P. t( p& y3 h! I
}# ^+ M6 E3 @5 [0 }9 u5 |6 U
}( P; i% [! _( J+ h. K3 U
( P0 Q/ p4 I9 W9 v* f6 b q( X9 i0 e j3 p: j8 Q! t6 V
}( h. ^& ?1 h4 x) D# N Z5 d
void InterruptTime0() interrupt 1//定时中断
6 H1 \$ b' p( E4 a6 Q/ n{( W2 T3 P( L0 u3 _+ z) M
TH0=0xFC;//重赋初始值
+ O8 {+ _( J3 }! q TL0=0x18;) W: a5 H' u2 m8 x3 v1 C6 }' Q* }# D
cnt++;//计数器加1; K) ^" ~* j2 F A
if (cnt>=200)//中断1000次得1秒,工作表示' @& R6 l& z4 N# g! F. a$ L
{8 b5 ?. _2 x0 z$ H& W- Z( H; f
cnt=0;//准备下一秒记时, d0 b% ^0 p! D, n8 W8 M
flagls=1;//1秒时间到
1 X. ~4 u6 _& P+ G) D6 S
* s v" `) r D1 G$ v. d }* v! D! L T* y" Z$ @
P0=0xFF;//熄灭,P0高电平
: r$ l4 R/ [% { switch (i)
5 U% k3 S- g b6 I {9 e" ?( o9 N' _5 |; }+ D, | v+ a. V
case 0 GT3=0;DGT2=0;DGT1=0;DGT0=1;i++ 0=LedBuff[0];break;//个位
! C& X8 n, y A7 ?6 X6 K case 1 GT3=0;DGT2=0;DGT1=1;DGT0=0;i++ 0=LedBuff[1];break;//十位( w* _/ W- b2 Q7 ]& E9 @* y$ \2 n
case 2 GT3=0;DGT2=1;DGT1=0;DGT0=0;i++ 0=LedBuff[2];break;//百位 l, E/ P& G8 h5 C; S
case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位8 U& f1 G' L7 X) O
}0 _# z6 `% _9 L! V2 U$ u
}
8 B9 s5 c& ^8 S: ~+ i$ z这怎么让蜂鸣器响啊 8 W* t0 J3 T3 X; g$ n: V1 W) x1 U
* {7 ]; z" t" J5 o6 y5 J, { |
|