定时计数器中断实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时/计数器中断实验

实验一:定时实验。

P0口发光管交*闪亮(闪亮速率由定时器定时并通过中断实现)。

分析:主程序只需做好初始化的工作即可,在周期性执行的中断子程序里改变P0口的发光管状态,实现交*闪亮。

;***********************************************************

Org 0000H

Ljmp main

Org 000BH

Ljmp T0_int

;主程序

Org 0030H

Main: Mov tmod,#00000001B ;选用T0,定时,方式1

Setb et0 ;开T0单级中断

Setb ea ;开总中断

Setb tr0 ;启动T0

Mov p0,#01010101B ;P0口发光管交*亮NextStep: sjmp NextStep ;此处代表主程序去忙其它事了。

;定时器中断子程序

T0_int: mov a,p0 ;读入P0口内容

Cpl a ;将各位取反

Mov p0,a ;再送回P0口,实现交*点亮

Reti

End

;思考题:

;1)。此实验发光管闪亮间隔约为65.5ms,若定闪亮间隔为30ms,应怎样修改?

;2)。若想实现长延时,如1S、10S、1分、1小时等,应如何编程?

;参考定时器中断子程序(1S)

T0_int: Mov th0,#3ch

Mov tl0,#0b0h ;预置常数15536,实现50ms定时

Inc r7

Cjne r7,#20,T0_end ;不够1秒退出

Mov r7,#0 ;够1秒将r7清0,为下一秒做准备

Mov a,p0 ;读入P0口内容

Cpl a ;将各位取反

Mov p0,a ;再送回P0口,实现交*点亮T0_end: Reti

End

;**************************************************************** 2.定时/计数器中断实验2

实验二:计数实验

T0的计数脚P3.4接有一开关模拟计数输入,单片机应随时将输入情况通过P0口显示出来,当输入满100个数时,单片机声音提示。同时继续下一次的计数,循环往复。

分析:由于只计100个数,可选方式2,自动重新装载方式,预置常数156;在主程序里做完初始化工作后,可以不断地读取TL0的值并送P0口显示;而在中断子程序里启动声音提示(最好2秒后关闭声音提示)。

;**************************************************************** Org 0000H

Ljmp main

Org 000BH ;T0的中断矢量

Ljmp T0_int

Org 001BH

Ljmp T1_int ;T1的中断矢量

;主程序

Org 0030H

Main: Mov tmod,#00010110B ;选用T0,计数,方式2

;选用T1,定时,方式1

Mov th0,#156

Mov tl0,#156 ;为T0预置初始值156

Mov th1,#3cH

Mov tl1,#0b0H ;为T1预置初始值15536

Setb et0 ;开启T0中断

Setb ea ;开总中断

Setb tr0 ;启动T0计数

Loop: Mov a,tl0 ;读取T0的计数值,送A寄存器Mov P0,a ;再送P0口显示

Sjmp Loop

;**************************************************************** ;T0中断子程序,完成声音提示,开T1中断启动2秒定时

T0_int: Setb et1 ;开启T1中断

Setb tr1 ;启动T1定时器

Clr p1.4 ;开启声音提示

Mov r7,#0 ;设置2秒定时的计数器

Reti

;**************************************************************** ;T1中断子程序,完成2秒钟声音的短促发声后关闭T1中断

T1_int: Mov th1,#3cH

Mov tl1,#0b0H ;为T1预置初始值15536

Cpl p1.4 ;使声音短促发声,周期100ms

Inc r7

Cjne r7,#40,T1_end ;够2秒了吗?(40次中断是2秒)

Setb p1.4 ;停止声音

Clr et1 ;关闭T1中断

T1_end: Reti

相关文档
最新文档