实验2 定时器T0中断
实验目的
掌握定时器相关寄存器的配置,以及定时时间的计算等
实验内容
定时器中断控制P1.0口输出(实现LED的亮灭),在Proteus界面观察。
实验步骤
1、在Keil开发环境下建立一个工程,命名为‘定时器中断’,然后选择存储路径进行文件保存。
执行力学习心得体会2、程序的编写,
回收站清空后如何恢复a.定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一致,为振荡频率的1/12。本实验中时钟频率为12 MHZ,现采用中断方法来实现0.5秒延时,选用定时器T0来完成。
(用T0计时器不能直接实现0.5S的延时,实验可以通过中断延时0.05
秒,然后进行10次中断后,实现LED的亮灭)
时间常数可按下述方法确定:
机器周期=12÷晶振频率=12/(12×106)=1us
设计数初值为X,则(216-X)×1×10-6=0.05,可求得X,然后将X
化为十六进制则X=3CB0H,故初始值为TH1=3CH,TL1=B0H
b.初始化程序
包括定时器初始化和中断系统初始化,主要是对IE、TCON、TMOD 的相应位进行正确的设置,并将时间常数送入定时器中。
c.设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。
d.编译代码:
ORG 0000H
SJMP Main
ORG 000BH
AJMP TT0 ;定时器T0的中断服务程序入口地址
ORG 0030H
Main : MOV TMOD ,#00000001B ,定时器T0工作在方式1
CLR TR0
CLR TF0
MOV TH0,#60 ;(65536-50000)延时5ms的初值
MOV TL0,#176
MOV R7,#10 ;循环10次,5*10=50ms
SETB P1.0
MOV IE,#00000010B ;允许T0中断
天梭手表正品查询SETB TR0 ;启动定时器T0
SETB EA ;打开中断系统
Loop: SJMP Loop
TT0 : DJNZ R7,Next ;
CPL P1.0 ;取反p1.0
MOV R7,#10 ;重置循环次数初值
Next: CLR TR0 ;关闭定时器
MOV TH0,#60 ;重写定时5ms的初值
MOV TL0,#176
SETB TR0 ;启动定时器
属鸡的人2014年运程RETI
3、搭建Proteus仿真平台,仿真平台如实验1中平台一致。
4、程序下载调试,编译完成后生成HEX文件进行下载调试。
海南游记5、附注:定时器还常用方式0和方式2,方式2 为自动重装计数初值的8位定
时器,主要用于串行通信中波特率的产生和短时精确定时(因为不必软件重装初值所以更精确)。
6、实验还可以借助Proteus软件中的可视化工具进行观察,本实验可以将LED
灯换成示波器来观察P1.0口的波形输出情况。
a.删除原理图中的LED以及与之相连的电阻、电源器件;并在图中加入开
2023五一假期放假时间表关(关键词“BUTTON”)等器件,将上电自动复位转变为手动复位。
b.在绘图工具栏点击按钮,然后选择示波器按如图2-1方式连接。
图2-1 示波器连接图
c、然后如前所叙述的步骤下载程序后运行,系统自动弹出示波器界面,通过调节示波器上按钮可以调节脉冲在界面的显示效果。也可以定量检验定时值。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论