|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
有4段数码管显示时间,计时到60分钟P37输出低电平.关闭输出.% M* s N7 k6 V
" H/ c7 Z+ v& d# i' }不知头文件用来表示89C2051是否可行.编译通过,再用TOOP2005编程器烧写上,装到板上没有任何反应.硬件无问题,
$ V$ U( m U! z& l: N: {: p8 |' P6 _' r" }2 ?( |
请各位大侠帮我看看软件.
# d' ~6 ?- j" N
% E3 z2 D+ |6 @ T6 n7 O 8 a) Z& W0 H3 y( c' q: a6 ~) @
9 l3 O$ Z) ^3 Z( ~
: k/ ]: ~2 o( R) D5 s! C* |+ _8 v' G l3 |
#include<reg2051.h>
5 d0 F T' D; @. J( i#define uchar unsigned char
& ?( O, C k% I) A! A#define uint unsigned int& ^% s( ^- e7 D- D% m
uchar a;
+ x6 i' |- I4 \& ?uchar miao,fen,shi;0 B8 u, Y& W/ a+ o. b
uchar code duanma[]={0xc0,0xf9,0xa4,0xb0,0x996 P( u' ~/ J5 y. F& R
,0x92,0x82,0xf8,0x80,0x90};//0-9的段码
- ?; i# H7 |! b& csbit P30=P3^0; //数码管位控制
% [" m* q H/ s1 K6 Gsbit P31=P3^1;/ x- ?1 _1 a( ~- u% x6 K! T
sbit P32=P3^2;$ T% T5 D, G- m+ q1 S9 o0 {
sbit P33=P3^3;
8 y N' H: Q+ q; F a
8 b- [* Q# @* w* g! ksbit P37=P3^7;" @& o& C2 d8 H
void yanshi()- Q1 C$ F$ [$ D7 e" A" U
{. ]! g1 X0 x' }
uint x=300;2 h# \2 R; q6 N' ^
while(x--);, ?, C* Q0 h3 r6 G9 O* _ g
}
5 z0 n- ?* W5 Y& X; U" B. v# F8 p) W# C: u
2 Z7 U: i( b- y- A- I
void chushiT1() //初始化T14 Y" {8 Z! C# \( g
{' Z) [$ f) T! |( u% X
TMOD=0x10;//定时器1 方式27 S) ^, N" u h ^2 S. _
TH1=(65536-50000)/256; //50ms初值
7 _9 z. B- ^ }' C8 z6 h TL1=(65536-50000)%256;
) {8 c5 X6 |( f EA=1; //总中断开
% C4 }- r6 T" e% T ET1=1; //允许T1中断
( ~7 ^9 U% I6 ~% P6 | TR1=1; //开定时器T1% u" E3 v! b6 s1 _& H! \: ^
}% q) U$ r) R# Q: i
8 Z+ I5 @, x& X0 ?void zhongduan() interrupt 3 //T1的中断程序" P/ A Z; {8 O9 S+ ]1 U3 F% t
{
( G1 J* ?+ M0 N$ x TH1=(65536-50000)/256; //重装50ms初值
; S& x1 b( o; X5 r2 o6 @! O8 C TL1=(65536-50000)%256;
. g; a; Y/ ^7 g8 I8 M* D1 A a++;
! ]" e2 f, f( K% y& U: E; N if(a==20) //1秒钟到了' S4 G( ^( q7 h" u
{; U6 p3 V) n, f8 I
a=0;7 ~! I) u9 t" y* d0 h0 O+ a
miao++;, e! v o! S- M. K3 S
if(miao==60)
2 @5 y, ?% N5 \* d$ ^" b& x {2 |! g! U' f! A( D
miao=0;
0 z7 }/ e+ x ]0 ` fen++;
8 `/ R' e# K8 ^' a$ q0 j if(fen==60) A3 J- p/ }( M1 P- Z+ q' p- Q, w2 v
{
3 [4 m+ m5 U* _4 c fen=0;7 S6 t) v: C- O8 m
shi++;4 T( u/ G6 R8 c8 A/ \: E6 `
if(shi==24)
/ U) P& O& X$ g {
: {0 o! j) e, A: n6 z7 d) l shi=0;; z- j2 }% N: `5 P4 _8 }
}
( S G1 d/ q. A8 C% G4 x/ n# [- b8 N g }+ P- T$ p3 [ b1 Y
}
6 v- ^" K1 l$ D }% z/ j1 i+ c* U4 a) d7 I
}
6 [) C$ H, W- ?# n& i; F# @$ ^; V
% b- E& w. N8 C4 |( o/ l; K8 q0 \/ x- H8 K5 {: M! Q
void xianshi() //显示当前的分钟数和秒钟数! i# S( h: \" h5 s8 n
{4 D" L6 w5 ?+ h& `/ `9 B/ W
uchar shifen,fenzhong,shimiao,miaozhong;
! P: Y! w! q! H- P: z /*分离要显示的时间*/: Q2 o4 I5 [" L0 L o! k% O! w
shifen=fen/10;" E8 v2 Y+ u1 J. G6 b0 f, U
fenzhong=fen%10;
# R( ^. r0 _$ | H shimiao=miao/10;0 ]! }" y+ m N2 z
miaozhong=miao%10;
4 }5 e% l: L- T /*显示各位*/
; J5 J, M/ O" l7 e0 a0 V; X0 v6 r" p* ]8 ?# h9 v" {7 x) N, `; a
/*显示各位*/
, \" Q ^- _6 D# u; } P30=0; //显示十分钟位
' h9 C" V0 M# w) e5 k P31=1 32=1 33=1 1=duanma[shifen];yanshi();) f# \; ]; `- ^ Q
& C* p0 u/ Z2 }) f P30=1; //显示分钟位
8 R, O$ E* m$ H( c9 `- p P31=0; P32=1; P33=1 1=duanma[fenzhong];yanshi();9 }1 X1 ~" C" K" G3 ^/ C, c
- ^% R/ `6 `) {' r# v0 G
P30=1; //显示十秒位
' X; c* U l$ T9 V: L, b P31=1; P32=0 33=1; P1=duanma[shimiao];yanshi();9 d4 J5 G( L6 @( E/ g Z
! v6 O) r: \4 [
P30=1; //显示秒位 6 ]( ^. w+ m6 b& G" |- j, f
P31=1 32=1 33=0 1=duanma[miaozhong];yanshi();
: t$ ~! R; q- P/ [9 N8 D* Q 2 J, X8 b6 p2 [7 M3 R. g6 @
' K: B" P6 E7 }6 d/ L, R
}( V. f4 i. k" y
1 _) i% ^. y1 b- s' ^
void main()
. d! E B0 A7 [{
' \$ @' n4 v) e6 V L" [ chushiT1(); //初始化T1 . H J6 [1 m9 D$ \. F* @! N
while(1). b+ o5 u1 W" x4 r) Z
{P37=1;
* v9 W- x8 v7 i4 I xianshi(); //显示当前时间
7 b3 i& X! v9 k0 ]% B5 y9 B% C" ^5 U9 {+ D
if(fen==60)6 k% K. W/ n* R
9 D: q3 O# p5 o7 x' x{P37=0;, v+ [0 r, {3 x7 f
/ Y3 B$ y% Z" r; n# o3 h) t3 {
}
# t# ]+ h1 P7 [6 b
% ]6 O/ F7 r( h' u }
& i" D5 w/ @) p}5 e" C/ O* }7 f9 i8 N h9 B
3 {+ ?2 f3 W l. P' H4 W
$ u0 \9 I6 S* I7 O' B4 y0 D2 E# v W, J( [$ H4 `' \( A
gghh1.jpg9 |) g" G; o" U% l1 Y, e
* a8 Y7 {" ~/ @$ ~/ X
|
 手机扫码浏览
|