实验二 定时器实验

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

实验二定时器实验

一、实验要求

用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转.

二、实验目的

1、学习8031内部计数器的使用和编程方法。

2、进一步掌握中断处理程序的编程方法。

三、实验电路及连线

四、实验说明

1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计

数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器。

2、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置

定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

3、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振

荡器周期。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷6MHZ=2uS

(256-定时常数)×2uS=100us

定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟.

4、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键

作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

5、对于80C196,与定时器有关的寄存器为IOC1.2和INT-MASK。IOC1.2为定时器1

溢出中断允许/禁止位。INT-MASK的第0位为定时器溢出屏蔽位。

6、对于80C196,在设置中断定时常数时,要注意先设置窗口寄存器WSR,设置完常

数后,再恢复原WSR值。

五、实验框图

六、实验代码:

ORG 0000H

RESET: LJMP MAIN

ORG 000BH 定时器T0入口地址

LJMP IT0P 跳转到IT0P中断子程序

ORG 1000H 主程序地址

MAIN: MOV SP,#60H 设置堆栈指针

MOV R1,#64H 将100赋给R1

MOV R2,#64H 将100赋给R2

MOV TMOD,#02H 设置T0的工作方式为方式2

MOV TH0,#0CEH 高八位赋初值为206

MOV TL0,#0CEH 低八位赋初值为206

SETB TR0 启动定时器T0

SETB ET0 允许定时器T0溢出中断

SETB EA 总中断允许

HERE:SJMP HERE 循环等待

IT0P:DJNZ R1,LOOP 减1不为零跳转到LOOP MOV R1,#64H R1赋值100

DJNZ R2,LOOP 减1不为零跳转LOOP

MOV R2,#64H R2赋值100

CLR EA 关中断

PUSH ACC 保护现场

PUSH PSW

SETB EA 开中断

CPL P1.0 P1.0取反

CPL EA 关中断

POP PSW 恢复现场

POP ACC

SETB EA 开中断

LOOP:RETI 中断子程序返回

七、实验总结

通过这次实验我学会了用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一

次反转的设计。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器。

我采用的是方式2。采用双重循环,其中R1为内层循环,R2为外层循环。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器,定时器100us中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷6MHZ=2uS,(256-定时常数)×

2uS=100us。定时常数=206。然后对100us中断次数计数10000次,就是1秒钟。

该实验也可以用方式1实现。此时定时常数的设置可按以下方法计算:机器周期=12÷

6MHZ=2uS,(65536-定时常数)×2uS=100us。定时常数=65486。然后对100us中断次数计数10000次,就是1秒钟。

完成这次实验我对定时器有了进一步的认识,也能更好的区分方式1和方式2的不同之处,收获很多。

实验二定时器实验

一、实验要求

用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转.

二、实验目的

1、学习8031内部计数器的使用和编程方法。

2、进一步掌握中断处理程序的编程方法。

三、实验电路及连线

四、实验说明

1、关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计

数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器。

2、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置

定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

3、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振

荡器周期。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷6MHZ=2uS

(256-定时常数)×2uS=100us

定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟.

4、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键

作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

5、对于80C196,与定时器有关的寄存器为IOC1.2和INT-MASK。IOC1.2为定时器1

溢出中断允许/禁止位。INT-MASK的第0位为定时器溢出屏蔽位。

6、对于80C196,在设置中断定时常数时,要注意先设置窗口寄存器WSR,设置完常

数后,再恢复原WSR值。

五、实验框图

六、实验代码:

ORG 0000H

RESET: LJMP MAIN

相关文档
最新文档