📄 sendrcvself.lst
字号:
0112 0F40 ADD R20,R16
(0207) return dec;
0113 2F04 MOV R16,R20
0114 9622 ADIW R28,2
0115 940E0220 CALL pop_gset1
0117 9508 RET
_converseHToD:
dec --> R20
t --> Y+0
hex --> R20
0118 940E021D CALL push_gset1
011A 2F40 MOV R20,R16
011B 9722 SBIW R28,2
(0208) }
(0209) /*--------------------------------------------------------------------
(0210) 函数全称:十六进制化为十进制
(0211) 函数功能:
(0212) 注意事项:无
(0213) 提示说明:调用converseHToD(21),return 33
(0214) 输 入:
(0215) 返 回:uint8 dec
(0216) --------------------------------------------------------------------*/
(0217) uint8 converseHToD(uint8 hex)
(0218) {
(0219) uint8 dec;
(0220) uint8 t[2];
(0221) t[1]=hex/10;
011C E01A LDI R17,0xA
011D 2F04 MOV R16,R20
011E 940E01D4 CALL div8u
0120 8309 STD Y+1,R16
(0222) t[0]=hex%10;
0121 E01A LDI R17,0xA
0122 2F04 MOV R16,R20
0123 940E01D2 CALL mod8u
0125 8308 STD Y+0,R16
(0223) dec=t[1]*16+t[0];
0126 8029 LDD R2,Y+1
0127 E180 LDI R24,0x10
0128 9D82 MUL R24,R2
0129 2D40 MOV R20,R0
012A 0F40 ADD R20,R16
(0224) return dec;
012B 2F04 MOV R16,R20
012C 9622 ADIW R28,2
012D 940E0220 CALL pop_gset1
012F 9508 RET
FILE: E:\ProductPro\M16SD\ICCAVR\UART\SendRcvSelf\SendRcvSelf.c
(0001) //ICC-AVR application builder : 2005-6-30 17:44:36
(0002) // Target : M16
(0003) // Crystal: 7.3728Mhz
(0004)
(0005) #include <iom16v.h>
(0006) #include "E:\ICCAVR_H\CmmICC.H"
(0007)
(0008) #define DISP_PORT PORTA
(0009) #define DISP_DDR DDRA
(0010)
(0011) //UART0 initialisation
(0012) // desired baud rate: 9600
(0013) // actual: baud rate:9600 (0.0%)
(0014) // char size: 8 bit
(0015) // parity: Disabled
(0016) void uart0_init(void)
(0017) {
(0018) UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
0130 2422 CLR R2
0131 B82A OUT 0x0A,R2
(0019) UCSRA = 0x00;
0132 B82B OUT 0x0B,R2
(0020) UCSRC = 0x86;
0133 E886 LDI R24,0x86
0134 BD80 OUT 0x20,R24
(0021) UBRRL = 47; //set baud rate lo
0135 E28F LDI R24,0x2F
0136 B989 OUT 0x09,R24
(0022) UBRRH = 0x00; //set baud rate hi
0137 BC20 OUT 0x20,R2
(0023) UCSRB = 0x98;
0138 E988 LDI R24,0x98
0139 B98A OUT 0x0A,R24
(0024) }
013A 9508 RET
_uart0_rx_isr:
013B 922A ST R2,-Y
013C B62F IN R2,0x3F
013D 922A ST R2,-Y
(0025)
(0026) #pragma interrupt_handler uart0_rx_isr:12
(0027) void uart0_rx_isr(void)
(0028) {
(0029) //uart has received a character in UDR
(0030) DISP_PORT = UDR;
013E B02C IN R2,0x0C
013F BA2B OUT 0x1B,R2
(0031) }
0140 9029 LD R2,Y+
0141 BE2F OUT 0x3F,R2
0142 9029 LD R2,Y+
0143 9518 RETI
(0032)
(0033)
(0034) //call this routine to initialise all peripherals
(0035) void mcu_init(void)
(0036) {
(0037) //stop errant interrupts until set up
(0038) CLI(); //disable all interrupts
_mcu_init:
0144 94F8 BCLR 7
(0039) uart0_init();
0145 DFEA RCALL _uart0_init
(0040) MCUCR = 0x00;
0146 2422 CLR R2
0147 BE25 OUT 0x35,R2
(0041) GICR = 0x00;
0148 BE2B OUT 0x3B,R2
(0042) TIMSK = 0x00; //timer interrupt sources
0149 BE29 OUT 0x39,R2
(0043) SEI(); //re-enable interrupts
014A 9478 BSET 7
(0044) //all peripherals are now initialised
(0045) }
014B 9508 RET
(0046)
(0047) void main()
(0048) {
(0049) uint8 counter=0;
_main:
counter --> R20
014C 2744 CLR R20
(0050) mcu_init();
014D DFF6 RCALL _mcu_init
(0051)
(0052) DISP_DDR=0xFF;
014E EF8F LDI R24,0xFF
014F BB8A OUT 0x1A,R24
0150 C009 RJMP 0x015A
(0053)
(0054) while(1)
(0055) {
(0056) UDR=counter++;
0151 2E24 MOV R2,R20
0152 5F4F SUBI R20,0xFF
0153 B82C OUT 0x0C,R2
(0057) while(!(UCSRA&0x40));
0154 9B5E SBIS 0x0B,6
0155 CFFE RJMP 0x0154
(0058) UCSRA|=0x40;
0156 9A5E SBI 0x0B,6
(0059) delay50ms(4);
0157 E004 LDI R16,4
0158 E010 LDI R17,0
0159 DF03 RCALL _delay50ms
015A CFF6 RJMP 0x0151
(0060) }
(0061)
(0062) }
FILE: <library>
015B 9508 RET
push_arg4:
015C 933A ST R19,-Y
015D 932A ST R18,-Y
push_arg2:
015E 931A ST R17,-Y
015F 930A ST R16,-Y
0160 9508 RET
div32u:
0161 94E8 BCLR 6
0162 C001 RJMP 0x0164
mod32u:
0163 9468 BSET 6
0164 D02F RCALL long_div_prolog
0165 24CC CLR R12
0166 C008 RJMP 0x016F
div32s:
0167 94E8 BCLR 6
0168 C001 RJMP 0x016A
mod32s:
0169 9468 BSET 6
016A D029 RCALL long_div_prolog
016B FD37 SBRC R19,7
016C D053 RCALL neg_R16_R19
016D FDB7 SBRC R27,7
016E D05A RCALL neg_R24_R27
016F 2477 CLR R7
0170 2488 CLR R8
0171 2499 CLR R9
0172 24AA CLR R10
0173 24BB CLR R11
0174 D041 RCALL tst_R16_R19
0175 F0C1 BEQ 0x018E
0176 D044 RCALL tst_R24_R27
0177 F0B1 BEQ 0x018E
0178 E2E8 LDI R30,0x28
0179 0F00 LSL R16
017A 1F11 ROL R17
017B 1F22 ROL R18
017C 1F33 ROL R19
017D 1C77 ROL R7
017E 1C88 ROL R8
017F 1C99 ROL R9
0180 1CAA ROL R10
0181 1CBB ROL R11
0182 1688 CP R8,R24
0183 0699 CPC R9,R25
0184 06AA CPC R10,R26
0185 06BB CPC R11,R27
0186 F028 BCS 0x018C
0187 1A88 SUB R8,R24
0188 0A99 SBC R9,R25
0189 0AAA SBC R10,R26
018A 0ABB SBC R11,R27
018B 9503 INC R16
018C 95EA DEC R30
018D F759 BNE 0x0179
018E F426 BRTC 0x0193
018F 2D08 MOV R16,R8
0190 2D19 MOV R17,R9
0191 2D2A MOV R18,R10
0192 2D3B MOV R19,R11
0193 C013 RJMP long_div_epilog
long_div_prolog:
0194 927A ST R7,-Y
0195 928A ST R8,-Y
0196 929A ST R9,-Y
0197 92AA ST R10,-Y
0198 92BA ST R11,-Y
0199 92CA ST R12,-Y
019A 93EA ST R30,-Y
019B 938A ST R24,-Y
019C 939A ST R25,-Y
019D 93AA ST R26,-Y
019E 93BA ST R27,-Y
019F 858B LDD R24,Y+11
01A0 859C LDD R25,Y+12
01A1 85AD LDD R26,Y+13
01A2 85BE LDD R27,Y+14
01A3 2EC3 MOV R12,R19
01A4 F00E BRTS 0x01A6
01A5 26CB EOR R12,R27
01A6 9508 RET
long_div_epilog:
01A7 FCC7 SBRC R12,7
01A8 D017 RCALL neg_R16_R19
01A9 91B9 LD R27,Y+
01AA 91A9 LD R26,Y+
01AB 9199 LD R25,Y+
01AC 9189 LD R24,Y+
01AD 91E9 LD R30,Y+
01AE 90C9 LD R12,Y+
01AF 90B9 LD R11,Y+
01B0 90A9 LD R10,Y+
01B1 9099 LD R9,Y+
01B2 9089 LD R8,Y+
01B3 9079 LD R7,Y+
01B4 9624 ADIW R28,4
01B5 9508 RET
tst_R16_R19:
01B6 2FE0 MOV R30,R16
01B7 2BE1 OR R30,R17
01B8 2BE2 OR R30,R18
01B9 2BE3 OR R30,R19
01BA 9508 RET
tst_R24_R27:
01BB 2FE8 MOV R30,R24
01BC 2BE9 OR R30,R25
01BD 2BEA OR R30,R26
01BE 2BEB OR R30,R27
01BF 9508 RET
neg_R16_R19:
01C0 9500 COM R16
01C1 9510 COM R17
01C2 9520 COM R18
01C3 9530 COM R19
01C4 5F0F SUBI R16,0xFF
01C5 4F1F SBCI R17,0xFF
01C6 4F2F SBCI R18,0xFF
01C7 4F3F SBCI R19,0xFF
01C8 9508 RET
neg_R24_R27:
01C9 9580 COM R24
01CA 9590 COM R25
01CB 95A0 COM R26
01CC 95B0 COM R27
01CD 5F8F SUBI R24,0xFF
01CE 4F9F SBCI R25,0xFF
01CF 4FAF SBCI R26,0xFF
01D0 4FBF SBCI R27,0xFF
01D1 9508 RET
mod8u:
01D2 9468 BSET 6
01D3 C001 RJMP xdiv8u
div8u:
01D4 94E8 BCLR 6
xdiv8u:
01D5 932A ST R18,-Y
01D6 92FA ST R15,-Y
01D7 92EA ST R14,-Y
01D8 24FF CLR R15
01D9 24EE CLR R14
01DA E120 LDI R18,0x10
01DB 0F00 LSL R16
01DC 1CFF ROL R15
01DD 1CEE ROL R14
01DE 16E1 CP R14,R17
01DF F010 BCS 0x01E2
01E0 1AE1 SUB R14,R17
01E1 9503 INC R16
01E2 952A DEC R18
01E3 F7B9 BNE 0x01DB
01E4 F40E BRTC 0x01E6
01E5 2D0E MOV R16,R14
01E6 90E9 LD R14,Y+
01E7 90F9 LD R15,Y+
01E8 9129 LD R18,Y+
01E9 9508 RET
empy32u:
empy32s:
01EA 940E0240 CALL long_prolog
01EC 927F PUSH R7
01ED 940E0259 CALL tstzero1
01EF F139 BEQ 0x0217
01F0 2477 CLR R7
01F1 940E025F CALL tstzero2
01F3 F419 BNE 0x01F7
01F4 018C MOVW R16,R24
01F5 019D MOVW R18,R26
01F6 C020 RJMP 0x0217
01F7 9F08 MUL R16,R24
01F8 2CB0 MOV R11,R0
01F9 2CA1 MOV R10,R1
01FA 9F28 MUL R18,R24
01FB 2C90 MOV R9,R0
01FC 2C81 MOV R8,R1
01FD 9F18 MUL R17,R24
01FE 0CA0 ADD R10,R0
01FF 1C91 ADC R9,R1
0200 1C87 ADC R8,R7
0201 9F09 MUL R16,R25
0202 0CA0 ADD R10,R0
0203 1C91 ADC R9,R1
0204 1C87 ADC R8,R7
0205 9F19 MUL R17,R25
0206 0C90 ADD R9,R0
0207 1C81 ADC R8,R1
0208 9F0A MUL R16,R26
0209 0C90 ADD R9,R0
020A 1C81 ADC R8,R1
020B 9F38 MUL R19,R24
020C 0C80 ADD R8,R0
020D 9F29 MUL R18,R25
020E 0C80 ADD R8,R0
020F 9F1A MUL R17,R26
0210 0C80 ADD R8,R0
0211 9F0B MUL R16,R27
0212 0C80 ADD R8,R0
0213 2D0B MOV R16,R11
0214 2D1A MOV R17,R10
0215 2D29 MOV R18,R9
0216 2D38 MOV R19,R8
0217 907F POP R7
0218 940C024E JMP long_epilog
pop_gset4:
021A E0E8 LDI R30,0x8
021B 940C0221 JMP pop
push_gset1:
021D 935A ST R21,-Y
021E 934A ST R20,-Y
021F 9508 RET
pop_gset1:
0220 E0E1 LDI R30,1
pop:
0221 9149 LD R20,Y+
0222 9159 LD R21,Y+
0223 FDE0 SBRC R30,0
0224 9508 RET
0225 9169 LD R22,Y+
0226 9179 LD R23,Y+
0227 FDE1 SBRC R30,1
0228 9508 RET
0229 90A9 LD R10,Y+
022A 90B9 LD R11,Y+
022B FDE2 SBRC R30,2
022C 9508 RET
022D 90C9 LD R12,Y+
022E 90D9 LD R13,Y+
022F FDE3 SBRC R30,3
0230 9508 RET
0231 90E9 LD R14,Y+
0232 90F9 LD R15,Y+
0233 9508 RET
push_gset2:
0234 937A ST R23,-Y
0235 936A ST R22,-Y
0236 940C021D JMP push_gset1
push_gset3:
0238 92BA ST R11,-Y
0239 92AA ST R10,-Y
023A 940C0234 JMP push_gset2
push_gset4:
023C 92DA ST R13,-Y
023D 92CA ST R12,-Y
023E 940C0238 JMP push_gset3
long_prolog:
0240 928A ST R8,-Y
0241 929A ST R9,-Y
0242 92AA ST R10,-Y
0243 92BA ST R11,-Y
0244 93EA ST R30,-Y
0245 938A ST R24,-Y
0246 939A ST R25,-Y
0247 93AA ST R26,-Y
0248 93BA ST R27,-Y
0249 8589 LDD R24,Y+9
024A 859A LDD R25,Y+10
024B 85AB LDD R26,Y+11
024C 85BC LDD R27,Y+12
024D 9508 RET
long_epilog:
024E 91B9 LD R27,Y+
024F 91A9 LD R26,Y+
0250 9199 LD R25,Y+
0251 9189 LD R24,Y+
0252 91E9 LD R30,Y+
0253 90B9 LD R11,Y+
0254 90A9 LD R10,Y+
0255 9099 LD R9,Y+
0256 9089 LD R8,Y+
0257 9624 ADIW R28,4
0258 9508 RET
tstzero1:
0259 27EE CLR R30
025A 2BE0 OR R30,R16
025B 2BE1 OR R30,R17
025C 2BE2 OR R30,R18
025D 2BE3 OR R30,R19
025E 9508 RET
tstzero2:
025F 27EE CLR R30
0260 2BE8 OR R30,R24
0261 2BE9 OR R30,R25
0262 2BEA OR R30,R26
0263 2BEB OR R30,R27
0264 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -