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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
  前面我们做了定时器的实验,现在来看一看计数实验,在工作中计数常常会有两种要求:第一、将计数的值显示出来,第二、计数值到一定程度即中断报警。第一种如各种计数器、里程表,第二种如前面例中讲到的生产线上的计数。先看第一种吧。我们的硬件中是这样连线的:324组成的振荡器连到定时/计数器1的外部管脚T1上面,我们就利用这个来做一个计数实验,要将计数的值显示出来,当然最好用数码管了,可我们还没讲到这一部份,为了避免把问题复杂化,我们用P1口的8个LED来显示计到的数据。程序如下:2 U: U/ K6 J8 ]
ORG 0000H ,http://www.51hei.com, q& h6 M0 q! i* d# k, o
AJMP START
8 G: e6 @0 ?8 Z- RORG 30H, X( ^9 W8 N1 d! @( r
START:. [9 [# k' e3 i) ]5 Q7 y  B  I0 ~3 o
MOV SP,#5FH
8 Y! N  N* x- w3 A+ [# xMOV TMOD,#01000000B ;定时/计数器1作计数用,0不用全置0
( L$ |. p7 n4 C0 x; {3 y" \8 KSETB TR1 ;启动计数器1开始运行.
8 B5 J: j; y4 c: GLOOP: MOV A,TL0
9 h7 M/ a# ^# V- B; O) bMOV P1,A9 Y* N5 h" W' v
AJMP LOOP
4 \" \, ^1 i0 j% \& _% B3 ~0 K+ UEND
4 P8 D' j$ j5 v; v! D" S: m$ B在硬件上用线将324的输出与T1连通(印板上有焊盘)运行这种程序,注意将板按正确的位置放置(LM324放在左手边,LED排列是按从高位到低们排列)看到什么?随着324后接的LED的闪烁,单片机的8只LED也在持续变化,注意观察,是不是按二进制:! W$ j4 n: |$ w  x9 S+ v
00000000+ s6 L' k5 O* M3 w6 P0 H
00000001
. y! k& i: I4 N" j4 J% e$ Y  k00000010
/ V' X- U, i# w" ?) b: c/ T00000011
" p2 a! g% b5 U0 t8 ^这样的次序在变呢?这就对了,这就是TL0中的数据。
4 P$ o1 `& ?4 o' y9 U3 Z: ^, [2 g程序二:2 N5 V5 j' M5 S& q( {; _
ORG 0000H" ^+ N$ L& Q" m0 Y' b
AJMP START! M0 b. G0 ~; q& d
ORG 001BH) v8 F( f% r) s+ Y: b
AJMP TIMER1 ;定时器1的中断处理% ]1 I) I" H# X8 h! ^6 ?0 s
ORG 30H* W' G1 b' `( y1 t
START: MOV SP,#5FH$ e" N' Z6 G7 q% Q0 T
MOV TMOD,#01010000B ;定时/计数器1作计数用,模式1,0不用全置0
- S' Z2 ^: A% s* k* Z7 B0 B; N* aMOV TH1,#0FFH$ E$ Z+ i( S1 U: G2 A* h
MOV TL1,#0FAH ;预置值,要求每计到6个脉冲即为一个事件
3 I' d9 _5 Y% p; J) L4 QSETB EA
5 |) \; \2 A: q! w' [" ]+ i3 f( bSETB ET1 ;开总中断和定时器1中断允许
+ ]# l, K/ h: I/ h* \: Z  H4 H( C2 zSETB TR1 ;启动计数器1开始运行.  o. \9 J0 B# `
AJMP $- _5 ?0 w2 _. ?) V
TIMER1:
4 A- G% w) f) M2 A6 _1 A/ APUSH ACC
% z: D4 n% y1 M; G2 P0 `1 `& UPUSH PSW( Y3 h! D2 I) I) ]. y$ X
CPL P1.0 ;计数值到,即取反P1.0* O8 p, h: D- H6 M  W. u9 a
MOV TH1,#0FFH
7 p4 Y3 G% E4 O  S; d7 XMOV TL1,#0FAH ;重置计数初值9 r* C; q" ~9 T+ r3 b0 v! P3 T6 t  W
POP PSW
- F9 G3 ?6 f2 k4 ]+ n0 E; a5 dPOP ACC
: ~9 S. C# S. g7 o# ]7 r( e# c5 e4 j5 ]RETI0 @- F0 ~0 i3 |1 q" ]; X5 Z/ e
END# f0 X$ I: A- `
上面这个单片机程序完成的工作很简单,就是在每6个脉冲到来后取反一次P1。0,因此实验的结果应当是:LM324后接的LED亮、灭6次,则P1。0口所接LED亮或灭一次。这实际就是我们上面讲的计数器的第二种应用。6 V9 W! ]# w( F, k4 b( e* X) p
程序三:外部中断实验
0 t; t0 M& n7 v* SORG 0000H# u3 ?) A) F. O
AJMP START' M. _3 X; x  u3 O+ }
ORG 0003H ;外部中断地直入口: ~4 @6 Z7 t; \
AJMP INT0
( e/ X9 S8 `; S0 W1 Z5 BORG 30H
6 [2 N5 p- G. R! m: USTART: MOV SP,#5FH
# E. q& H+ I$ B- q% i# D8 `2 {MOV P1,#0FFH ;灯全灭, g9 g, V0 b0 f
MOV P3,#0FFH 3口置高电平& {! I7 N* [0 I' {7 l2 d4 G; I
SETB EA8 g; `0 z4 |/ k$ y; T/ O! h
SETB EX02 J/ ]2 y6 Y0 O( R1 n. q. ?# q
AJMP $$ v: s- O* n# T) C2 x2 H# _
INT0:- Q5 n6 C2 N- }
PUSH ACC
& I' w0 g! K! L+ p8 E  d' ZPUSH PSW
2 Q6 d. |; s# c/ M4 nCPL P1.01 \" h) ]4 G( g: ?' [
POP PSW+ P, {$ B' Z7 [! F$ [% y
POP ACC
- {! A" J/ `8 eRETI
( |$ d% F. n% q. f7 p0 ~! rEND& N9 U% x# c8 X; }/ D0 V, b
本程序的功能很简单,按一次按钮1(接在12管脚上的)就引发一次中断0,取反一次P1。0,因此理论上按一下灯亮,按一下灯灭,但在实际做实验时,可能会发觉有时不“灵”,按了它没反应,但在大部份时候是对的,这是怎么回事呢?我们在讲解键盘时再作解释,这个程序本身是没有问题的。6 d9 ~1 Z1 T( C0 a" i& K

该用户从未签到

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-8-4 16:33 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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