你的位置:电子园51单片机学习网 >> 经典教程>> 详细内容 在线投稿

单片机教程20课:单片机定时/计数器实验

发布: 2009-4-04 22:35 |  作者: hnrain |   查看: 304次

电子园51单片机学习网 tBq9\.`"}VjP%[

前面我们做了定时器的实验,现在来看一看计数实验,在工作中计数常常会有两种要求:第一、将计数的值显示出来,第二、计数值到一定程度即中断报警。第一种如各种计数器、里程表,第二种如前面例中讲到的生产线上的计数。先看第一种吧。我们的硬件中是这样连线的:324组成的振荡器连到定时/计数器1的外部管脚T1上面,我们就利用这个来做一个计数实验,要将计数的值显示出来,当然最好用数码管了,可我们还没讲到这一部份,为了避免把问题复杂化,我们用P1口的8个LED来显示计到的数据。

%Xx cvA!B&w/L%c0 电子园51单片机学习网 wd W0h`(Ju7E

程序如下:

0JB"G$u}#E4X'\d0

iw~5Gs rf(_H0ORG 0000H

^YP#H9t,vs0

Kw*C|C7HVZ C qN0AJMP START

5``4?V"j8n0

2?d"Zg"^;p8x0ORG 30H

?M.Yc!t-|{"Ta)[0e0

H)`/y0{N6]R0START: 电子园51单片机学习网 _&ID,_(Z$lk gPU

电子园51单片机学习网i z&W?4}

MOV SP,#5FH

S3\r!I)d-bk0 电子园51单片机学习网8IoCZ6?0C|h

MOV TMOD,#01000000B ;定时/计数器1作计数用,0不用全置0

!uJr/qsv){:?0 电子园51单片机学习网 k,z@{!q1ql'K2]

SETB TR1 ;启动计数器1开始运行. 电子园51单片机学习网e$b4]&E*hO5W

电子园51单片机学习网%I;T3N-nwU

LOOP: MOV A,TL0 电子园51单片机学习网,Xo?)UA ^8`"]}A.Rq

电子园51单片机学习网3N`7TC9s;ES

MOV P1,A 电子园51单片机学习网8O8j!G(td2r

电子园51单片机学习网 H2}n3N5W

AJMP LOOP电子园51单片机学习网,jU;sO4L$nHQ

1U ZUJ5^cG#i0END

x K Tm#QL:_0^%Kl0

fy&G'n X#vb2M-V0在硬件上用线将324的输出与T1连通(印板上有焊盘)运行这种程序,注意将板按正确的位置放置(LM324放在左手边,LED排列是按从高位到低们排列)看到什么?随着324后接的LED的闪烁,单片机的8只LED也在持续变化,注意观察,是不是按二进制:电子园51单片机学习网jgP.I*Ge(oFI"yg

4F$R'HG0v`7K5V r000000000电子园51单片机学习网 p%n~R$?

电子园51单片机学习网 quz Ymk:oI+p

00000001电子园51单片机学习网#SH(^,i Hq

Q8`?0U*Ua VN000000010

6SV:oVh v r ^)mJ2E0

0bG2W^'{:y_000000011

{V\*t4`h)S-j0

V4x0H+nQ ^ @Q)C0这样的次序在变呢?这就对了,这就是TL0中的数据。电子园51单片机学习网G-|2`7H8[7c

电子园51单片机学习网"n5v#a3~j(BEK!N

程序二:电子园51单片机学习网/R;D5]M(^I@;u

2m YY/?E0ORG 0000H

7JQn^R!yk[0 电子园51单片机学习网Lr}bw*cWKM

AJMP START

#\a)v ~OK^D T0

"Pyg\0W6X HT0ORG 001BH

-LDb g F-@q0E0 电子园51单片机学习网E6p JW+oK#j{Xn

AJMP TIMER1 ;定时器1的中断处理电子园51单片机学习网j|W*?9_&J~:v'xpV

:aov3H(v7^O'L0ORG 30H

6l!R*XCc\z0

NkH2Oq3ZL'i0START: MOV SP,#5FH

gOt#Kj0 电子园51单片机学习网p6|KcyL&Z

MOV TMOD,#01010000B ;定时/计数器1作计数用,模式1,0不用全置0 电子园51单片机学习网3~.~3l ] ^j

电子园51单片机学习网$}M y3uH _

MOV TH1,#0FFH

~n @%B&JtMV0

wt(P D!_"rX0MOV TL1,#0FAH ;预置值,要求每计到6个脉冲即为一个事件

fL!qW;o:_"c6n|0

@-Q] h*PH6|Sr,Y0SETB EA

W-Ge/`wM b0

pMR;be}0SETB ET1 ;开总中断和定时器1中断允许

qQbk B,a,GJ+~/O0 电子园51单片机学习网@h&JTs0N8s

SETB TR1 ;启动计数器1开始运行. 电子园51单片机学习网x2Qnb$v

yKYtVW0AJMP $

%XGA#J c H[+X6?0u0 电子园51单片机学习网 Z-h^e| T

TIMER1: 电子园51单片机学习网:GieE!@LIbH

E&^k"_j0PUSH ACC 电子园51单片机学习网Bb[&A w3k

-_^D:l*@V$Zf0PUSH PSW

+C"F|9q#m0 电子园51单片机学习网n4Pe zLn9Y

CPL P1.0 ;计数值到,即取反P1.0

?cx}%rV#f0 电子园51单片机学习网i,e3Y+u PGt*i

MOV TH1,#0FFH

c0c(x/O,|/q u!V+Y#f0

D5TZD"p!n K"{0MOV TL1,#0FAH ;重置计数初值

@ ^]k5J1h ajv0 电子园51单片机学习网G0m(H5HF_;@

POP PSW 电子园51单片机学习网+?7h whDL:b

电子园51单片机学习网&GQ/u}5A5N#Cz4\

POP ACC

$wT#_0nk0 电子园51单片机学习网M.K1S#coy}yR

RETI

B2`&Z'Dn0

D rR.Q FH4R0END 电子园51单片机学习网u.T'y*@C z%r#L

电子园51单片机学习网.Mn*Gm8I.oR2F6G [

上面这个单片机程序完成的工作很简单,就是在每6个脉冲到来后取反一次P1。0,因此实验的结果应当是:LM324后接的LED亮、灭6次,则P1。0口所接LED亮或灭一次。这实际就是我们上面讲的计数器的第二种应用。

o7OEF I+H.H0

1m1`7e\2^C'd0程序三:外部中断实验电子园51单片机学习网4_4@M2`r!WKc

电子园51单片机学习网3b [3h"Hg q,b

ORG 0000H

'`*TX7s&T3n5QQ9g/?0

q:f4I cn|;e/G0AJMP START 电子园51单片机学习网~5|Fo6k/DZ'b0|$A#Q

电子园51单片机学习网`Z Fnt k`

ORG 0003H ;外部中断地直入口

K oC1W~ D aX/e0 电子园51单片机学习网nc/aT$u&GyA

AJMP INT0

`6T5aK4h-W|nuV0 电子园51单片机学习网[E@,p6L

ORG 30H 电子园51单片机学习网&|Q;N7c5k

r:DEobEL[W9E0START: MOV SP,#5FH 电子园51单片机学习网 TWXtn

电子园51单片机学习网 w4CxqU\1U}

MOV P1,#0FFH ;灯全灭 电子园51单片机学习网vp2e2X6S h"H%Zr

*Q }Bc&[(@0MOV P3,#0FFH ;P3口置高电平

\%l*t*\Sa)q*]0 电子园51单片机学习网0ud;X&Q.Y

SETB EA 电子园51单片机学习网 K9r3C;Y9Yfv

"Jz,Y$yRw0SETB EX0

[+J0pbt5tP%d-Y V0

@n\#S$\o0AJMP $ 电子园51单片机学习网.^#l(i+a V2r]

电子园51单片机学习网f,v7@|*Z^;S M)Wc8Rz

INT0:

w*AJ\KPO0

2BG9w0Dw:g S0PUSH ACC

+vr{/WV@!t0 电子园51单片机学习网.UR3jQl bd2QD

PUSH PSW 电子园51单片机学习网6},~,C1d&J7e? tK0e

电子园51单片机学习网 A(rE*~!V|#s

CPL P1.0

Q"X6z3b0rEx0

Il(K-a6i0POP PSW

y3KHA[l-V,b!r)I0 电子园51单片机学习网Jm-g1je#R2h

POP ACC 电子园51单片机学习网8c ?2AunBYJ

电子园51单片机学习网|+\6_#Q\lJ

RETI

?t3x(`,g W0

"K:o8UwQ@]g4]p0END

c SyViE0

%z o"DC0s$BA9ES0本程序的功能很简单,按一次按钮1(接在12管脚上的)就引发一次中断0,取反一次P1。0,因此理论上按一下灯亮,按一下灯灭,但在实际做实验时,可能会发觉有时不“灵”,按了它没反应,但在大部份时候是对的,这是怎么回事呢?我们在讲解键盘时再作解释,这个程序本身是没有问题的。

1? c8q,P V E Q0
打印 | 收藏此页 |  推荐给好友 | 举报
上一篇 下一篇
 

评分:0

发表评论
查看全部回复【已有0位网友发表了看法】

单片机开发板推荐

在线客服
在线客服系统