|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
学文历史的,最近迷上了弄单片机,自己学了一段时间尝试写了个倒计时器(已经尽力了),在proteus上运行的很好。特地找了朋友焊上了但是一开电数码管没有显示,打开那个P3^1/TXD那个端口就亮了,但是很亮,数字也变成相同的了。已经查了很多次资料,单片机也废了好几个了,真心求教,真的对单片机感兴趣。
* L2 ?, P3 s6 l5 y7 g
) w: {% _. A2 K I单片机代码:
2 v5 C7 ^- }: M' f% l3 c* ?+ Y#include<reg51.h>
) H1 L' b9 `/ j' o' S$ `) [3 h" n X#include <intrins.h>9 s% E6 I t) w. J# c* U
#define uchar unsigned char
; {4 P I5 N* E#define uint unsigned int
& m* T/ a5 f% n; o) Xsbit one_place=P2^1;- m0 p# w) u+ ~7 N1 W
sbit ten_place=P2^0;7 ?. {8 b; p; G, f
sbit features1=P1^0;//star开始; w& @/ m& }5 Y3 ^7 `6 M+ q
sbit features2=P1^1;//stop停止
. J* w4 j( K( x% m$ @( k. t" jsbit features3=P1^2;//reset复位
3 ?2 v; _& K$ C5 ?: ]9 t+ rsbit beep=P3^0;
' Q8 ~3 i/ Y) r' Wsbit aa=P3^1;//蜂鸣器停止
5 m9 i( b# z7 @ }: wuchar code table[]=
7 D6 M: I A/ j$ P{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};; Z1 J7 G7 H1 h' p) s3 G
uchar num,num1=11,num2,ten,one;3 M0 z3 E5 a) n, p
void timer_init(void)
' Z4 A( o$ k, w, {{
0 j! H% b, n% K8 F2 pTMOD=0x01;! A& I4 o/ @3 m2 \" I% r2 f* c
EA=1;
2 v- d0 @4 y' [6 R, B9 l8 oET0=1;7 p0 z2 ?0 R+ K8 L' r
TR0=0;8 h" ~5 c5 ^% G$ P- p; D0 e
}7 U' r6 x0 q8 v. ~! u) h. W% }
void delay(uint n)
$ U" k/ J) A3 G, w6 I: c2 k6 D{while(n--);3 H* @6 R8 S2 }1 q
}
$ ^+ e4 J; L6 t' `: P: I1 Gvoid check() J8 _6 X4 `. w: p
{
: G% j8 l4 e3 v" Z* T& i/ J9 y
# W" R! O# Q4 P7 Y if(aa==0){beep=1;}
2 M' q# W, {7 I if(features1==0){TR0=1;}2 v3 f/ Q a& y8 e' i
if(features2==0){TR0=0;}. m4 i) R' r; x* Z6 ]
if(features3==0){TR0=0;TH0=(65536-50000)/256; " Q/ P$ r# I2 @# ~: b0 W" W
TL0=(65536-50000)%256;num1=11;}- ]( W# F& {9 S1 k* x" J# A
) Q m4 D, i5 @9 p, M}
: }' g- A- e8 ~. Nvoid display()
) j" }' e, U( P{
7 u1 R) n9 }6 P8 [ H. \P2=0xff;) d% G3 T+ b0 q4 o! t7 [7 h
P0=0xff;
* D7 v" z/ }4 L2 G0 h}* m5 N4 j8 s" ]. r( q' E
void main(void): t' ?8 d1 d% c* F, Z) R3 H. u0 q
{
; [/ M% l- G( I: j7 rbeep=1;
* K* ~& x) Q/ a8 a3 L1 K9 i' Rtimer_init(); G1 k7 `9 y+ m* h+ G0 x
display();0 X5 ~2 i8 d! H$ ]. r
if(features1==1){TR0=0;}7 L3 M. b, z2 D% Z8 ?: |( ~, J3 L
while(1)
" M4 j7 X0 V3 F5 R; E- F7 r{: Z( C# }2 ]- o
check();! }2 [# @) {) \9 D0 o" S
one_place=1;
1 g0 K- I/ f! \. h r4 YP0=table[one];
% E0 _5 X2 X- Z& rdelay(100);
3 }# t& O/ t, p- mone_place=0;
1 }( Z& T- U# s- ^ |$ _' Gdelay(100);# i. q% p3 T M. X# |* Z
ten_place=1;0 Z- B' h! ~( [8 e1 @ l
P0=table[ten];1 c6 n3 n+ j. C% l$ }
delay(100);
" z5 ^: X" s( `5 V. U' h. a; }ten_place=0;2 J9 {5 R! x* A0 n( U& c' o$ i% a
delay(100);
$ z8 p! m- M2 f}' K. y3 P; K( T! j0 j) n2 w( C
}3 \, b5 V1 k9 G; n6 I
void Timer0()interrupt 1
# D: x; W$ x6 w% c; V% F5 C* M{, d+ f, n, G" n" \& K
0 W& U& {4 ~# X5 S# H
TH0=(65536-50000)/256; 1 n* u4 X {) H+ g9 D: T/ u
TL0=(65536-50000)%256;
7 s; E( z0 h# o7 p( m" _/ rnum++;
0 X! ]# D3 g* V: U- m5 l0 O" \if(num==20)
6 `6 _; D9 F* U. z0 D4 l" z{& V- e' N1 C& [& S o9 E
num=0;
5 q% j7 N; Y, k8 [- i4 @, F num1--; . |/ x, G0 m4 Y, M; w
if(num1==0)
. x, I& ]1 ~3 y9 @7 P5 G: F {TR0=0;) e5 L& C# S: o
beep=0;}
4 ^( C# A7 G* g$ Q* q6 |* F; O ten=num1/10;
* c/ s5 l* M3 V7 e- z one=num1%10;
' P& l4 Z) ~2 S/ j8 ^: Q
* K' r8 ^6 H3 S}
& X% j/ ]( O6 r$ |) s4 S}' x( u! M" ~, L9 s
- V& O- q$ x: E4 i$ G' J6 C- u
' J1 {0 a4 W+ I# t* ] P) }( x0 a( `
: O- q+ Q& N; ?9 H! Y6 h
. U2 s2 w( k% |. b: M |
|