|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Clap3hame3 于 2021-12-15 14:01 编辑
7 p" [" K6 `- h& M
5 _; m7 x) ^4 V9 @' c6 [( |- j#include <reg52.h>
- S" g! r2 T* B2 }: u# i4 U
. C* C3 F7 [7 H7 ksbit DGT0=P2^3;//数码管控制位" d2 s4 X ^; Z! Q$ X0 H s
sbit DGT1=P2^2;
# s9 Z7 R( ^) X* [) E7 i7 _7 ~sbit DGT2=P2^1;
+ C8 A# A1 B6 v; isbit DGT3=P2^0;
+ Y+ O3 @, d/ G, l* ^
% O3 A) X7 _/ D ]; @' Vunsigned char code LedChar[]={9 W u" B6 Z: `: h; t
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};9 J5 u1 ~3 v4 s- h
unsigned char LedBuff[4]={0xF9,0xC0,0xC0,0xC0};//显示数据储存空间
4 f; k5 K( y( Dunsigned char flagls=0;//工作表示( c" N7 [) x1 r8 \; e9 \' R, m
unsigned int cnt=0;//计数器
6 Q: x% B8 ~! f& junsigned char i=0;//循环变量
0 f6 A s& W8 I" _/ l) Dvoid main()
9 v+ ^# I, C! Q1 x{
- d$ R' ^1 n* I+ n4 C unsigned int sec=1000;//定义变量,倒计时起始数据
2 y' Z5 I+ J: q" J
: U1 T5 P0 r4 u: E TMOD=0x01;//MOV TMOD,#01H//12M晶振产生1ms定时
, @8 A1 L7 M) H$ r/ n& h5 P TH0=0xFC;//定时器初置
" Y) ^2 E4 B2 }& B) f4 P' ~3 v2 I TL0=0x18;
" V6 ?! u; K q- Q0 f$ M. Y TR0=1;//启动定时计数: J' T% s) E) ~
EA=1;//允许中断: @5 g9 [( f2 v
ET0=1;//允许定时器0中断+ H8 ]" t& p* D
while(1)
5 Z$ ~4 K; ?% s3 C5 x/ h0 b' w5 w {
* |! t6 Z- S7 |4 K% Z3 q LedBuff[0]=LedChar[sec%10];//计数值个位存入" ~3 ? E, m5 z( L$ `. j8 [2 p4 {
LedBuff[1]=LedChar[sec%100/10];//十位
* U0 @0 _! W% s( j LedBuff[2]=LedChar[sec%1000/100];//百位
% p1 |3 x0 c2 _" @& t LedBuff[3]=LedChar[sec/1000];//千位. J: j( g/ W- K/ S
# _% [5 }0 E4 Y% P3 P1 B, |
if(flagls==1)//判断1秒时间到,工作表示有效: G: T' K. x7 ]
{' N; z. Z" r7 U. `$ d3 }. k- f
flagls=0;//等等下一秒,清零3 n7 }' Z0 i( I" b0 q6 Y
sec--;//倒计数3 g: U) }& P) j3 C0 }; c
" j1 ~' C, h$ b0 I: L& r! K
6 `! {2 n; t1 B3 I }7 n, Y5 [7 u1 p; y- g7 R
}
! ^- F9 N6 v7 c, }. { L9 T
; v, O& X! E: B1 }7 M
, F. } K9 j- ^9 Q" G% G}; Z& G" z0 f* Z) }" o$ o7 }
void InterruptTime0() interrupt 1//定时中断; m! [- Z6 H1 o! A* m
{, G O% d0 s/ U' a7 Y8 r9 \ q
TH0=0xFC;//重赋初始值
$ J( P8 A8 A9 g& @ TL0=0x18;8 C6 R' u1 f4 X. V
cnt++;//计数器加1
$ n9 v& B% m9 \* Z3 _ if (cnt>=200)//中断1000次得1秒,工作表示
8 x. I$ d8 f1 w; e C {
) N- x* J- s& w' }# c cnt=0;//准备下一秒记时$ U0 }1 J- p; f9 A+ ~( O2 u' I$ c4 {
flagls=1;//1秒时间到
- l# N+ j/ ]; ?- X' P8 z# s3 `9 B
0 n% n5 f5 I \- t }
" t V: G0 w8 O( a P0=0xFF;//熄灭,P0高电平9 \9 Y5 @: V3 v
switch (i)
' u# ?4 g' I# B8 s/ R {3 @/ h3 q4 \: f' j8 a7 f
case 0 GT3=0;DGT2=0;DGT1=0;DGT0=1;i++ 0=LedBuff[0];break;//个位4 e# g! L2 R8 h' L
case 1 GT3=0;DGT2=0;DGT1=1;DGT0=0;i++ 0=LedBuff[1];break;//十位/ P' R4 L1 R! A6 c( D
case 2 GT3=0;DGT2=1;DGT1=0;DGT0=0;i++ 0=LedBuff[2];break;//百位
. g5 A, M! h, g2 H/ U% R0 w! n case 3:DGT3=1;DGT2=0;DGT1=0;DGT0=0;i=0;P0=LedBuff[3];break;//千位/ M9 c. G& a, @+ \, H! Q
}2 l5 Z5 c. L% p( W3 U' d+ A& e
}
8 F: r3 I# o- j# a. D( ?; f这怎么让蜂鸣器响啊
% n) Y0 k& e& L. g3 N( [- Y k# _# R- E" ~) c" ^9 T( A" F6 f
|
|