|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
学文历史的,最近迷上了弄单片机,自己学了一段时间尝试写了个倒计时器(已经尽力了),在proteus上运行的很好。特地找了朋友焊上了但是一开电数码管没有显示,打开那个P3^1/TXD那个端口就亮了,但是很亮,数字也变成相同的了。已经查了很多次资料,单片机也废了好几个了,真心求教,真的对单片机感兴趣。3 M. F9 h* p Y6 s$ v1 M
5 z2 Q& Y/ Y4 d
单片机代码:5 B I( O9 ?( @3 Q
#include<reg51.h>+ U# R l; }/ Q$ P7 ?
#include <intrins.h>
$ X2 K1 W7 L! V V#define uchar unsigned char% H2 _7 o2 O8 T/ W
#define uint unsigned int' J7 m& {4 t# _, m) ?: l+ e$ X
sbit one_place=P2^1;# \$ k& p5 G& H. q) x, H- \
sbit ten_place=P2^0;" r+ r' s, p0 K- q3 e0 j! m0 O3 c
sbit features1=P1^0;//star开始2 G" W# \5 _+ d3 f7 X+ c% r5 q1 f
sbit features2=P1^1;//stop停止
, P. L( v i6 N" Tsbit features3=P1^2;//reset复位
7 E/ A3 V" a# x; isbit beep=P3^0;
; z. ?# l7 r% v6 y- ~sbit aa=P3^1;//蜂鸣器停止
; y5 b: _0 }. v% I: } o7 \ guchar code table[]=
( x1 Q. _6 \6 p, y$ _) @, V{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};. `& _) J W6 F# }" T+ ?# O# K
uchar num,num1=11,num2,ten,one;
# z& d! I( Q- ^1 c9 _$ Z/ fvoid timer_init(void)/ Y' p& |! F$ l# J, X
{. W2 L, P5 K4 z! N4 H6 c- @2 J
TMOD=0x01;
8 p4 s, f5 c& q# vEA=1;# Z6 z' Z L, A4 Q* |! ?
ET0=1;
# _; h3 k1 s" F7 T9 B6 k# ~( L+ cTR0=0;0 Z7 m1 c: o! X
}* |" Q5 U; o; B' O. Y; ^8 d
void delay(uint n) * V. t( w4 a' ^) ~
{while(n--);) n2 ?- d; f: J& e
}
Y W0 i; _& _. E1 r0 c3 Yvoid check()1 o7 X) w# U) q* b3 J/ l+ Z
{ n0 {3 u' ^2 C! u
. w2 m" i8 K( k0 m4 G" s
if(aa==0){beep=1;}8 L1 O3 ~& i, S5 F5 a
if(features1==0){TR0=1;}
; K0 }9 W4 k6 c if(features2==0){TR0=0;}
- I8 V, S. O2 Q2 \2 N- s if(features3==0){TR0=0;TH0=(65536-50000)/256;
2 j K! F2 l9 |# v e TL0=(65536-50000)%256;num1=11;}% ^* I3 ?% x5 k7 ?: e! q* O: P) R
( k M5 T U3 C a5 O+ f' b* r L}
4 t: X) n6 y0 @* b, M# Uvoid display()
* O6 j& Y6 ~2 p. T{
& E- T9 `3 |: p* W6 B8 mP2=0xff;& `: S/ v6 @) w3 Q
P0=0xff;' I) r7 s9 Z' i4 D8 q
}- j. S' [% m' K6 l
void main(void)
; |8 G1 }0 h/ B0 I! S{ 3 }, C, h8 S+ j! `
beep=1;3 G% }- ?& x5 F0 t# w
timer_init();
1 k0 G+ S) \. Ddisplay();( x( L: `( [ ]: |
if(features1==1){TR0=0;}" O, p# A7 Z- i
while(1)
/ }. y/ u( ]9 q, f{1 K4 d M! N+ f- J# N( k7 f2 {
check();9 W: R: [* z2 e& F: a! T& e. W
one_place=1;
( _) c u" T0 a4 Y9 G& _- w" CP0=table[one];8 v4 }# d5 Q: Y, Y" a* o! ^. ^
delay(100);
: w' I/ D! r# I# [' }; h% j, s5 Bone_place=0;- O0 j5 ~ j$ C) s$ z" y% |
delay(100);
$ j( P( L: G- ^3 A; }ten_place=1;
1 v$ Y5 C- |3 M. H N6 KP0=table[ten];. Y. [- B6 J+ r
delay(100);
1 ^" b; P3 K9 A$ rten_place=0;
% I' T+ Y+ h7 ]1 o0 o9 O: B+ f: bdelay(100);
+ Q; D6 e. C: J3 e* R}
' r+ ~/ t/ B# T( C}
+ c/ g% ~: a r+ Gvoid Timer0()interrupt 1
/ @" q- C6 e5 A& x% n{2 k5 a0 p* E" i8 t [' ^( ?2 C
2 r5 {7 h4 {! L2 `, T& ~' \TH0=(65536-50000)/256;
) S/ e" m) j4 T0 W; e/ vTL0=(65536-50000)%256;4 v( I, i& q5 \7 H' z4 l2 ~
num++;
" x- B" {% r% N# `2 ~% bif(num==20)
# r! o4 s y5 F{
$ b( e! P3 I5 O' \. Q) F0 Z num=0;
9 z7 e7 Y P0 K3 @2 E num1--; ! v% K8 B6 c3 i) R
if(num1==0)9 w2 L! G$ J9 Y/ S' }
{TR0=0;
6 y" i$ {0 Z7 L. F) D$ @" I. \) l beep=0;}! }) \* ] c$ i* \2 A, w( P+ f
ten=num1/10;
% K0 l* j- A7 F1 K6 ~0 h; e one=num1%10; . H+ h, m/ J" e
! {) k2 F8 b C1 l
}
& `/ B2 u* N* t! K# j}
8 Z$ Q# a) }% n% j2 `" K5 {1 N8 f% {2 g8 L- C2 C" H6 s. N
1 C4 g7 }+ s: Q( D( R
+ x: e7 t- L+ Q) r! T$ _6 F K9 j, h, f3 d
% _( V5 L' |- b2 E
|
|