51单片机外部中断INT0实例(汇编程序)

;普中51开发板
;单片机的P3.2(INT0)引脚与按键K3脚连接
;用汇编语言实现:按一次K1外部中断INT0响应一次,LED显示值加1(十进制),
;前提是共阴数码LED第一位,需要设定,由P0口控制。
		ORG 0000H
		LJMP START
		ORG 0003H
		LJMP INTT0
		ORG 0600H
START: 	SETB EA
		SETB EX0 ; 打开外部中断0
		SETB IT0 ; 跳变沿出发方式(下降沿)	这个方法比较稳定
		;CLR IT0 ; 令中断0为电平触发,这个方式需要有延时程序,
		;否则,单片机处理速度快,按一下按键,
		;已经处理了很多个低电平中断了。
		CLR P2.2  ;段位选择第一位
		CLR P2.3
		CLR P2.4
CLR1:	MOV R0,#00H

DISPLAY: MOV DPTR,#TAB	;给字形表的初地址
		MOV A,R0	;将要显示的数给A
		;/////////////////////////
		MOV B, A   ;save a value
		CLR C
		SUBB A, #10H	;如果已计数到15,说明一次循环结束
		MOV A, B   ;load a value
		JNC CLR1   ;C=1,重新开始,R0=00H,若等于0,回display

		MOVC A,@A+DPTR ;在字形表中取数放到A
		MOV P0,A	;假设是P0口输出要显示的数据把A放到P0中

		
		SJMP DISPLAY ;循环显示等待中断

INTT0:	INC R0	;中断中有按键着加1
		RETI
TAB:	DB 3FH,06H,5BH,4FH,66H ;字形表0-15
		DB 6DH,7DH,07H,7FH,6FH
		DB 77H,7CH,39H,5EH,79H,71H
		END

 

你可能感兴趣的:(单片机)