8051单片机外部中断编程实例

练习一下对外部中断有关的寄存器的控制,代码如下:

;====================================================================
; Main.asm file generated by New Project wizard
;
; Created:   周日 4月 29 2018
; Processor: AT89C51
; Compiler:  ASEM-51 (Proteus)
;====================================================================

$NOMOD51
$INCLUDE (8051.MCU)

;====================================================================
; DEFINITIONS
;====================================================================

;====================================================================
; VARIABLES
;====================================================================

;====================================================================
; RESET and INTERRUPT VECTORS
;====================================================================

      ; Reset Vector
      org   0000h
      jmp   Start
	  org   0003h
	  ljmp   INT0_
;====================================================================
; CODE SEGMENT
;====================================================================

      org   0100h
Start:	
      ; Write your code here
		MOV A,#00H
		MOV SP,#50H
LOOP1:	
		MOV TCON,#01H
		MOV IE,#81H
		MOV P1,A
		INC A
		LCALL DELAY
		SJMP LOOP1
INT0_:
		PUSH ACC
		MOV B,#3
LOOP2:
		MOV P1,#0FFH
		LCALL DELAY
		MOV P1,#00H
		LCALL DELAY
		DJNZ B,LOOP2
		POP ACC
		RETI
		
DELAY:
		MOV R4,#0ffH
DELAY2:	MOV R3,#0ffH
DELAY1:
		NOP
		NOP
		DJNZ R3,DELAY1
		DJNZ R4,DELAY2
		RET
Loop:	
      jmp Loop

;====================================================================
      END

下面给出仿真设计的电路图。



编程中注意循环的操作以及现场保护和现场还原,否则在中断服务子程序执行完后,回不到当初的状态。


猜你喜欢

转载自blog.csdn.net/zy010101/article/details/80142792