📄 t_int0.asm
字号:
;********************************************************************************
;* 标题:北京启东微芯LJD-SY-5100单片机实验系统演示程序 *
;* 文件:T_INT0.ASM *
;* 日期: 2005-7-5 *
;* 版本: 1.0 *
;* 作者:启东微芯 *
;* 网站: http://www.LJD-2008.COM *
;********************************************************************************
;* 描述: *
;* 没有中断时,4个灯以闪烁为主,响应中断后则以广告灯的形式显示 *
;* 由于采用下降沿触发,所以对于中断有一次记忆功能 *
;* *
;* *
;********************************************************************************
;* 【版权】 Copyright(C)微芯科技 http://www.ljd-2008.com All Rights Reserved *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
;*******************************************************************************/
TIMER0 EQU 30H
TIMER1 EQU 31H
;;====================================================================
ORG 0000H
JMP START
ORG 0003H
JMP INTERRUPT_0
START : MOV SP,#60H ;设定堆栈区
MOV IE,#10000001B ;中断致能,EA=EX0=1
SETB IT0 ;设定外部中断0 为负缘触发
LOOP: MOV A,#11110000B
MOV P1,A ;从 P1 输出到LED
CALL DELAY500 ;延迟约 0.5 秒
MOV A,#00001111B
MOV P1,A ;从 P1 输出
CALL DELAY500 ;延迟约 0.5 秒
JMP LOOP
;====================================================================
INTERRUPT_0:
PUSH ACC
PUSH B
MOV B,#8 ;移动 8 次
MOV A,#11111110B ;单一灯向右移
LOOP1: MOV P1,A ;从 P1 输出到 LED
CALL DELAY500 ;延迟约 0.5 秒
RR A ;右旋一次
DJNZ B,LOOP1 ;移动 8 次了吗?
POP B
POP ACC
RETI
;--------------------------------------------------------------------
;延时子程序
DELAY: PUSH TIMER1; 延时TIMER1*1 ms for 12MHz
PUSH TIMER0
DELAY1: MOV TIMER0,#250 ;循环一次需要4个机器周期,时间为4*1μS
DELAY2: NOP ; 1个周期
NOP ; 1个周期
DJNZ TIMER0,DELAY2 ;2个周期
DJNZ TIMER1,DELAY1
POP TIMER0
POP TIMER1
RET
NOP;--------------------
DELAY01: NOP; 延时 1 ms
PUSH TIMER1
MOV TIMER1,#01H
LCALL DELAY
POP TIMER1
RET
NOP;--------------------
DELAY10: NOP; 延时 10 ms
PUSH TIMER1
MOV TIMER1,#10
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY100: NOP; 延时100 ms
PUSH TIMER1
MOV TIMER1,#100
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY250: NOP; 延时 250 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY500: NOP; 延时 500 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
DELAY1S: NOP; 延时 1 sec
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP;---------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -