单片机实验三-定时计数器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合■设计□创新实验日期:实验成绩:
实验三定时计数器实验
(一)实验目的
1. 熟练掌握STC型开发板的使用方法和注意事项;
2. 掌握应用USB_ISP烧录过程;
3. 掌握单片机中断原理;
4. 掌握定时器的初始化和定时模式编程。
(二)设计要求
采用定时器0/1做16位自动重装(方式0), 中断频率为1000HZ,中断函数从P1.7/ P1.6/ P4.7取反输出500HZ方波信号。如果由于频率问题实验现象无法观察,请在中断程序中想办法实现。(三)实验原理
1. 开发板部分电路示意图
2. 定时器的使用
在应用定时/计数器资源时,按照以下几个步骤进行:
(1)确定工作方式,对方式控制寄存器TMOD赋值
(2)根据要求计算初值并装入寄存器THx、TLx,实际定时时间Tc=(M-X)×Tp
(3)根据需要开放定时/计数器中断,即EA、ETx置1
(4)启动定时/计数器开始工作,即TRx位置1
(5)编写中断服务程序或查询处理方式程序
定时器/计数器T0的工作方式0:当M1,M0为00时,定时器/计数器被设置为工作方式0,此时为13位计数器,由TLx(x=0,1)的低5位和THx的高8位构成。TLx低5位溢出则向THx进位,THx计数溢出则把TCON中溢出标志位TFx置1。
3. 单片机中断系统
当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。中断服务请求处理完后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。
定时器/计数器T0计数溢出发出的中断请求,中断请求标志为TF0。
(四)实验设备
装有Keil4和STC-ISP的电脑、STC实验箱及连接线。
(五)实验结果
实验结果与预期一致,因为输出频率太高,肉眼无法分辨,LED一直保持常量状态,所以设定了中断100次,输出一个方波信号,这样P1.7引脚对应的LED灯闪烁,频率为5Hz,肉眼可见。(六)结果讨论与心得体会
实验结果与预期一致。中断是单片机系统里最重要的组成部分之一,在很多时候都有应用。定时器初始化操作需要熟练掌握,中断总使能不要忘了开启。实验现象不太明显时,可以略作改变。(七)附录:实验源代码
P1M1 DATA 0x92 ;设置地址
P1M0 DATA 0x91 ;
ORG 0000H ;重置程序入口
RESET: AJMP MAIN ;跳转到主程序
ORG 00BH ;T0中断入口
AJMP TIMER0 ;跳转到计数器子程序
ORG 0100H ;主程序入口
MAIN: MOV SP , #60H ;设置堆栈指针
MOV TMOD, #01H ;设置T0中断为方式1定时
CLR A ;累加器清零
MOV P1M1, A ;将P1M1设置为准双向口
MOV P1M0, A ;将P1M0设置为准双向口
MOV A , #64H ;给累加器赋值100,用于计数100次中断
ACALL PT0M0 ;调用T0中断初始化子程序
HERE: AJMP HERE ;等待中断,模拟主程序
PT0M0: MOV TL0 , #18H ;设置计数器初值低8位,初值为64536
;2^16-X*1*10^-6=1*10^-3,X=64536 MOV TH0 , #0FCH ;设置计数器初值高8位,计数1000次至0
SETB ET0 ;允许T0产生中断
SETB EA ;总中断允许
SETB TR0 ;启动T0,开始计数
RET ;退出子程序,回到HERE
TIMER0:MOV TL0 , #18H ;重新设置计数器初值低8位,初值为64536 MOV TH0 , #0FCH ;重新设置计数器初值高8位
DEC A ;累加器减1
JZ START ;累加器为0时,经历了100次中断,跳转到START RETI ;退出中断
START: MOV A, #64H ;重新给累加器赋值100
CPL P1.7 ;LED引脚电平取反
RETI ;退出中断
END ;结束