|
点击此处下载 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周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|