📄 10.sdi
字号:
,,, ORG 0000H
0000,01 30,, AJMP START
,,, ORG 0003H ;INT0中断处理程序入口地址
0003,01 5C,, AJMP EXTINT0 ;跳转到外部中断0程序EXINT0
,,, ORG 0013H ;INT1中断处理程序入口地址
0013,01 69,, AJMP EXTINT1 ;跳转到外部中断1程序EXINT1
,,, ORG 0030H
0030,75 81 60,START,START: MOV SP,#60H ;设置堆栈
0033,D2 AA,, SETB EX1 ;开外部中断1
0035,D2 A8,, SETB EX0 ;开外部中断0
0037,D2 AF,, SETB EA ;开总中断
0039,D2 8A,, SETB IT1 ;外部中断1由下降沿触发
003B,D2 88,, SETB IT0 ;外部中断0由下降沿触发
003D,74 FF,, MOV A,#0FFH ;A初始化
003F,C3,, CLR C
0040,C2 00,, CLR 20H.0 ;按键key0标志位
0042,C2 01,, CLR 20H.1 ;按键key1标志位
0044,,NEXT,NEXT:
0044,20 00 05,, JB 20H.0,KEY0 ;判断key0被按下
0047,20 01 0A,, JB 20H.1,KEY1 ;判断key1被按下
004A,01 44,, AJMP NEXT ;循环输出
004C,13,key0,key0: RRC A ;带c位循环右移
004D,F5 A0,, MOV P2,A ;将A中的数值输出到P2口
004F,12 00 76,, CALL DELAY ;调用延时子程序
0052,01 44,, AJMP NEXT ;循环输出
0054,33,key1,key1: RLC A ;带c位循环左移
0055,F5 A0,, MOV P2,A ;将A中的数值输出到P2口
0057,12 00 76,, CALL DELAY ;调用延时子程序
005A,01 44,, AJMP NEXT ;循环输出
,,, ; 以下是外部中断0服务程序
005C,C0 E0,EXTINT0,EXTINT0: PUSH ACC ;将ACC的值存入堆栈保存
005E,C0 D0,, PUSH PSW ;将PSW的值存入堆栈保存
0060,D2 00,, SETB 20H.0 ;key0按下置标志位
0062,C2 01,, CLR 20H.1
0064,D0 D0,, POP PSW ;从堆栈取回PSW的值
0066,D0 E0,, POP ACC ;从堆栈取回A的值
0068,32,, RETI ;返回主程序
,,, ; 以下是外部中断1服务程序
0069,C0 E0,EXTINT1,EXTINT1: PUSH ACC ;将ACC的值存入堆栈保存
006B,C0 D0,, PUSH PSW ;将PSW的值存入堆栈保存
006D,D2 01,, SETB 20H.1 ;key1按下置标志位
006F,C2 00,, CLR 20H.0
0071,D0 D0,, POP PSW ;从堆栈取回PSW的值
0073,D0 E0,, POP ACC ;从堆栈取回A的值
0075,32,, RETI ;返回主程序
,,, ;以下延时子程序
0076,C0 E0,DELAY,DELAY: PUSH ACC
0078,C0 D0,, PUSH PSW
007A,7F FA,, MOV R7,#250
007C,7E FA,DE1,DE1: MOV R6,#250
007E,DE FE,DE2,DE2: DJNZ R6,DE2
0080,DF FA,, DJNZ R7,DE1
0082,D0 D0,, POP PSW
0084,D0 E0,, POP ACC
0086,22,, RET
000E,,, END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -