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

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



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


转载于:https://www.cnblogs.com/zy666/p/9028265.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值