实验二定时器实验.docx

上传人:b****1 文档编号:1349694 上传时间:2022-10-21 格式:DOCX 页数:9 大小:136.71KB
下载 相关 举报
实验二定时器实验.docx_第1页
第1页 / 共9页
实验二定时器实验.docx_第2页
第2页 / 共9页
实验二定时器实验.docx_第3页
第3页 / 共9页
实验二定时器实验.docx_第4页
第4页 / 共9页
实验二定时器实验.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

实验二定时器实验.docx

《实验二定时器实验.docx》由会员分享,可在线阅读,更多相关《实验二定时器实验.docx(9页珍藏版)》请在冰豆网上搜索。

实验二定时器实验.docx

实验二定时器实验

实验二定时器实验

一、实验要求

用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值。

五、实验框图

六、实验代码:

ORG0000H

RESET:

LJMPMAIN

ORG000BH定时器T0入口地址

LJMPIT0P跳转到IT0P中断子程序

ORG1000H主程序地址

MAIN:

MOVSP,#60H设置堆栈指针

MOVR1,#64H将100赋给R1

MOVR2,#64H将100赋给R2

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

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

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

SETBTR0启动定时器T0

SETBET0允许定时器T0溢出中断

SETBEA总中断允许

HERE:

SJMPHERE循环等待

IT0P:

DJNZR1,LOOP减1不为零跳转到LOOP

MOVR1,#64HR1赋值100

DJNZR2,LOOP减1不为零跳转LOOP

MOVR2,#64HR2赋值100

CLREA关中断

PUSHACC保护现场

PUSHPSW

SETBEA开中断

CPLP1.0P1.0取反

CPLEA关中断

POPPSW恢复现场

POPACC

SETBEA开中断

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值。

五、实验框图

六、实验代码:

ORG0000H

RESET:

LJMPMAIN

ORG000BH定时器T0入口地址

LJMPIT0P跳转到IT0P中断子程序

ORG1000H主程序地址

MAIN:

MOVSP,#60H设置堆栈指针

MOVR1,#64H将100赋给R1

MOVR2,#64H将100赋给R2

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

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

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

SETBTR0启动定时器T0

SETBET0允许定时器T0溢出中断

SETBEA总中断允许

HERE:

SJMPHERE循环等待

IT0P:

DJNZR1,LOOP减1不为零跳转到LOOP

MOVR1,#64HR1赋值100

DJNZR2,LOOP减1不为零跳转LOOP

MOVR2,#64HR2赋值100

CLREA关中断

PUSHACC保护现场

PUSHPSW

SETBEA开中断

CPLP1.0P1.0取反

CPLEA关中断

POPPSW恢复现场

POPACC

SETBEA开中断

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的不同之处,收获很多。

一、实验要求

用单次脉冲申请中断,在中断处理程序中对输出信号进行反转。

二、实验目的

1、学习外部中断技术的基本使用方法。

2、学习中断处理程序的编程方法。

3、实验电路及连线

四、实验说明

中断服务程序的关键是:

1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。

2.必须在中断程序中设定是否允许中断重入,即设置EXO位。

3.对于80C196,要选择相应的中断源,并设置中断屏蔽寄存器的相应位。

本例中使用了INTO中断(80C196为EXTINT中断),一般中断程序进入时应保护PSW,CC以及中断程序使用但非其专用的寄存器。

本例的中断程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。

另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。

本例中没有涉及这种情况。

INTO(P32)端(80C196为EINT端)接单次脉冲发生器。

P1.0接LED灯,以查看信号反转.

五、实验框图

六、实验代码:

ORG  0000H   起始地址

LJMP  MAIN    跳转到主程序  

ORG  0003H    外部0中断入口地址

LJMP  INT    跳转到中断服务程序

ORG  0100H    主程序地址

MAIN:

 SETB  EX0    允许外部中断0中断

SETB  IT0外部中断0为跳沿触发

SETB  EA总中断允许

SJMP  $    循环等待

INT:

  CPL  P1.0    求反  

RETI      循环中断返回

END

七、实验总结:

通过这次实验我学会了用单次脉冲申请中断,在中断处理程序中对输出信号进行反转的设计。

刚开始的时候对基础知识掌握的不牢靠。

没有举一反三,只是针对这个实验复习的知识。

在老师的验收提问下,认识到了自己这方面的不足。

0003H是外部中断0的入口地址。

该处可以该为0013H,下面的  SETBEX0SETBIT0要改为SETB EX1SETB IT1,这是采用的外部中断1中断。

同时连接实验箱做仿真实验时单脉冲输出接P33端口。

老师验收提问的方式让我认识到自己的不足之处,查漏补缺,收获很多。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1