单片机 实验三中断及定时器实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:中断及定时器实验
一、实验目的:
1、弄清中断的概念、基本原理,掌握中断技术的应用
2、了解中断初始化的方法,中断向量安装和中断服务子程序的
设计方法。
3、了解定时/计数器的工作原理及MCS51单片机的定时器内
部结构
4、掌握时间常数计算方法
5、掌握定时器初始化方法和定时中断程序设计方法
二、实验内容:定时器实验
1、这个是一个电子钟走时程序,利用定时器T0产生50ms中
断,中断计数器中断20次为1秒,利用秒信号进行电子钟
计时。先读懂下面程序段,然后编辑、编译程序,并在伟福
仿真器上模拟调试该程序。
程序清单如下:
COUNT EQU 7FH
COUNT1 EQU 7EH
S_MEM EQU 73H
M_MEM EQU 72H
H_MEM EQU 71H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0 ;“*1”
MAIN: MOV SP,#2FH
MOV TMOD,#00000001B
MOV TH0,#03CH ;50毫秒中断时间常数
MOV TL0,#0BH
MOV IE,#10000010B ;开放T0
MOV IP,#0
MOV S_MEM,#0
MOV M_MEM,#0
MOV H_MEM,#0
MOV COUNT,#20
SETB TR0
;______________________________________________________ W AIT:NOP
SJMP W AIT
INT_T0: MOV TL0,#0BH
MOV TH0,#3CH
DJNZ COUNT,EXT_T0
MOV COUNT,#20 ;恢复中断计数器
INC S_MEM ;“*2”
MOV A,S_MEM
CJNE A,60,EXT_T0
MOV S_MEM,#0
INC M_MEM
MOV A,M_MEM
CJNE A,#60,EXT_T0
MOV M_MEM,#0
INC H_MEM
MOV A,H_MEM
CJNE A,#13,EXT_T0
MOV H_MEM,#0
EXT_T0: RETI
2、按下列要求修改程序或回答问题。(实验报告内容)
a、把程序改成T1中断计时
ORG 000H
LJMP MAIN
ORG 001BH
LJMP INT_T1
MAIN: MOV TMOD,#10H
MOV TH1,#3CH ;50毫秒中断时间常数
MOV TL1,#0B0H
MOV IE,#88H ;开放T1
MOV IP,#0
…
SETB TR1
INT_T1: MOV TL1,#0B0H
MOV TH1,#3CH
….
b、把定时器工作模式改成自动重装方式
MAIN: MOV TMOD,#01H
MOV TH0,#06H ;250us*4000次
MOV TL0,#06H
MOV COUNT,#4000
....
INT_T1: DJNZ COUNT,EXT_T0
MOV COUNT,#4000 ;恢复中断计数器
INC S_MEM
MOV A,S_MEM
c、定时器中断初始化包括那些内容
答:先对TMOD,TH0,TL0,IE,IP进行初始化,最后把TR0
置位
d、简述中断调用对堆栈的使用情况
答:调用中断时,先把将要执行的下一条指令地址压
入堆栈,通过压栈保护现场,即将PC低八位压入堆栈
(SP=SP+1),再将PC高八位压(SP=SP+1)入堆栈。
e、怎样计算定时器时间常数
先确定晶振频率f,估算定时器单次定时时长T,用以下
公式
模式1用x=2^16-T*f/12
模式2用x=2^8-T*f/12
f、本程序若加上计“星期”,应如何修改?写出相关程序段。
COUNT EQU 7FH
COUNT1 EQU 7EH
S_MEM EQU 73H
M_MEM EQU 72H
H_MEM EQU 71H
W_MEM EQU 70H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0 ;“*1”
MAIN: MOV SP,#2FH
MOV TMOD,#00000001B
MOV TH0,#03CH ;50毫秒中断时间常数
MOV TL0,#0BH
MOV IE,#10000010B ;开放T0
MOV IP,#0
MOV S_MEM,#0
MOV M_MEM,#0
MOV H_MEM,#0
MOV W_MEM,#1
MOV COUNT,#20
SETB TR0
;______________________________________________________ W AIT:NOP
SJMP W AIT
INT_T0: MOV TL0,#0BH
MOV TH0,#3CH
DJNZ COUNT,EXT_T0