【单片机】实验四定时器

实验四 定时器

一、实验目的
1、理解单片机内部定时器的工作原理及使用方法
2、了解单片机定时中断程序的编写和调试方法
3、掌握定时器的基本使用方法
二、实验设备(仪器)
PC 微机一台
三、实验原理
1、 单片机定时器的工原理
MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。
工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)×12=1us 加1。
工作于计数器方式时,对P3.4 或P3.5 管脚的负跳变(1→0)计数。它在每个机器周期的S5P2 时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,计数器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24。
特殊功能寄存器TMOD 用于定时器/计数器的方式控制。高4 位用于设置T1,低4 位用于设置T0。如图4-7所示。
在这里插入图片描述
图4-7 定时器模式控制字格式
TCON 寄存器用于定时器的计数控制和中断标志。如图4-8所示。
在这里插入图片描述
图4-8 定时控制寄存器数据格式
编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。
四、实验内容及步骤

编写一个秒表程序,秒表有两个开关,其一为复位开关,其二为计数启停开关。
1、用Protues设计出外部中断计数器的电路原理图,单片机选用AT89C51,P2口接LED字段a~h,P1口接位选,INTO与INT1接单次脉冲输出端。
2、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着编写外部中断计数器.ASM源程序,进行编译,直到编译无误,生成HEX文件。
3、将HEX文件上载到Protues电路原理图的AT89C51中,并仿真成功。
4、实验电路功能,按动计数启停开关,控制秒表启停;按动复位开关,秒表显示清零。2个LED数码管(个位与十位)显示秒表值。
在这里插入图片描述

五、proteus工程原理图
在这里插入图片描述
实现功能
<1>按下计数启停开关,实现计数或计数暂停
在这里插入图片描述
<2>按下复位开关,计数清零
在这里插入图片描述
源代码

ORG 	0000H
		LJMP	START
		ORG		0003H					;外部中断0入口向量	
		LJMP	INT_E0
		ORG		000BH					;定时器0中断入口
		LJMP	INT_T0
		ORG		0013H					;外部中断1入口向量	
		LJMP	INT_E1
START: 	
		SETB EX0						;中断工作方式设置
		SETB IT0
    	SETB ET0   		
		SETB EX1						;中断工作方式设置
		MOV 	TMOD,#01H					;设置定时器0工作方式
		MOV 	TH0,#60   					;定时50毫秒(12M时钟)
		MOV 	TL0,#176	
		MOV 	R0,#00H
		MOV 	R1,#00H
		MOV 	R2,#00H	
        SETB 	EA
DISP:
		MOV DPTR,#TABLE
		CJNE R0,#20,LED1
		INC R1
        MOV R0,#00H
LED1:		;显示第一位
		CJNE R1,#0AH,LED1_DISP
        INC R2
		MOV R1,#00H
LED1_DISP:		
		MOV A,R1
		MOVC A,@A+DPTR 
		MOV P2,#01H
		MOV P1,A
		LCALL DELAY
LED2:              ;显示第二位
		CJNE R2,#0AH,LED2_DISP
		MOV R2,#00H	
LED2_DISP:
		MOV A,R2
		MOVC A,@A+DPTR 
		MOV P2,#02H
		MOV P1,A
	    LCALL DELAY
		LJMP	DISP	
DELAY:
		MOV R7,#0FFH
		DJNZ R7,$
                   RET
INT_E0:	
		CPL TR0							;定时器开/关转换
		RETI		
							
INT_T0:		INC R0
		MOV 	TH0,#60						;定时50毫秒
		MOV 	TL0,#176					
		RETI
INT_E1:	
		MOV R0,#00H
		MOV R1,#00H
		MOV R2,#00H
		CLR TR0
		RETI			
TABLE: 		DB 	3FH,06H,5BH,4FH,66H
		DB	6DH,7DH,07H,7FH,6FH
		END

工程文件:
https://download.csdn.net/download/qq_42253057/18810276

  • 3
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值