失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 单片机--定时器/计数器实验

单片机--定时器/计数器实验

时间:2022-04-24 10:13:45

相关推荐

单片机--定时器/计数器实验

实验目的和任务

目的:利用“模块化单片机教学实验平台”,加深对单片机的中断系统的理解。

任务:利用单片机的中断系统完成程序设计。

实验内容

使用AT89S52单片机的定时器/计数器T0控制实验箱母板上的LED1每隔1秒点亮一次(即亮1秒,灭1秒,如此反复)。LED1的阴极与AT89S52单片机的P1.5引脚连接。(AT89S52单片机的T1中断入口也为001BH。)

实验过程和结果

①关掉实验箱电源。将CPU 板插接在JK1、JK2 上,注意CPU 板的插接方向。按照前面连接关系表将硬件连接好。

②将AT89S52 芯片插在CPU 板的CPU 插座上(不要插反)。母板上电。

③运行Keil 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立工程exp8.uV2,CPU 为AT89S52,不包含启动文件STARTUP.A51。

④把示例源程序exp8.asm 加入到工程exp8.uV2,并设置工程exp8.uV2 属性,将其晶振频率设置为11.0592MHz,选择输出可执行文件。

⑤构造(Build)工程exp8.uV2。

⑥通过PROGISP 烧写软件,利用ISP 下载线(见“模块化单片机教学实验平台配套的实验指导书1.3 节”)把HEX 文件下载到单片机中。

⑦下载成功后,观察母板上的LED1。

硬件连线:

扩展实验:使用AT89S52 单片机的定时器/计数器控制实验箱母板上的LED1 亮2 秒,灭1 秒,亮2 秒,灭1 秒,如此反复。LED1 的阴极与AT89S52 单片机的P1.5引脚连接。

实验心得

实验时使用进位标志位C为标志变量,导致程序错误。实验中使用特殊功能寄存器要考虑到是否会影响到程序的执行,最好避免使用特殊功能寄存器,以免产生意料外的情况。

附录(代码)

(1)基本实验

ORG 0000H

LJMP MAIN

ORG 001BH

LJMP ON

MAIN:

SETB ET1 ;打开中断分开关

SETB EA ;打开中断总开关

MOV R0,#0 ;初始化r0

MOV TMOD,#10H ;设置计时器模式

MOV TL1,#0B0H ;初始值低八位

MOV TH1,#03CH ;初始值低八位

MOV A,#60D ;设置初始A

SETB TR1 ;开始计时

LJMP $ ;

ON:

CJNE R0,#0,OF ;以R0判断灯是否点亮

DEC A ;A减一

CJNE A,#00H,J ;判断是否相同 不相同转移(结束)

CLR P1.5 ;点亮灯

MOV R0,#1 ;R0置位1

MOV TL1,#0B0H ;初始化计时器

MOV TH1,#03CH ;

MOV A,#60D ;设置时间

J:

RETI

OF:

DEC A

CJNE A,#00H,K

SETB P1.5 ;关闭灯

MOV R0,#0

MOV TL1,#0B0H

MOV TH1,#03CH

MOV A,#60D

K:

RETI

END

(2)扩展实验

ORG 0000H

LJMP MAIN ;除修改时间外与上个实验程序无异

ORG 001BH

LJMP ON

MAIN:

SETB ET1

SETB EA

MOV R0,#0

MOV TMOD,#10H

MOV TL1,#0B0H

MOV TH1,#03CH

MOV A,#20D ;修改所设计延迟从3S->1s

SETB TR1

LJMP $

ON:

CJNE R0,#0,OF

DEC A

CJNE A,#00H,J

CLR P1.5

MOV R0,#1

MOV TL1,#0B0H

MOV TH1,#03CH

MOV A,#40D ;修改所设计延迟从3S->2s

J:

RETI

OF:

DEC A

CJNE A,#00H,K

SETB P1.5

MOV R0,#0

MOV TL1,#0B0H

MOV TH1,#03CH

MOV A,#20D ;修改所设计延迟从3S->1s

K:

RETI

END

如果觉得《单片机--定时器/计数器实验》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。