找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 982|回复: 0
打印 上一主题 下一主题
收起左侧

单片机外中断计数2位数码管显示 反汇编程序注释

[复制链接]
跳转到指定楼层
楼主
外中断计数2位数码管显示

P3.2引脚  T0  计数
P3.6引脚  低电平  显示十位
P3.7引脚  低电平  显示个位

0000  020006   LJMP 0006H        ;16位长转移
0003  0200D0   LJMP 00D0H        ;16位长转移    中断
▲ 0000H 16位长转移
0006  787F    MOV R0, #7FH      ;00H - 7FH  清0
0008  E4     CLR A            ;A 清0
▲ 000AH 转移
0009  F6     MOV @R0, A         ;A 送间接RAM
000A  D8FD    DJNZ R0, 0009H     ;寄存器减1 不为0 转移
000C  758112   MOV 81H, #12H     ;堆栈指针
000F  02004D   LJMP 004DH        ;16位长转移
▲ 0054H 转移
0012  0200E3   LJMP 00E3H        ;16位长转移
▲ 006BH  转移   
0015  E4     CLR A            ;A 清0
0016  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0017  A3     INC  DPTR         ;数据指针加1
0018  F8     MOV  R0, A        ;A 送寄存器
▲ 0023H  转移
0019  E4     CLR A            ;A 清0
001A  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
001B  A3     INC  DPTR         ;数据指针加1
001C  4003    JC  0021H        ;若A=0 则转移
001E  F6     MOV  @R0, A       ;A 送间接RAM
001F  8001    SJMP 0022H        ;短转移
▲ 001CH  转移
0021  F2     MOVX @R0, A       ;A 送外部数据(8位地址)
▲ 001FH  短转移
0022  08     INC  R0          ;寄存器加1
0023  DFF4    DJNZ R7, 0019H    ;寄存器减1 不为0 转移
0025  8029    SJMP 0050H        ;短转移
▲ 006DH  转移    ▲ 0041H 转移
0027  E4     CLR A            ;A 清0
0028  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0029  A3     INC  DPTR         ;数据指针加1
002A  F8     MOV  R0, A        ;A 送寄存器
002B  5407    ANL  A, #07H      ;立即数“与”到A
002D  240C    ADD  A, #0CH      ;立即数加到A
002F  C8     XCH  A, R0        ;寄存器与A交换
0030  C3     CLR  C            ;进位位清0
0031  33     RLC  A            ;A 带进位左移一位
0032  C4     SWAP A            ;A 高低四位交换位置
0033  540F    ANL  A, #0FH      ;立即数“与”到A
0035  4420    ORL  A, #20H      ;立即数“或”到A
0037  C8     XCH  A, R0        ;寄存器与A交换
0038  83     MOVC A, @A+PC     ;A+PC寻址程序存贮字节送A
0039  4004    JC  003FH        ;若A=0 则转移
003B  F4     CPL  A            ;A 求反码
003C  56     ANL  A, @R0       ;间接RAM “与”到A
003D  8001    SJMP 0040H        ;短转移
003F  46     ORL  A, @R0       ;间接RAM“或”到A
▲ 003DH 短转移
0040  F6     MOV  @R0, A       ;A 送间接RAM
0041  DFE4    DJNZ R7, 0027H    ;寄存器减1 不为0 转移
0043  800B    SJMP 0050H        ;短转移

0045  01 02 04 08 10 20 40 80
▲ 000FH 16位长转移
004D  9000F3   MOV DPTR,#00F3H   ;16位常数送数据指针
▲ 0090H 短转移   ▲ 0043H 短转移   ▲ 0025H  短转移
0050  E4     CLR A            ;A 清0
0051  7E01    MOV  R6, #01H     ;立即数送寄存器
0053  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0054  60BC    JZ  0012H        ;若A=0 则转移
0056  A3     INC  DPTR         ;数据指针加1
0057  FF     MOV  R7, A        ;A 送寄存器
0058  543F    ANL  A, #3FH      ;立即数“与”到A
005A  30E509   JNB  0E5H, 0066H  ;若直接位=0 则转移
005D  541F    ANL  A, #1FH      ;立即数“与”到A
005F  FE     MOV  R6, A        ;A 送寄存器
0060  E4     CLR A            ;A 清0
0061  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0062  A3     INC  DPTR         ;数据指针加1
0063  6001    JZ  0066H        ;若A=0 则转移
0065  0E     INC  R6          ;寄存器加1
▲ 005AH 转移    ▲ 0063H 转移
0066  CF     XCH  A, R7        ;寄存器与A交换
0067  54C0    ANL  A, #0C0H     ;立即数“与”到A
0069  25E0    ADD  A, 0E0H      ;直接字节加到A
006B  60A8    JZ  0015H        ;若A=0 则转移
006D  40B8    JC  0027H        ;若A=0 则转移
006F  E4     CLR A            ;A 清0
0070  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0071  A3     INC  DPTR         ;数据指针加1
0072  FA     MOV  R2, A        ;A 送寄存器
0073  E4     CLR A            ;A 清0
0074  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0075  A3     INC  DPTR         ;数据指针加1
0076  F8     MOV  R0, A        ;A 送寄存器
▲ 008CH 转移   ▲ 008EH 转移
0077  E4     CLR A            ;A 清0
0078  93     MOVC A, @A+DPTR    ;A+DPTR寻址程序存贮字节送A
0079  A3     INC  DPTR         ;数据指针加1
007A  C8     XCH  A, R0        ;寄存器与A交换
007B  C582    XCH  A, 82H       ;DPL与A交换
007D  C8     XCH  A, R0        ;寄存器与A交换
007E  CA     XCH  A, R2        ;寄存器与A交换
007F  C583    XCH  A, 83H       ;DPH与A交换
0081  CA     XCH  A, R2        ;寄存器与A交换
0082  F0     MOVX @DPTR, A     ;A 送外部数据(16位地址)
0083  A3     INC  DPTR         ;数据指针加1
0084  C8     XCH  A, R0        ;寄存器与A交换
0085  C582    XCH  A, 82H       ;DPL与A交换
0087  C8     XCH  A, R0        ;寄存器与A交换
0088  CA     XCH  A, R2        ;寄存器与A交换
0089  C583    XCH  A, 83H       ;DPH与A交换
008B  CA     XCH  A, R2        ;寄存器与A交换
008C  DFE9    DJNZ R7, 0077H    ;寄存器减1 不为0 转移
008E  DEE7    DJNZ R6, 0077H    ;寄存器减1 不为0 转移
0090  80BE    SJMP 0050H        ;短转移
▲ 00EEH 调用
0092  AE07    MOV  R6, 07H      ;直接字节送寄存器
0094  75A0BF   MOV  0A0H, #0BFH  ;立即数送直接字节
0097  EE     MOV  A, R6        ;寄存器送A
0098  75F00A   MOV  0F0H, #0AH   ;立即数送直接字节
009B  84     DIV  AB           ;A 被B除
009C  2408    ADD  A, #08H      ;立即数加到A
009E  1200BC   LCALL 00BCH        ;子程序调用
00A1  75A07F   MOV  0A0H, #7FH   ;立即数送直接字节
00A4  EE     MOV  A, R6        ;寄存器送A
00A5  75F00A   MOV  0F0H, #0AH   ;立即数送直接字节
00A8  84     DIV  AB           ;A 被B除
00A9  7408    MOV  A, #08H      ;立即数送A
00AB  25F0    ADD  A, 0F0H      ;直接字节加到A
00AD  1200BC   LCALL 00BCH        ;子程序调用
00B0  75A0FF   MOV  0A0H, #0FFH  ;立即数送直接字节
00B3  7580FF   MOV  80H, #0FFH   ;立即数送直接字节
00B6  1200C3   LCALL 00C3H        ;子程序调用
00B9  0200C9   LJMP 00C9H       ;16位长转移
▲ 009EH 调用    ▲ 00ADH 调用
00BC  F8     MOV  R0, A        ;A 送寄存器
00BD  E6     MOV  A, @R0       ;间接RAM送A
00BE  F580    MOV  80H, A       ;A 送直接字节    P0口
00C0  1200C9   LCALL 00C9H        ;子程序调用
▲ 00B6H 调用
00C3  1200C9   LCALL 00C9H        ;子程序调用
00C6  1200C9   LCALL 00C9H        ;子程序调用
▲ 00B9H 长转移  ▲ 00C0H 调用  ▲ 00C3H 调用  ▲ 00C6H 调用
00C9  E4     CLR A            ;A 清0
00CA  FF     MOV  R7, A        ;A 送寄存器
▲ 00CCH 转移
00CB  0F     INC  R7          ;寄存器加1
00CC  BFC8FC   CJNE R7, #0C8H, 00CBH ;立即数与寄存器比较不等转移
00CF  22     RET               ;子程序调用返回
▲ 0003H 16位长转移    中断
00D0  C0E0    PUSH 0E0H         ;直接字节进栈,SP加1
00D2  C0D0    PUSH 0D0H         ;直接字节进栈,SP加1
00D4  0512    INC  12H          ;直接字节加1
00D6  E512    MOV  A, 12H       ;直接字节送A
00D8  B46403   CJNE A, #64H, 00DEH ;立即数与A比较,不等转移
00DB  751200   MOV  12H, #00H    ;立即数送直接字节
▲ 00D8H 转移
00DE  D0D0    POP  0D0H         ;直接字节出栈,SP减1
00E0  D0E0    POP  0E0H         ;直接字节出栈,SP减1
00E2  32     RETI              ;中断程序调用返回
▲ 0012H 长转移
00E3  D2AF    SETB 0AFH         ;直接位置1
00E5  D2A8    SETB 0A8H         ;直接位置1
00E7  D288    SETB 88H          ;直接位置1
00E9  E4     CLR A            ;A 清0
00EA  F512    MOV  12H, A       ;A 送直接字节
▲ 00F1H 短转移
00EC  AF12    MOV  R7, 12H      ;直接字节送寄存器
00EE  120092   LCALL 0092H        ;子程序调用
00F1  80F9    SJMP 00ECH        ;短转移

00F3  0A 08 C0 F9 A4 B0 99 92 82 F8 80 90 00



C语言代码下载: 外中断计数2位数码管显示.rar (8.14 KB, 下载次数: 4)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表