找回密码
 注册
关于网站域名变更的通知
查看: 190|回复: 3
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-4 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
  前面我们做了定时器的实验,现在来看一看计数实验,在工作中计数常常会有两种要求:第一、将计数的值显示出来,第二、计数值到一定程度即中断报警。第一种如各种计数器、里程表,第二种如前面例中讲到的生产线上的计数。先看第一种吧。我们的硬件中是这样连线的:324组成的振荡器连到定时/计数器1的外部管脚T1上面,我们就利用这个来做一个计数实验,要将计数的值显示出来,当然最好用数码管了,可我们还没讲到这一部份,为了避免把问题复杂化,我们用P1口的8个LED来显示计到的数据。程序如下:  a, l- o- w* p; n
ORG 0000H ,http://www.51hei.com( R, J( e; V! T$ R1 G( Y, ^4 }* H
AJMP START7 b5 _4 j/ r2 T0 G$ w
ORG 30H# o" a/ _4 I' o
START:
) w. w4 O$ U1 g' J" G4 WMOV SP,#5FH
1 B( J* d- Z. \4 oMOV TMOD,#01000000B ;定时/计数器1作计数用,0不用全置0! Q' U3 s0 u6 V8 c& g
SETB TR1 ;启动计数器1开始运行.2 x1 k/ `/ x% Z
LOOP: MOV A,TL0
) l- g! K  f- I8 m6 e2 U4 pMOV P1,A0 B9 v7 d2 i6 W9 ^4 ]& u. m
AJMP LOOP
; F! j: p/ [% Z) L0 FEND9 x7 m* x" s1 J0 G
在硬件上用线将324的输出与T1连通(印板上有焊盘)运行这种程序,注意将板按正确的位置放置(LM324放在左手边,LED排列是按从高位到低们排列)看到什么?随着324后接的LED的闪烁,单片机的8只LED也在持续变化,注意观察,是不是按二进制:
8 t* L3 ~/ Z9 R; r+ C  p# i00000000
/ V  A0 h5 P6 L# U- X- b) U00000001; L; q) l+ ?  q
00000010
- P5 B0 ^5 s8 [: n00000011
5 b/ b+ ^8 N5 o# s& b+ i这样的次序在变呢?这就对了,这就是TL0中的数据。, ]& }+ ?; G1 U- u' W) [& C
程序二:
3 [3 U- b2 h6 N6 fORG 0000H
3 g7 w/ p  F; S* {* S( z& dAJMP START
" Q6 m& _$ O1 o4 AORG 001BH
+ x  c9 W6 ~7 g3 [) |8 XAJMP TIMER1 ;定时器1的中断处理
4 P: G; O4 q1 v: I. g; K0 wORG 30H
! i- `' f3 C  r' ESTART: MOV SP,#5FH! v& t4 x& w) d) Q# [
MOV TMOD,#01010000B ;定时/计数器1作计数用,模式1,0不用全置0
4 e0 p2 U. W) I1 L( F- \! P6 {, kMOV TH1,#0FFH
( ]' J9 \* e& v( A) e8 CMOV TL1,#0FAH ;预置值,要求每计到6个脉冲即为一个事件6 Z, S/ v  d% m2 T
SETB EA  r# o2 o) Y; P/ ^
SETB ET1 ;开总中断和定时器1中断允许
. G3 h6 ^! B5 u" ]SETB TR1 ;启动计数器1开始运行.1 h1 \3 z/ d4 e& F: }
AJMP $! {/ X" I. ~9 R1 Z% X0 U6 W' K* g
TIMER1:: O! [; R: _5 o: }: m
PUSH ACC
  N# f: g$ E. I. I% m1 o& @* BPUSH PSW' ]  B+ A, o2 O, u0 M
CPL P1.0 ;计数值到,即取反P1.0
. c* K+ X7 C- Z  S$ m$ e" I" RMOV TH1,#0FFH
! D+ [- e& }! `1 |$ t2 B% rMOV TL1,#0FAH ;重置计数初值
$ Z6 Y  }. u, @8 E. P/ b: ?+ VPOP PSW1 ^' S& i6 b. a2 b5 {
POP ACC6 C+ e: I- U- J% a( i' g0 c6 o3 ?8 Z0 ~
RETI* T7 x: {+ F8 R+ t
END8 u  Q+ G; \0 }, q# f
上面这个单片机程序完成的工作很简单,就是在每6个脉冲到来后取反一次P1。0,因此实验的结果应当是:LM324后接的LED亮、灭6次,则P1。0口所接LED亮或灭一次。这实际就是我们上面讲的计数器的第二种应用。1 [9 u, z3 X! e! g" q1 J
程序三:外部中断实验" F* j6 s& n2 }* g6 d0 m
ORG 0000H
* W  o+ N. P( q8 l, O/ zAJMP START
/ d7 X7 E; V4 u5 H4 y5 Q, ]/ ZORG 0003H ;外部中断地直入口
4 \$ `9 c" F- n' B. k% WAJMP INT03 E$ f/ y0 T% Z" U8 e
ORG 30H
/ q* L- u& o, q2 L  z9 J9 VSTART: MOV SP,#5FH+ w* }; q! F0 A* o, |' h
MOV P1,#0FFH ;灯全灭
' ~/ R* o8 m2 n8 UMOV P3,#0FFH 3口置高电平1 S6 N3 u+ A& j; U7 }2 r) w0 e
SETB EA
4 r/ e4 N% m- v' O( H8 V+ g! PSETB EX0
2 n+ O- S' b! ^- PAJMP $; c8 Z2 D5 o; K( T, [+ e1 b
INT0:6 T) C- z; g% T$ v2 \; J
PUSH ACC5 e1 a' _, z' E# l7 k, Y
PUSH PSW
; n; x5 Y+ A9 c1 i) m* iCPL P1.02 `, P9 I% T+ O4 a
POP PSW
; Y2 K9 @1 t/ o1 x/ ^% tPOP ACC
! @+ V: `. a* b. ]% XRETI
4 E! F7 [& w) A  [; mEND
& z2 p" M% A9 Q, n, ^* ~本程序的功能很简单,按一次按钮1(接在12管脚上的)就引发一次中断0,取反一次P1。0,因此理论上按一下灯亮,按一下灯灭,但在实际做实验时,可能会发觉有时不“灵”,按了它没反应,但在大部份时候是对的,这是怎么回事呢?我们在讲解键盘时再作解释,这个程序本身是没有问题的。: [- m# x0 m+ j9 p4 |7 D' ]

该用户从未签到

2#
发表于 2022-8-4 13:34 | 只看该作者
膜拜楼主!!!GOOD,谢谢分享

该用户从未签到

3#
发表于 2022-8-4 13:57 | 只看该作者
好东西,收下了

该用户从未签到

4#
发表于 2022-8-4 15:38 | 只看该作者
好东西,学习学习!谢谢分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 14:17 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表