|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
学文历史的,最近迷上了弄单片机,自己学了一段时间尝试写了个倒计时器(已经尽力了),在proteus上运行的很好。特地找了朋友焊上了但是一开电数码管没有显示,打开那个P3^1/TXD那个端口就亮了,但是很亮,数字也变成相同的了。已经查了很多次资料,单片机也废了好几个了,真心求教,真的对单片机感兴趣。
2 V- u& z& \0 f" m, F& @# k+ |4 H$ v) { M e' _; F
单片机代码:
. O, a$ J3 y. [#include<reg51.h>% i& B6 i V* S8 T0 {/ C) T" O! S
#include <intrins.h>
7 [" [$ T/ l' P2 Y7 T6 z' k#define uchar unsigned char
& V% w& M |, O8 r" p1 {* a#define uint unsigned int
: s' e1 \$ b, j9 Psbit one_place=P2^1;
5 b+ i, K- f7 F2 `2 b7 Jsbit ten_place=P2^0;
, }! d8 N. \9 ysbit features1=P1^0;//star开始/ R- B% h1 S t: L$ j7 ~; C
sbit features2=P1^1;//stop停止, B# T/ J9 }1 y0 T& t3 y! d1 Z8 X
sbit features3=P1^2;//reset复位
: t- Q& ^6 j) V; c3 |1 ssbit beep=P3^0;: h. b6 S1 P+ d" q+ U
sbit aa=P3^1;//蜂鸣器停止
* e9 k. v( {8 uuchar code table[]=
/ J; `8 O5 c# p5 u{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
$ s9 i! B9 J7 {8 b8 iuchar num,num1=11,num2,ten,one;9 t& a6 r2 e) |" ^
void timer_init(void)
2 s# @1 |/ \3 B5 u{9 K Y# L6 g/ e0 T; F
TMOD=0x01;: v5 o4 K1 X g n! ?7 j
EA=1;
8 g/ Y5 g) {$ L# T# nET0=1;
7 w z4 d+ {/ CTR0=0;
1 r# f/ j5 V1 h' o6 ]1 v. e}
; X/ }3 m% p4 vvoid delay(uint n)
/ f/ w) I' T" \{while(n--);
?+ s( F* h' @) {, ]. ~}& ~$ ]) _2 ^( K/ H! q* i
void check()6 V8 c" o' ^$ U& a( R0 W5 G
{1 |2 O# M! X; Q- ^8 V2 W
/ p3 y. R5 U( L# G. X! ^' l( g if(aa==0){beep=1;}, Y9 @0 x5 i* X+ ^) Q; o
if(features1==0){TR0=1;}
; F& e: M: r+ p: t* U8 f2 } if(features2==0){TR0=0;}
$ A, t; ?/ q' w1 k; V if(features3==0){TR0=0;TH0=(65536-50000)/256;
8 W/ h. C }, O" _( H. g9 k/ I* e TL0=(65536-50000)%256;num1=11;}
4 b8 ?( y& E% n0 c j
; x: z4 w4 C- ?}+ a8 h7 M+ t( Q# B5 F5 c. \
void display()
3 k V$ x8 T0 A' H) b2 u+ H4 f. y{
& }. Q- A$ m# k/ aP2=0xff;
; o8 j6 X5 f. ?$ CP0=0xff;
. a# D+ r; A8 x, a2 F}
. j- e6 W( | x% \7 Tvoid main(void)
* `# [( T8 J6 J) j# q3 d8 y# w# A{
0 K1 ]% b! G5 S( m5 Wbeep=1;: P' G |2 |4 x) J" `: ]& n
timer_init();
3 G, [7 h6 h- _4 d) jdisplay();, A- ]1 q9 j3 C v
if(features1==1){TR0=0;}
4 n( b3 O; W* Vwhile(1)8 R0 l7 a& {, _
{
, ?' O0 k0 Y* hcheck();' q' i& r# a. B( J7 @
one_place=1;
* m s0 e' Q6 L5 S+ b1 u) H! MP0=table[one];# Z: x6 o6 S. X9 \
delay(100);; {% W/ z) ]- v
one_place=0;
5 Y6 p9 x1 W K0 G# {; i) ^delay(100);
) B" w' U' ~5 [( K6 ]ten_place=1;, |: _) q- I `. |- p2 D
P0=table[ten];. \9 ~/ c0 o9 P. P3 F/ j* d
delay(100);6 _( H* D, e% z, V! g- ]1 P, P
ten_place=0;
2 V5 S# T+ Y& C1 jdelay(100);8 O' }/ K2 X6 }( z3 T; I3 F
}
5 @5 `' z" M+ `) W4 I' R/ X1 h}
2 i0 h: D9 g) p7 i* s6 k' g' x5 I7 f( } nvoid Timer0()interrupt 1 * _) }% n3 \, Z# B
{7 H$ ?7 R6 H; P, y9 S5 J, U! s
0 P6 L7 U6 a' C# M9 ^
TH0=(65536-50000)/256;
1 v; d _+ R! ]6 H! ITL0=(65536-50000)%256;
8 G/ C" e' m; Z0 vnum++;. f* q3 r' h: p' p3 U
if(num==20)
" b- l0 r- @( z6 W; h; t: d/ S$ i{3 E( j- [, q2 ]$ t/ {
num=0;
+ K6 E: v4 U+ [. b3 l3 V num1--;
, E% f8 O# s) e! _8 \% O: ~. ` if(num1==0)
5 i) H2 d9 k+ u: u/ X {TR0=0; {4 W! T, l& I' @) ?/ L6 C2 q
beep=0;}. |/ H1 \3 i- p# M
ten=num1/10;9 g3 c& P( C2 K Q m/ g; Z
one=num1%10; 5 D# y) s& m4 X- G
% }" E/ I3 Q% N+ J3 q' I: P}
1 r4 L4 a% M }7 \: U; ]0 N* {' q}
4 u9 N( ^$ d0 P, a# j1 z4 D2 }# m( Z( _( f, W# H+ S
2 H. {1 T! K% o' A: P' o- E7 z" Z
' J2 a, |: o7 G7 i
" G1 u/ \/ \1 R. J6 y+ e6 _8 A4 R) I& {, [! ?% W7 U
|
|