⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10.sdi

📁 我的大学单片机课程案例和ppt
💻 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 + -