📄 oput.lis
字号:
028C 61E0 ldi R22,1
028E .dbline 170
028E L21:
028E .dbline 171
028E 2AE0 ldi R18,10
0290 30E0 ldi R19,0
0292 8A01 movw R16,R20
0294 0E940000 xcall div16s
0298 A02E mov R10,R16
029A .dbline 171
029A 2AE0 ldi R18,10
029C 30E0 ldi R19,0
029E 8A01 movw R16,R20
02A0 0E940000 xcall mod16s
02A4 A801 movw R20,R16
02A6 .dbline 171
02A6 AA20 tst R10
02A8 11F4 brne L26
02AA 6623 tst R22
02AC 89F0 breq L24
02AE L26:
02AE .dbline 171
02AE ; j=i/10;i%=10;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
02AE .dbline 171
02AE 20900100 lds R2,_TxOperateSp0
02B2 3324 clr R3
02B4 822D mov R24,R2
02B6 8F5F subi R24,255 ; addi 1
02B8 80930100 sts _TxOperateSp0,R24
02BC 80E0 ldi R24,<_TxBuffer0
02BE 90E0 ldi R25,>_TxBuffer0
02C0 E22D mov R30,R2
02C2 FF27 clr R31
02C4 E80F add R30,R24
02C6 F91F adc R31,R25
02C8 8A2D mov R24,R10
02CA 805D subi R24,208 ; addi 48
02CC 8083 std z+0,R24
02CE .dbline 171
02CE 61E0 ldi R22,1
02D0 .dbline 171
02D0 L24:
02D0 .dbline 172
02D0 ; TxBuffer0[TxOperateSp0++]=i+0x30;
02D0 20900100 lds R2,_TxOperateSp0
02D4 3324 clr R3
02D6 822D mov R24,R2
02D8 8F5F subi R24,255 ; addi 1
02DA 80930100 sts _TxOperateSp0,R24
02DE 80E0 ldi R24,<_TxBuffer0
02E0 90E0 ldi R25,>_TxBuffer0
02E2 E22D mov R30,R2
02E4 FF27 clr R31
02E6 E80F add R30,R24
02E8 F91F adc R31,R25
02EA CA01 movw R24,R20
02EC C096 adiw R24,48
02EE 8083 std z+0,R24
02F0 .dbline -2
02F0 L13:
02F0 0E940000 xcall pop_gset3
02F4 .dbline 0 ; func end
02F4 0895 ret
02F6 .dbsym r head 22 c
02F6 .dbsym r j 10 c
02F6 .dbsym r i 20 I
02F6 .dbend
02F6 .dbfunc e tx0_uc_to_bcd _tx0_uc_to_bcd fV
02F6 ; head -> R22
02F6 ; j -> R10
02F6 ; i -> R20
.even
02F6 _tx0_uc_to_bcd::
02F6 0E940000 xcall push_gset3
02FA 402F mov R20,R16
02FC .dbline -1
02FC .dbline 178
02FC ; }
02FC ; /*******************************************************************************
02FC ; 将uc型变量转换为bcd码,并填充到TxBuffer0[]中
02FC ; ********************************************************************************/
02FC ; void tx0_uc_to_bcd(UC i)
02FC ; {
02FC .dbline 179
02FC ; UC j,head=0;
02FC 6627 clr R22
02FE .dbline 180
02FE ; j=i/100;i%=100;if(j){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
02FE 14E6 ldi R17,100
0300 042F mov R16,R20
0302 0E940000 xcall div8u
0306 A02E mov R10,R16
0308 .dbline 180
0308 14E6 ldi R17,100
030A 042F mov R16,R20
030C 0E940000 xcall mod8u
0310 402F mov R20,R16
0312 .dbline 180
0312 AA20 tst R10
0314 89F0 breq L28
0316 .dbline 180
0316 .dbline 180
0316 20900100 lds R2,_TxOperateSp0
031A 3324 clr R3
031C 822D mov R24,R2
031E 8F5F subi R24,255 ; addi 1
0320 80930100 sts _TxOperateSp0,R24
0324 80E0 ldi R24,<_TxBuffer0
0326 90E0 ldi R25,>_TxBuffer0
0328 E22D mov R30,R2
032A FF27 clr R31
032C E80F add R30,R24
032E F91F adc R31,R25
0330 8A2D mov R24,R10
0332 805D subi R24,208 ; addi 48
0334 8083 std z+0,R24
0336 .dbline 180
0336 61E0 ldi R22,1
0338 .dbline 180
0338 L28:
0338 .dbline 181
0338 1AE0 ldi R17,10
033A 042F mov R16,R20
033C 0E940000 xcall div8u
0340 A02E mov R10,R16
0342 .dbline 181
0342 1AE0 ldi R17,10
0344 042F mov R16,R20
0346 0E940000 xcall mod8u
034A 402F mov R20,R16
034C .dbline 181
034C AA20 tst R10
034E 11F4 brne L32
0350 6623 tst R22
0352 89F0 breq L30
0354 L32:
0354 .dbline 181
0354 ; j=i/10;i%=10;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
0354 .dbline 181
0354 20900100 lds R2,_TxOperateSp0
0358 3324 clr R3
035A 822D mov R24,R2
035C 8F5F subi R24,255 ; addi 1
035E 80930100 sts _TxOperateSp0,R24
0362 80E0 ldi R24,<_TxBuffer0
0364 90E0 ldi R25,>_TxBuffer0
0366 E22D mov R30,R2
0368 FF27 clr R31
036A E80F add R30,R24
036C F91F adc R31,R25
036E 8A2D mov R24,R10
0370 805D subi R24,208 ; addi 48
0372 8083 std z+0,R24
0374 .dbline 181
0374 61E0 ldi R22,1
0376 .dbline 181
0376 L30:
0376 .dbline 182
0376 ; TxBuffer0[TxOperateSp0++]=i+0x30;
0376 20900100 lds R2,_TxOperateSp0
037A 3324 clr R3
037C 822D mov R24,R2
037E 8F5F subi R24,255 ; addi 1
0380 80930100 sts _TxOperateSp0,R24
0384 80E0 ldi R24,<_TxBuffer0
0386 90E0 ldi R25,>_TxBuffer0
0388 E22D mov R30,R2
038A FF27 clr R31
038C E80F add R30,R24
038E F91F adc R31,R25
0390 842F mov R24,R20
0392 805D subi R24,208 ; addi 48
0394 8083 std z+0,R24
0396 .dbline -2
0396 L27:
0396 0E940000 xcall pop_gset3
039A .dbline 0 ; func end
039A 0895 ret
039C .dbsym r head 22 c
039C .dbsym r j 10 c
039C .dbsym r i 20 c
039C .dbend
039C .dbfunc e io_test _io_test fV
039C ; Delay -> R20,R21
039C ; i -> R22
.even
039C _io_test::
039C 0E940000 xcall push_gset2
03A0 .dbline -1
03A0 .dbline 187
03A0 ; }
03A0 ;
03A0 ;
03A0 ;
03A0 ; void io_test(void){
03A0 .dbline 188
03A0 ; UC i=0;
03A0 6627 clr R22
03A2 .dbline 190
03A2 ; UI Delay;
03A2 ; if(T0Count4>500){//||(RxFlag==ON)){
03A2 84EF ldi R24,500
03A4 91E0 ldi R25,1
03A6 20901300 lds R2,_T0Count4
03AA 30901400 lds R3,_T0Count4+1
03AE 8215 cp R24,R2
03B0 9305 cpc R25,R3
03B2 08F0 brlo X0
03B4 EBC1 xjmp L34
03B6 X0:
03B6 .dbline 190
03B6 .dbline 191
03B6 ; T0Count4=0;
03B6 2224 clr R2
03B8 3324 clr R3
03BA 30921400 sts _T0Count4+1,R3
03BE 20921300 sts _T0Count4,R2
03C2 .dbline 193
03C2 ; // RxFlag=OFF;
03C2 ; OutputByte0Reg=OutputTable[TestIOSp][0];
03C2 2090A700 lds R2,_TestIOSp
03C6 83E0 ldi R24,3
03C8 829D mul R24,R2
03CA F001 movw R30,R0
03CC 80E0 ldi R24,<_OutputTable
03CE 90E0 ldi R25,>_OutputTable
03D0 E80F add R30,R24
03D2 F91F adc R31,R25
03D4 2080 ldd R2,z+0
03D6 2092C901 sts _OutputByte0Reg,R2
03DA .dbline 194
03DA ; OutputByte1Reg=OutputTable[TestIOSp][1];
03DA 2090A700 lds R2,_TestIOSp
03DE 83E0 ldi R24,3
03E0 829D mul R24,R2
03E2 F001 movw R30,R0
03E4 80E0 ldi R24,<_OutputTable+1
03E6 90E0 ldi R25,>_OutputTable+1
03E8 E80F add R30,R24
03EA F91F adc R31,R25
03EC 2080 ldd R2,z+0
03EE 2092C801 sts _OutputByte1Reg,R2
03F2 .dbline 195
03F2 ; OutputByte2Reg=OutputTable[TestIOSp][2];
03F2 2090A700 lds R2,_TestIOSp
03F6 83E0 ldi R24,3
03F8 829D mul R24,R2
03FA F001 movw R30,R0
03FC 80E0 ldi R24,<_OutputTable+2
03FE 90E0 ldi R25,>_OutputTable+2
0400 E80F add R30,R24
0402 F91F adc R31,R25
0404 2080 ldd R2,z+0
0406 2092C701 sts _OutputByte2Reg,R2
040A .dbline 197
040A ;
040A ; IOAddr[OutputByte0]=OutputByte0Reg;
040A 2090C901 lds R2,_OutputByte0Reg
040E 209204F0 sts _IOAddr+4,R2
0412 .dbline 198
0412 ; IOAddr[OutputByte1]=OutputByte1Reg;
0412 2090C801 lds R2,_OutputByte1Reg
0416 209205F0 sts _IOAddr+5,R2
041A .dbline 199
041A ; IOAddr[OutputByte2]=OutputByte2Reg;
041A 2090C701 lds R2,_OutputByte2Reg
041E 209206F0 sts _IOAddr+6,R2
0422 .dbline 201
0422 4427 clr R20
0424 5527 clr R21
0426 02C0 xjmp L44
0428 L41:
0428 .dbline 201
0428 L42:
0428 .dbline 201
0428 4F5F subi R20,255 ; offset = 1
042A 5F4F sbci R21,255
042C L44:
042C .dbline 201
042C ;
042C ; for(Delay=0;Delay<5000;Delay++);
042C 4838 cpi R20,136
042E E3E1 ldi R30,19
0430 5E07 cpc R21,R30
0432 D0F3 brlo L41
0434 0DC0 xjmp L46
0436 L45:
0436 .dbline 203
0436 ;
0436 ; while(i<5){
0436 .dbline 204
0436 ; if(InputByte0Reg==IOAddr[InputByte0])i++;
0436 209000F0 lds R2,_IOAddr
043A 30902400 lds R3,_InputByte0Reg
043E 3214 cp R3,R2
0440 11F4 brne L48
0442 .dbline 204
0442 6395 inc R22
0444 05C0 xjmp L49
0446 L48:
0446 .dbline 205
0446 ; else {InputByte0Reg=IOAddr[InputByte0];i=0;}
0446 .dbline 205
0446 209000F0 lds R2,_IOAddr
044A 20922400 sts _InputByte0Reg,R2
044E .dbline 205
044E 6627 clr R22
0450 .dbline 205
0450 L49:
0450 .dbline 206
0450 L46:
0450 .dbline 203
0450 6530 cpi R22,5
0452 88F3 brlo L45
0454 .dbline 207
0454 ; }
0454 ; i=0;
0454 6627 clr R22
0456 0DC0 xjmp L51
0458 L50:
0458
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -