搜索
bottom↓
回复: 5

笙泉ISP 反汇编的原程序 反汇编 编译成功

[复制链接]

出0入0汤圆

发表于 2009-8-8 22:21:47 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_468929.rar(文件大小:43K) (原文件名:笙泉ISP下载协议.rar)

附件为反汇编得到的文件,再加上一个工程文件,编译成功,并与笙泉ISP的BIN比较,结果一样。相信这个东西很有参考价值。
本人才蔬学浅,只能加了点注解,这样大家可以容易分析这个文件。

初步分析发现,下载过程基本同版主分析的一样(版主确实利害)。只是有一点,就是串口是模拟出来的。所以可以达到很高的波特率、
估计STC的也是一样模拟串口。


下面是反汇编的原程序。在此多谢版主送在下简易PLC,无以为报。

;==========================================================================
;======================Power Disassembler for MCS-51=======================
;==========================================================================
;==========================================================================
;                      modify by foshan_lcy 20090807
;==========================================================================
;==========================================================================
;==========================================================================
Q0000:             SJMP  Q0002                        ;0000   80 00                ;JMP to Q0002
Q0002:             MOV   SP,#50H                      ;0002   75 81 50                ;
                   SETB  P3.0                         ;0005   D2 B0                ;set Rx        high
                   SETB  P3.1                         ;0007   D2 B1                ;set Tx high
                   ACALL Q0024                        ;0009   11 24                ;Call Q0024
                   JNB   20H.0,Q0016                  ;000B   30 00 08                ;如果直接20H址位為0,則轉移到Q0016
                   MOV   0E5H,#00H                    ;000E   75 E5 00                ;IFMT=#00H        ISP硬件無效
                   MOV   0E7H,#20H                    ;0011   75 E7 20                ;ISPCR=#20H 触發軟件复位
                   SJMP  $                            ;0014   80 FE                ;在此位置不停循環
Q0016:             ACALL Q0036                        ;0016   11 36
                   CLR   TR0                          ;0018   C2 8C                ;清TR0
                   CLR   TF0                          ;001A   C2 8D                ;清TF0
                   CLR   TI                           ;001C   C2 99                ;清TI
                   CLR   RI                           ;001E   C2 98                ;清RI
                   ACALL Q022D                        ;0020   51 2D
                   SJMP  $                            ;0022   80 FE
Q0024:             SETB  P3.0                         ;0024   D2 B0                ;set Rx        high
                   SETB  P3.1                         ;0026   D2 B1                ;set Tx high
                   CLR   20H.0                        ;0028   C2 00                ;20H址位清0
                   MOV   R0,#26H                      ;002A   78 26                ;寄存器R0=#26H
Q002C:             JB    P3.0,Q0033                   ;002C   20 B0 04                ;如果直接Rx為1﹐則轉移到Q0033----------->
                   NOP                                ;002F   00
                   DJNZ  R0,Q002C                     ;0030   D8 FA                ;寄存器R0減1,不為0則轉移到Q002c--------->這一段代碼用來delay一段時間
                   RET                                ;0032   22                ;--------------------------------------->以持續判斷Rx狀態
;==========================================================================
Q0033:             SETB  20H.0                        ;0033   D2 00                ;設置20H地址為1
                   RET                                ;0035   22                ;調用返回
;==========================================================================
Q0036:             MOV   TMOD,#12H                    ;0036   75 89 12                ;//T1 工作方式1 ,T0工作方式2用于Baudrate
                   MOV   R2,#16H                      ;0039   7A 16                ;寄存器R0=#16H
Q003B:             MOV   37H,#00H                     ;003B   75 37 00                ;地址37H值=#00H
                   MOV   31H,#77H                     ;003E   75 31 77                ;地址31H值=#77H
                   MOV   R7,#55H                      ;0041   7F 55                ;寄存器R7=#55H
                   ACALL Q01B5                        ;0043   31 B5                ;Call Q01B5
                   JB    P3.0,Q0054                   ;0045   20 B0 0C                ;如果直接Rx為1﹐則轉移到Q0054
                   ACALL Q03D4                        ;0048   71 D4
                   DJNZ  R2,Q003B                     ;004A   DA EF                ;寄存器R2減1,不為0則轉移到Q003B
                   MOV   0E5H,#00H                    ;004C   75 E5 00                ;IFMT=#00H        ISP硬件無效
                   MOV   0E7H,#20H                    ;004F   75 E7 20                ;ISPCR=#20H 触發軟件复位
                   SJMP  $                            ;0052   80 FE
Q0054:             MOV   R0,#0AH                      ;0054   78 0A                ;寄存器R0=#0AH
Q0056:             CLR   TR0                          ;0056   C2 8C                ;關閉T0
                   MOV   TMOD,#11H                    ;0058   75 89 11                ;//T1 工作方式1 ,T0工作方式1
                   MOV   TH0,#00H                     ;005B   75 8C 00                ;TH0=#00H
                   MOV   TL0,#00H                     ;005E   75 8A 00                ;TL0=#00H
                   CLR   TF0                          ;0061   C2 8D                ;關閉T0的溢出標志
                   SJMP  Q0067                        ;0063   80 02
                   AJMP  Q012E                        ;0065   21 2E
Q0067:             JB    P3.0,$                       ;0067   20 B0 FD                ;如果Rx為1﹐則轉移到指本條指令的起始位置
                   JNB   P3.0,$                       ;006A   30 B0 FD                   ;如果Rx為0﹐則轉移到指本條指令的起始位置
                   SETB  TR0                          ;006D   D2 8C                ;打開T0
                   JB    P3.0,$                       ;006F   20 B0 FD                ;如果Rx為1﹐則轉移到指本條指令的起始位置
                   JNB   P3.0,$                       ;0072   30 B0 FD                ;如果Rx為0﹐則轉移到指本條指令的起始位置
                   CLR   TR0                          ;0075   C2 8C                ;關閉T0
                   MOV   R7,#02H                      ;0077   7F 02                ;寄存器R7=#02H
Q0079:             CLR   C                            ;0079   C                        ;清進位
                   MOV   A,TH0                        ;007A   E5 8C
                   RRC   A                            ;007C   13                ;帶進位累加器循環右移
                   MOV   TH0,A                        ;007D   F5 8C
                   MOV   A,TL0                        ;007F   E5 8A
                   RRC   A                            ;0081   13                ;帶進位累加器循環右移
                   MOV   TL0,A                        ;0082   F5 8A
                   DJNZ  R7,Q0079                     ;0084   DF F3                ;寄存器R7減1,不為0則轉移到Q0079
                   CLR   C                            ;0086   C3                ;清進位
                   MOV   A,#00H                       ;0087   74 00
                   SUBB  A,TL0                        ;0089   95 8A                ;累加器減去寄存器(帶借位)
                   MOV   31H,A                        ;008B   F5 31
                   MOV   37H,TH0                      ;008D   85 8C 37
                   MOV   A,37H                        ;0090   E5 37
                   JNZ   Q009E                        ;0092   70 0A                ;累加器為1則轉移Q009E
                   MOV   36H,#00H                     ;0094   75 36 00
                   MOV   A,TL0                        ;0097   E5 8A
                   CLR   C                            ;0099   C3                ;清進位
                   SUBB  A,#08H                       ;009A   94 08
                   JC    Q00BB                        ;009C   40 1D
Q009E:             CLR   C                            ;009E   C3                ;清進位
                   MOV   A,TH0                        ;009F   E5 8C
                   RRC   A                            ;00A1   13                ;帶進位累加器循環右移
                   MOV   36H,A                        ;00A2   F5 36
                   MOV   A,TL0                        ;00A4   E5 8A
                   RRC   A                            ;00A6   13                ;帶進位累加器循環右移
                   MOV   30H,A                        ;00A7   F5 30
                   CLR   C                            ;00A9   C3                ;清進位
                   MOV   A,#00H                       ;00AA   74 00
                   SUBB  A,30H                        ;00AC   95 30
                   CLR   C                            ;00AE   C3                ;清進位
                   ADD   A,#03H                       ;00AF   24 03
                   MOV   30H,A                        ;00B1   F5 30
                   MOV   A,36H                        ;00B3   E5 36
                   ADDC  A,#00H                       ;00B5   34 00
                   MOV   36H,A                        ;00B7   F5 36
                   SJMP  Q00BE                        ;00B9   80 03
Q00BB:             MOV   30H,#0FEH                    ;00BB   75 30 FE
Q00BE:             MOV   TMOD,#12H                    ;00BE   75 89 12
                   MOV   A,37H                        ;00C1   E5 37
                   JZ    Q00DC                        ;00C3   60 17                ;累加器為0則轉移Q00DC
                   MOV   TH0,#00H                     ;00C5   75 8C 00
                   MOV   TL0,#00H                     ;00C8   75 8A 00
                   CLR   TF0                          ;00CB   C2 8D                ;清TF0
                   SETB  TR0                          ;00CD   D2 8C
                   MOV   R7,#10H                      ;00CF   7F 10
Q00D1:             MOV   R4,37H                       ;00D1   AC 37
Q00D3:             JNB   TF0,$                        ;00D3   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;00D6   C2 8D                ;清TF0
                   DJNZ  R4,Q00D3                     ;00D8   DC F9                ;寄存器R4減1,不為0﹐則轉移Q00D3
                   DJNZ  R7,Q00D1                     ;00DA   DF F5                ;寄存器R7減1,不為0﹐則轉移Q00D1
Q00DC:             MOV   TH0,31H                      ;00DC   85 31 8C
                   MOV   TL0,31H                      ;00DF   85 31 8A
                   CLR   TF0                          ;00E2   C2 8D                ;清TF0
                   SETB  TR0                          ;00E4   D2 8C
                   MOV   R7,#20H                      ;00E6   7F 20
Q00E8:             JNB   TF0,$                        ;00E8   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;00EB   C2 8D                ;清TF0
                   DJNZ  R7,Q00E8                     ;00ED   DF F9                ;寄存器R7減1,不為0則轉移到Q00E8
                   CLR   TR0                          ;00EF   C2 8C                ;清TR0
                   MOV   R7,#55H                      ;00F1   7F 55
                   ACALL Q01B5                        ;00F3   31 B5
                   MOV   R7,#0AAH                     ;00F5   7F AA
                   ACALL Q01B5                        ;00F7   31 B5
                   MOV   R7,#00H                      ;00F9   7F 00
                   ACALL Q01B5                        ;00FB   31 B5
                   MOV   R7,#0FFH                     ;00FD   7F FF
                   ACALL Q01B5                        ;00FF   31 B5
                   MOV   R7,#10H                      ;0101   7F 10
                   ACALL Q01B5                        ;0103   31 B5                                                       
                   MOV   R7,37H                       ;0105   AF 37
                   ACALL Q01B5                        ;0107   31 B5
                   MOV   R7,31H                       ;0109   AF 31                       
                   ACALL Q01B5                        ;010B   31 B5
                   MOV   0E4H,#01H                    ;010D   75 E4 01
                   MOV   R7,0E6H                      ;0110   AF E6
                   ACALL Q01B5                        ;0112   31 B5
                   MOV   0E4H,#00H                    ;0114   75 E4 00
                   MOV   R7,0E6H                      ;0117   AF E6
                   ACALL Q01B5                        ;0119   31 B5
                   ACALL Q013A                        ;011B   31 3A
                   CJNE  R7,#55H,Q012C                ;011D   BF 55 0C                ;比較寄存器R7和立即數#55H,不相等轉移Q012C
                   ACALL Q013A                        ;0120   31 3A                       
                   CJNE  R7,#0AAH,Q012E               ;0122   BF AA 09                ;比較寄存器R7和立即數#aaH,不相等轉移Q012E
                   ACALL Q03D4                        ;0125   71 D4
                   MOV   R7,#0FAH                     ;0127   7F FA
                   ACALL Q01B5                        ;0129   31 B5
                   RET                                ;012B   22
;==========================================================================
Q012C:             ACALL Q013A                        ;012C   31 3A
Q012E:             DJNZ  R0,Q0138                     ;012E   D8 08                ;寄存器R0減1,不為0則轉移到Q0138
                   MOV   0E5H,#00H                    ;0130   75 E5 00                ;IFMT=#00H        ISP硬件無效
                   MOV   0E7H,#20H                    ;0133   75 E7 20                ;ISPCR=#20H 触發軟件复位
                   SJMP  $                            ;0136   80 FE
Q0138:             AJMP  Q0056                        ;0138   01 56
Q013A:             MOV   A,37H                        ;013A   E5 37
                   JNZ   Q016D                        ;013C   70 2F                                               
                   MOV   R7,#08H                      ;013E   7F 08
                   CLR   TR0                          ;0140   C2 8C                ;清TR0
                   MOV   TH0,31H                      ;0142   85 31 8C
                   MOV   TL0,30H                      ;0145   85 30 8A
                   CLR   TF0                          ;0148   C2 8D                ;清TF0
                   NOP                                ;014A   00
                   JB    P3.0,$                       ;014B   20 B0 FD                ;如果Rx為1﹐則轉移到指本條指令的起始位置
                   SETB  TR0                          ;014E   D2 8C
                   JNB   TF0,$                        ;0150   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0153   C2 8D                        ;清TF0
Q0155:             JNB   TF0,$                        ;0155   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   MOV   C,P3.0                       ;0158   A2 B0
                   NOP                                ;015A   00
                   CLR   TF0                          ;015B   C2 8D                ;清TF0
                   RRC   A                            ;015D   13                ;帶進位累加器循環右移
                   NOP                                ;015E   00
                   DJNZ  R7,Q0155                     ;015F   DF F4                ;寄存器R7減1,不為0則轉移到Q0155
                   JNB   TF0,$                        ;0161   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0164   C2 8D                ;清TF0
                   CLR   TR0                          ;0166   C2 8C                ;清TR0
                   JNB   P3.0,$                       ;0168   30 B0 FD                ;如果Rx為0,則轉移到指本條指令的起始位置
                   MOV   R7,A                         ;016B   FF
                   RET                                ;016C   22
;==========================================================================
Q016D:             MOV   R7,#08H                      ;016D   7F 08
                   CLR   TR0                          ;016F   C2 8C                ;清TR0
                   CLR   TF0                          ;0171   C2 8D                ;清TF0
                   MOV   TH0,#00H                     ;0173   75 8C 00
                   MOV   TL0,#00H                     ;0176   75 8A 00
                   JB    P3.0,$                       ;0179   20 B0 FD                ;如果Rx為1﹐則轉移到指本條指令的起始位置
                   SETB  TR0                          ;017C   D2 8C
                   MOV   A,36H                        ;017E   E5 36
                   JZ    Q018A                        ;0180   60 08
                   MOV   R4,A                         ;0182   FC
Q0183:             JNB   TF0,$                        ;0183   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0186   C2 8D                ;清TF0
                   DJNZ  R4,Q0183                     ;0188   DC F9                ;寄存器R4減1,不為0則轉移到Q0183
Q018A:             MOV   TL0,30H                      ;018A   85 30 8A
                   JNB   TF0,$                        ;018D   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0190   C2 8D                ;清TF0
Q0192:             MOV   R4,37H                       ;0192   AC 37
Q0194:             JNB   TF0,$                        ;0194   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0197   C2 8D                ;清TF0
                   DJNZ  R4,Q0194                     ;0199   DC F9                ;寄存器R4減1,不為0則轉移到Q0194
                   MOV   TL0,31H                      ;019B   85 31 8A
                   JNB   TF0,$                        ;019E   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   MOV   C,P3.0                       ;01A1   A2 B0
                   CLR   TF0                          ;01A3   C2 8D                ;清TF0
                   RRC   A                            ;01A5   13                ;帶進位累加器循環右移
                   NOP                                ;01A6   00
                   DJNZ  R7,Q0192                     ;01A7   DF E9                ;寄存器R7減1,不為0則轉移到Q0192
                   JNB   TF0,$                        ;01A9   30 8D FD                ;如果TF0為0,則轉移到指本條指令的起始位置
                   CLR   TF0                          ;01AC   C2 8D                ;清TF0
                   CLR   TR0                          ;01AE   C2 8C                ;清TR0
                   JNB   P3.0,$                       ;01B0   30 B0 FD                ;如果Rx為0,則轉移到指本條指令的起始位置
                   MOV   R7,A                         ;01B3   FF
                   RET                                ;01B4   22
;==========================================================================
Q01B5:             MOV   A,37H                        ;01B5   E5 37                ;A=地址37H值=#00H
                   JNZ   Q01EF                        ;01B7   70 36                ;如果累加器為0﹐則轉移到Q01EF
                   MOV   A,R7                         ;01B9   EF                ;A=寄存器R7=#55H
                   MOV   R7,#09H                      ;01BA   7F 09                ;寄存器R7=#09H
                   MOV   TH0,31H                      ;01BC   85 31 8C                ;TH0=地址31H值#77H
                   MOV   TL0,31H                      ;01BF   85 31 8A                ;TL0=地址31H值#77H
                   CLR   TF0                          ;01C2   C2 8D                ;清0 定時器的溢出標志位
                   CLR   C                            ;01C4   C3                ;清進位
                   SETB  TR0                          ;01C5   D2 8C                ;啟動T0
Q01C7:             MOV   P3.1,C                       ;01C7   92 B1                ;set Tx low--------------------------------------->
                   RRC   A                            ;01C9   13                ;帶進位累加器循環右移
                   JNB   TF0,$                        ;01CA   30 8D FD                --------->這段代碼把TX設置為0一段時間
                   CLR   TF0                          ;01CD   C2 8D                ;清TF0溢出標志位---------------------------------->
                   DJNZ  R7,Q01C7                     ;01CF   DF F6                ;寄存器R7減1,不為0﹐則轉移Q017-------------------->
                   SETB  P3.1                         ;01D1   D2 B1                ;set Tx high
                   JNB   TF0,$                        ;01D3   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;01D6   C2 8D                ;清TF0溢出標志位
                   JNB   TF0,$                        ;01D8   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;01DB   C2 8D                ;清TF0溢出標志位
                   JNB   TF0,$                        ;01DD   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;01E0   C2 8D                ;清TF0溢出標志位
                   JNB   TF0,$                        ;01E2   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;01E5   C2 8D                ;清TF0溢出標志位
                   JNB   TF0,$                        ;01E7   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;01EA   C2 8D                ;清TF0溢出標志位
                   CLR   TR0                          ;01EC   C2 8C                ;清TF0溢出標志位
                   RET                                ;01EE   22
;==========================================================================          
Q01EF:             MOV   A,R7                         ;01EF   EF
                   MOV   R7,#09H                      ;01F0   7F 09
                   MOV   TH0,#00H                     ;01F2   75 8C 00
                   MOV   TL0,#00H                     ;01F5   75 8A 00
                   CLR   TF0                          ;01F8   C2 8D                ;清TF0溢出標志位
                   CLR   C                            ;01FA   C3                ;清進位
                   SETB  TR0                          ;01FB   D2 8C
Q01FD:             MOV   P3.1,C                       ;01FD   92 B1
                   RRC   A                            ;01FF   13                ;帶進位累加器循環右移
                   MOV   R4,37H                       ;0200   AC 37
Q0202:             JNB   TF0,$                        ;0202   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0205   C2 8D                ;清TF0溢出標志位
                   DJNZ  R4,Q0202                     ;0207   DC F9                ;寄存器R4減1,不為0則轉移到Q0202
                   MOV   TL0,31H                      ;0209   85 31 8A
                   JNB   TF0,$                        ;020C   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;020F   C2 8D                ;清TF0溢出標志位
                   DJNZ  R7,Q01FD                     ;0211   DF EA                ;寄存器R7減1,不為0則轉移到Q01FD
                   SETB  P3.1                         ;0213   D2 B1
                   MOV   R7,#05H                      ;0215   7F 05
Q0217:             MOV   R4,37H                       ;0217   AC 37
Q0219:             JNB   TF0,$                        ;0219   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;021C   C2 8D                ;清TF0溢出標志位
                   DJNZ  R4,Q0219                     ;021E   DC F9                ;寄存器R4減1,不為0則轉移到Q0219
                   MOV   TL0,31H                      ;0220   85 31 8A
                   JNB   TF0,$                        ;0223   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;0226   C2 8D                ;清TF0溢出標志位
                   DJNZ  R7,Q0217                     ;0228   DF ED                ;寄存器R7減1,不為0則轉移到Q0217
                   CLR   TR0                          ;022A   C2 8C                ;清TF0溢出標志位
                   RET                                ;022C   22
;==========================================================================
Q022D:             MOV   R1,#08H                      ;022D   79 08
                   MOV   R0,#40H                      ;022F   78 40
Q0231:             ACALL Q013A                        ;0231   31 3A
                   MOV   A,R7                         ;0233   EF
                   MOV   @R0,A                        ;0234   F6
                   INC   R0                           ;0235   08
                   DJNZ  R1,Q0231                     ;0236   D9 F9                ;寄存器R1減1,不為0則轉移到Q0231
                   MOV   A,40H                        ;0238   E5 40
                   CJNE  A,#0C0H,Q0284                ;023A   B4 C0 47                ;比較寄存器A和立即數#c0H,不相等轉移Q0284
                   ADD   A,41H                        ;023D   25 41
                   ADD   A,42H                        ;023F   25 42
                   ADD   A,43H                        ;0241   25 43
                   ADD   A,44H                        ;0243   25 44
                   ADD   A,45H                        ;0245   25 45
                   ADD   A,46H                        ;0247   25 46
                   ADD   A,47H                        ;0249   25 47
                   JNZ   Q0284                        ;024B   70 37
                   MOV   A,41H                        ;024D   E5 41
                   ANL   A,#0FH                       ;024F   54 0F
                   MOV   0E7H,A                       ;0251   F5 E7                  
                   MOV   A,41H                        ;0253   E5 41
                   RR    A                            ;0255   03
                   RR    A                            ;0256   03
                   RR    A                            ;0257   03
                   RR    A                            ;0258   03
                   JB    ACC.3,Q0268                  ;0259   20 E3 0C           ;如果ACC.3為1﹐則轉移Q0268
                   ANL   A,#07H                       ;025C   54 07
                   MOV   B,A                          ;025E   F5 F0
                   MOV   A,30H                        ;0260   E5 30
                   ADD   A,B                          ;0262   25 F0
                   MOV   30H,A                        ;0264   F5 30
                   SJMP  Q0273                        ;0266   80 0B
Q0268:             ANL   A,#07H                       ;0268   54 07
                   MOV   B,A                          ;026A   F5 F0
                   MOV   A,30H                        ;026C   E5 30
                   CLR   C                            ;026E   C3          ;清進位
                   SUBB  A,B                          ;026F   95 F0
                   MOV   30H,A                        ;0271   F5 30
Q0273:             ACALL Q028F                        ;0273   51 8F
                   MOV   R7,#0FAH                     ;0275   7F FA
                   ACALL Q01B5                        ;0277   31 B5
                   ACALL Q02C0                        ;0279   51 C0
                   ACALL Q0342                        ;027B   71 42
                   MOV   0E5H,#00H                    ;027D   75 E5 00           ;IFMT=#00H        ISP硬件無效
                   MOV   0E7H,#20H                    ;0280   75 E7 20           ;ISPCR=#20H 触發軟件复位
                   RET                                ;0283   22
;==========================================================================
Q0284:             MOV   R7,#0FEH                     ;0284   7F FE
                   ACALL Q01B5                        ;0286   31 B5
                   MOV   0E5H,#00H                    ;0288   75 E5 00           ;IFMT=#00H        ISP硬件無效
                   MOV   0E7H,#20H                    ;028B   75 E7 20           ;ISPCR=#20H 触發軟件复位
                   RET                                ;028E   22
;==========================================================================
Q028F:             MOV   R1,44H                       ;028F   A9 44
                   CJNE  R1,#00H,Q0295                ;0291   B9 00 01           ;比較寄存器R1和立即數#00H,不相等轉移Q0295
                   RET                                ;0294   22
;==========================================================================
Q0295:             MOV   A,42H                        ;0295   E5 42
                   RR    A                            ;0297   03
                   ANL   A,#7FH                       ;0298   54 7F
                   MOV   R2,A                         ;029A   FA
                   MOV   0E5H,#03H                    ;029B   75 E5 03           ;IFMT=#03H        ISP 頁擦除
                   MOV   A,0E7H                       ;029E   E5 E7
                   ORL   A,#80H                       ;02A0   44 80
                   MOV   0E7H,A                       ;02A2   F5 E7
Q02A4:             MOV   A,R2                         ;02A4   EA
                   RL    A                            ;02A5   23
                   ANL   A,#0FEH                      ;02A6   54 FE
                   MOV   0E3H,A                       ;02A8   F5 E3
                   MOV   0E4H,#00H                    ;02AA   75 E4 00
                   MOV   0E6H,#46H                    ;02AD   75 E6 46
                   MOV   0E6H,#0B9H                   ;02B0   75 E6 B9
                   INC   R2                           ;02B3   0A
                   DJNZ  R1,Q02A4                     ;02B4   D9 EE                ;寄存器R1減1,不為0則轉移到Q02A4
                   MOV   0E5H,#00H                    ;02B6   75 E5 00                ;IFMT=#00H        ISP硬件無效
                   MOV   A,0E7H                       ;02B9   E5 E7
                   ANL   A,#7FH                       ;02BB   54 7F
                   MOV   0E7H,A                       ;02BD   F5 E7
                   RET                                ;02BF   22
;==========================================================================
Q02C0:             MOV   35H,42H                      ;02C0   85 42 35
                   MOV   34H,43H                      ;02C3   85 43 34
                   MOV   0E5H,#02H                    ;02C6   75 E5 02           ;IFMT=#02H        ISP 編程
                   MOV   A,0E7H                       ;02C9   E5 E7
                   ORL   A,#80H                       ;02CB   44 80
                   MOV   0E7H,A                       ;02CD   F5 E7
                   MOV   A,45H                        ;02CF   E5 45
                   JZ    Q02EE                        ;02D1   60 1B
                   MOV   R1,A                         ;02D3   F9
Q02D4:             MOV   R6,#80H                      ;02D4   7E 80
                   ACALL Q031B                        ;02D6   71 1B
                   MOV   R6,#80H                      ;02D8   7E 80
                   ACALL Q0325                        ;02DA   71 25
                   MOV   R7,#0FAH                     ;02DC   7F FA
                   ACALL Q01B5                        ;02DE   31 B5
                   MOV   R6,#80H                      ;02E0   7E 80
                   ACALL Q031B                        ;02E2   71 1B
                   MOV   R6,#80H                      ;02E4   7E 80
                   ACALL Q0325                        ;02E6   71 25
                   MOV   R7,#0FAH                     ;02E8   7F FA
                   ACALL Q01B5                        ;02EA   31 B5
                   DJNZ  R1,Q02D4                     ;02EC   D9 E6                ;寄存器R1減1,不為0則轉移到Q02D4
Q02EE:             MOV   A,46H                        ;02EE   E5 46
                   JNB   ACC.7,Q0301                  ;02F0   30 E7 0E                ;如ACC.7為0﹐則轉移Q0301
                   MOV   R6,#80H                      ;02F3   7E 80
                   ACALL Q031B                        ;02F5   71 1B
                   MOV   R6,#80H                      ;02F7   7E 80
                   ACALL Q0325                        ;02F9   71 25
                   MOV   R7,#0FAH                     ;02FB   7F FA
                   ACALL Q01B5                        ;02FD   31 B5
                   MOV   A,46H                        ;02FF   E5 46
Q0301:             ANL   A,#7FH                       ;0301   54 7F
                   MOV   R1,A                         ;0303   F9
                   JZ    Q0311                        ;0304   60 0B
                   MOV   R6,A                         ;0306   FE
                   ACALL Q031B                        ;0307   71 1B
                   MOV   A,R1                         ;0309   E9
                   MOV   R6,A                         ;030A   FE
                   ACALL Q0325                        ;030B   71 25
                   MOV   R7,#0FAH                     ;030D   7F FA
                   ACALL Q01B5                        ;030F   31 B5
Q0311:             MOV   0E5H,#00H                    ;0311   75 E5 00                ;IFMT=#00H        ISP硬件無效
                   MOV   A,0E7H                       ;0314   E5 E7
                   ANL   A,#7FH                       ;0316   54 7F
                   MOV   0E7H,A                       ;0318   F5 E7
                   RET                                ;031A   22
;==========================================================================
Q031B:             MOV   R0,#80H                      ;031B   78 80
Q031D:             ACALL Q013A                        ;031D   31 3A
                   MOV   A,R7                         ;031F   EF
                   MOV   @R0,A                        ;0320   F6
                   INC   R0                           ;0321   08
                   DJNZ  R6,Q031D                     ;0322   DE F9                ;寄存器R6減1,不為0則轉移到Q031D
                   RET                                ;0324   22
;==========================================================================
Q0325:             MOV   R0,#80H                      ;0325   78 80
Q0327:             MOV   A,@R0                        ;0327   E6
                   MOV   0E3H,35H                     ;0328   85 35 E3
                   MOV   0E4H,34H                     ;032B   85 34 E4
                   MOV   0E2H,A                       ;032E   F5 E2
                   MOV   0E6H,#46H                    ;0330   75 E6 46
                   MOV   0E6H,#0B9H                   ;0333   75 E6 B9
                   INC   34H                          ;0336   05 34
                   MOV   A,34H                        ;0338   E5 34
                   JNZ   Q033E                        ;033A   70 02
                   INC   35H                          ;033C   05 35
Q033E:             INC   R0                           ;033E   08
                   DJNZ  R6,Q0327                     ;033F   DE E6                ;寄存器R6減1,不為0則轉移到Q0327
                   RET                                ;0341   22
;==========================================================================
Q0342:             MOV   35H,42H                      ;0342   85 42 35
                   MOV   34H,43H                      ;0345   85 43 34
                   CLR   20H.1                        ;0348   C2 01                ;清20H.1
                   MOV   0E5H,#01H                    ;034A   75 E5 01                ;IFMT=#01H        ISP 讀
                   MOV   A,0E7H                       ;034D   E5 E7
                   ORL   A,#80H                       ;034F   44 80
                   MOV   0E7H,A                       ;0351   F5 E7
                   MOV   A,45H                        ;0353   E5 45
                   JZ    Q0370                        ;0355   60 19
                   MOV   R1,A                         ;0357   F9
Q0358:             MOV   R6,#80H                      ;0358   7E 80
                   ACALL Q0397                        ;035A   71 97
                   ACALL Q03BF                        ;035C   71 BF
                   ACALL Q013A                        ;035E   31 3A
                   CJNE  R7,#0FAH,Q038D               ;0360   BF FA 2A                ;比較寄存器R7和立即數#faH,不相等轉移Q038D
                   MOV   R6,#80H                      ;0363   7E 80
                   ACALL Q0397                        ;0365   71 97
                   ACALL Q03BF                        ;0367   71 BF
                   ACALL Q013A                        ;0369   31 3A
                   CJNE  R7,#0FAH,Q038D               ;036B   BF FA 1F                ;比較寄存器R7和立即數#faH,不相等轉移Q038D
                   DJNZ  R1,Q0358                     ;036E   D9 E8                ;寄存器R1減1,不為0則轉移到Q0358
Q0370:             MOV   A,46H                        ;0370   E5 46                       
                   JNB   ACC.7,Q0382                  ;0372   30 E7 0D                ;如ACC.7為0﹐則轉移Q0382
                   MOV   R6,#80H                      ;0375   7E 80
                   ACALL Q0397                        ;0377   71 97
                   ACALL Q03BF                        ;0379   71 BF
                   ACALL Q013A                        ;037B   31 3A
                   CJNE  R7,#0FAH,Q038D               ;037D   BF FA 0D                ;比較寄存器R7和立即數#faH,不相等轉移Q038D
                   MOV   A,46H                        ;0380   E5 46
Q0382:             ANL   A,#7FH                       ;0382   54 7F
                   JZ    Q038D                        ;0384   60 07
                   MOV   R6,A                         ;0386   FE
                   ACALL Q0397                        ;0387   71 97
                   ACALL Q03BF                        ;0389   71 BF
                   ACALL Q013A                        ;038B   31 3A
Q038D:             MOV   0E5H,#00H                    ;038D   75 E5 00                ;IFMT=#00H        ISP硬件無效
                   MOV   A,0E7H                       ;0390   E5 E7
                   ANL   A,#7FH                       ;0392   54 7F
                   MOV   0E7H,A                       ;0394   F5 E7
                   RET                                ;0396   22
;==========================================================================
Q0397:             MOV   3BH,#00H                     ;0397   75 3B 00
                   MOV   3AH,#00H                     ;039A   75 3A 00
Q039D:             MOV   0E3H,35H                     ;039D   85 35 E3
                   MOV   0E4H,34H                     ;03A0   85 34 E4
                   MOV   0E6H,#46H                    ;03A3   75 E6 46
                   MOV   0E6H,#0B9H                   ;03A6   75 E6 B9
                   MOV   A,0E2H                       ;03A9   E5 E2
                   CLR   C                            ;03AB   C3                ;清進位
                   ADD   A,3BH                        ;03AC   25 3B
                   MOV   3BH,A                        ;03AE   F5 3B
                   JNC   Q03B4                        ;03B0   50 02
                   INC   3AH                          ;03B2   05 3A
Q03B4:             INC   34H                          ;03B4   05 34
                   MOV   A,34H                        ;03B6   E5 34
                   JNZ   Q03BC                        ;03B8   70 02
                   INC   35H                          ;03BA   05 35
Q03BC:             DJNZ  R6,Q039D                     ;03BC   DE DF                ;寄存器R6減1,不為0則轉移到Q039D
                   RET                                ;03BE   22
;==========================================================================
Q03BF:             MOV   R7,3AH                       ;03BF   AF 3A
                   ACALL Q01B5                        ;03C1   31 B5
                   MOV   R7,3BH                       ;03C3   AF 3B
                   ACALL Q01B5                        ;03C5   31 B5
                   MOV   A,3AH                        ;03C7   E5 3A
                   CPL   A                            ;03C9   F4
                   MOV   R7,A                         ;03CA   FF
                   ACALL Q01B5                        ;03CB   31 B5
                   MOV   A,3BH                        ;03CD   E5 3B
                   CPL   A                            ;03CF   F4
                   MOV   R7,A                         ;03D0   FF
                   ACALL Q01B5                        ;03D1   31 B5
                   RET                                ;03D3   22
;==========================================================================
Q03D4:             MOV   TH0,31H                      ;03D4   85 31 8C
                   MOV   TL0,31H                      ;03D7   85 31 8A
                   CLR   TF0                          ;03DA   C2 8D                ;清TF0
                   SETB  TR0                          ;03DC   D2 8C
                   MOV   R3,#10H                      ;03DE   7B 10
Q03E0:             JNB   TF0,$                        ;03E0   30 8D FD                ;如果TF0為0﹐則轉移到指本條指令的起始位置
                   CLR   TF0                          ;03E3   C2 8D                ;清TF0
                   DJNZ  R3,Q03E0                     ;03E5   DB F9                ;寄存器R3減1,不為0則轉移到Q03E0
                   CLR   TR0                          ;03E7   C2 8C                ;清TR0
                   RET                                ;03E9   22
;==========================================================================
END

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-8-8 22:36:19 | 显示全部楼层
不错,顶

出0入0汤圆

发表于 2009-8-9 07:36:54 | 显示全部楼层
咱也挤挤地板吧

出0入0汤圆

发表于 2009-8-9 08:16:12 | 显示全部楼层
LZ用什么工具翻出来的呀? 谢谢

出0入0汤圆

发表于 2009-8-9 09:38:42 | 显示全部楼层
顶!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 01:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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