80C51
第一题:
中断方式:
ORG 0000H ;主程序起始地址
AJMP START ;跳至主程序START
ORG 0003H ;INT0中断子程序起始地址 AJMP SA2 ;跳至INT0中断子程序SA2
ORG 0013H ;INT1中断子程序起始地址 AJMP SA1 ;跳至INT1中断子程序SA1
START:
MOV IE,#10000101B;INT0
、INT1中断使能
MOV IP,#00000100B ;INT1中断优先
MOV TCON,#00000000B;INT0
、INT1为电平触发
MOV SP,#70H ;设定堆栈在(70H)
MOV A,#FH ;P1点亮
MOV P1,A
ACALL DELAY2 ;延迟2秒
MOV A,#0H ;P1熄灭
MOV P1,A
LOOP:
AJMP LOOP ;重复循环直到中断
SA1:
MOV A,#1H ;P1点亮一个
MOV P1,A
ACALL DELAY1 ;延迟1秒
RL A ;循环左移,P1点亮下一个
MOV P1,A
ACALL DELAY1 ;延迟1秒,中断自动循环
RET
SA2:
MOV A,#FH ;P1点亮全部
MOV P1,A
ACALL DELAY1 ;延迟1秒
MOV A,#FH ;P1熄灭全部
MOV P1,A
ACALL DELAY1 ;延迟1秒,中断自动循环
RET
DELAY2S:MOV R7,#10
D1: MOV R6,#200
D2: MOV R5,#250
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET
DELAY1S:MOV R7,#5
D1: MOV R6,#200
D2: MOV R5,#250
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET
轮询方式:
ORG 0000H ;主程序起始地址
AJMP START ;跳至主程序START
START:
MOV SP,#70H ;设定堆栈在(70H) MOV A,#FH ;P1点亮
MOV P1,A
ACALL DELAY2 ;延迟2秒
MOV A,#0H ;P1熄灭
MOV P1,A
LOOP: ;重复循环
MOV A,P3
ANL A,#8H ;读取P3.3
JNZ SKIP1
ACALL SA1 ;如果是低电平,跳转到SA1
SKIP1:
MOV A,P3
ANL A,#4H ;读取P3.2
JNZ SKIP2
ACALL SA2 ;如果是低电平,跳转到SA2
SKIP2:
AJMP LOOP
SA1:
MOV A,#1H ;P1点亮一个
MOV P1,A
ACALL DELAY1 ;延迟1秒
RL A ;循环左移,P1点亮下一个
MOV P1,A
ACALL DELAY1 ;延迟1秒,中断自动循环
RET
SA2:
MOV A,#FH ;P1点亮全部
MOV P1,A
ACALL DELAY1 ;延迟1秒
MOV A,#FH ;P1熄灭全部
MOV P1,A
ACALL DELAY1 ;延迟1秒,中断自动循环
RET
DELAY2S:MOV R7,#10
D1: MOV R6,#200
D2: MOV R5,#250
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET
DELAY1S:MOV R7,#5
D1: MOV R6,#200
D2: MOV R5,#250
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET
第二题:
ORG 0000H ;主程序起始地址
AJMP START ;跳至主程序START
ORG 0003H ;INT0中断子程序起始地址 AJMP OFF ;跳至INT0中断子程序OFF
ORG 0013H ;INT1中断子程序起始地址 AJMP PROC ;跳至INT1中断子程序PROC
START:
MOV IE,#10000101B;INT0
、INT1中断使能
MOV IP,#00000100B ;INT1中断优先
MOV TCON,#00000000B;INT0
、INT1为电平触发
MOV SP,#70H ;设定堆栈在(70H)
OFF:
MOV A,#80H
MOV P2,A ;P2全部熄灭,除了停止位
READY:
MOV A,P1 ;读取P1,0
ANL A,#01H
JNZ READY ;循环直到按下SA1
ON:
MOV A,#40H
MOV P2,A ;P2全部熄灭,除了开始位
LOOP:
AJMP LOOP ;重复循环直到中断
PROC: ;按照工序状态P4,点亮LED灯P2
MOV A,P4
MOV B,P2
ANL A,3FH ;复制高电平,首位要置零
ORL B,A ;然后再用或,复制高电平
ORL A,C0H ;复制低电平,首位要置一
ANL B,A ;然后再用与,复制低电平
MOV P2,B
RET