⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51+Ҧ

📁 AT89C51汇编语言例子大全
💻
字号:
/***************************************************************************
标题:	定时器中断-秒表
效果:	按1键启动或按2键停止数码管做精确的秒计数
本店网站      http://xxdpj.taobao.com/
以芯换心  竭诚为您服务 您学习单片机的好帮手
近期本店有很多优惠活动 有空就进来看看吧
http://xxdpj.taobao.com/
技术支持QQ:412150384
说明:	板使用12M晶振
******************************************************************************/
;脚功能定义
	SMG_q EQU P1.0	;定义数码管阳级控制脚,千位
	SMG_b EQU P1.1	;定义数码管阳级控制脚,百位
	SMG_s EQU P1.2	;定义数码管阳级控制脚,十位
	SMG_g EQU P1.3	;定义数码管阳级控制脚,个位	
	KEY1 EQU P3.7	;定义按键1
	KEY2 EQU P3.6	;定义按键2
	
;定义数据RAM空间
	LMS EQU 37H	;定义一个变量存放计数值毫秒
	LMIAO EQU 38H	;定义一个变量存放计数值秒
;数据存放
ORG 0100
TABLE:	DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H	
			;表:共阳数码管 0-9 

ORG 0000H
LJMP MAIN
ORG 000BH	;中断入口
LJMP TIMER

ORG 0200H
MAIN:	MOV TMOD,#01H	;设置定时器1为1模式,即16位计算模式
	MOV TH0,#0D8H	;给计数寄存器赋值,10毫秒时间
	MOV TL0,#0F0H
	MOV IE,#82H	;开总中断和T0中断
	CLR TR0		;
	CLR A
	MOV LMS,A	;计数缓冲清0
	MOV LMIAO,A
M01:	JB KEY1,M02	;按下1键启动计数
	CLR A
	MOV LMS,A
	MOV LMIAO,A	;
	SETB TR0	;
	SJMP M1
M02:	JB KEY2,M1	;按下2键停止计数
	CLR TR0		;
M1:	MOV A,LMS
	CJNE A,#100,M2	;以10毫秒计数,100次即为1秒
	MOV LMS,#0
	MOV A,LMIAO	;
	INC A
	MOV LMIAO,A	;
	CJNE A,#100,M2	;如果加到100秒,则清0
	MOV LMIAO,#0
M2:	LCALL DISPLAY	;显示
	LJMP M01	


TIMER:	INC LMS		;定时中断产生,以10毫秒计数加1
	MOV TH0,#0D8H	;重新装入定时器值10毫秒
	MOV TL0,#0F0H
	RETI		


DISPLAY:MOV DPTR,#TABLE	;数码管显示子程序
	MOV A,LMIAO	;
	MOV B,#10
	DIV AB 
	CLR SMG_q	;千位数码管
	MOVC A,@A+DPTR	;
	MOV P0,A
	LCALL DELAY	;
	MOV P0,#0FFH	;
	SETB SMG_q	;

	CLR SMG_b	;百位数码管
	MOV A,B		;
	MOVC A,@A+DPTR	;
	ANL A,#0X7F	;加入小数点
	MOV P0,A
	LCALL DELAY	;
	MOV P0,#0FFH	;
	SETB SMG_b	;

	MOV A,LMS	;
	MOV B,#10
	DIV AB 
	CLR SMG_s	;十位数码管
	MOVC A,@A+DPTR	;
	MOV P0,A
	LCALL DELAY	;
	MOV P0,#0FFH	;
	SETB SMG_s	;

	CLR SMG_g	;个位数码管
	MOV A,B		;
	MOVC A,@A+DPTR	;
	MOV P0,A
	LCALL DELAY	;
	MOV P0,#0FFH	;
	SETB SMG_g	;
	RET

DELAY:	MOV R7,#10	;延时子程序
	DJNZ R7,$
	RET
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -