📄 main.lis
字号:
00FC .dbline 101
00FC ; else
00FC ; {
00FC .dbline 102
00FC ; intval=read_program_memory(address,0x00);
00FC 2227 clr R18
00FE 8B01 movw R16,R22
0100 00D0 rcall _read_program_memory
0102 5801 movw R10,R16
0104 .dbline 103
0104 ; sendchar((char)(intval>>8)); //send MSB
0104 012F mov R16,R17
0106 1127 clr R17
0108 7BDF rcall _sendchar
010A .dbline 104
010A ; sendchar((char)intval); //send LSB
010A 0A2D mov R16,R10
010C 79DF rcall _sendchar
010E .dbline 105
010E ; address+=2;
010E 6E5F subi R22,254 ; offset = 2
0110 7F4F sbci R23,255
0112 .dbline 106
0112 ; }
0112 .dbline 107
0112 ; }
0112 8CCF rjmp L11
0114 L38:
0114 .dbline 108
0114 ; else if (val == 'D')
0114 4434 cpi R20,68
0116 81F4 brne L42
0118 .dbline 109
0118 ; {
0118 .dbline 110
0118 ; EEARL = address;
0118 6EBB out 0x1e,R22
011A .dbline 111
011A ; EEARH = (address >> 8);
011A 1B01 movw R2,R22
011C 232C mov R2,R3
011E 3324 clr R3
0120 2FBA out 0x1f,R2
0122 .dbline 112
0122 ; address++;
0122 6F5F subi R22,255 ; offset = 1
0124 7F4F sbci R23,255
0126 .dbline 113
0126 ; EEDR = recchar();
0126 70DF rcall _recchar
0128 0DBB out 0x1d,R16
012A .dbline 114
012A ; EECR |= (1<<EEMWE);
012A E29A sbi 0x1c,2
012C .dbline 115
012C ; EECR |= (1<<EEWE);
012C E19A sbi 0x1c,1
012E L44:
012E .dbline 117
012E L45:
012E .dbline 116
012E ; while (EECR & (1<<EEWE))
012E E199 sbic 0x1c,1
0130 FECF rjmp L44
0132 .dbline 118
0132 ; ;
0132 ; sendchar('\r');
0132 0DE0 ldi R16,13
0134 65DF rcall _sendchar
0136 .dbline 119
0136 ; }
0136 7ACF rjmp L11
0138 L42:
0138 .dbline 120
0138 ; else if (val == 'd')
0138 4436 cpi R20,100
013A 59F4 brne L47
013C .dbline 121
013C ; {
013C .dbline 122
013C ; EEARL = address;
013C 6EBB out 0x1e,R22
013E .dbline 123
013E ; EEARH = (address >> 8);
013E 1B01 movw R2,R22
0140 232C mov R2,R3
0142 3324 clr R3
0144 2FBA out 0x1f,R2
0146 .dbline 124
0146 ; address++;
0146 6F5F subi R22,255 ; offset = 1
0148 7F4F sbci R23,255
014A .dbline 125
014A ; EECR |= (1<<EERE);
014A E09A sbi 0x1c,0
014C .dbline 126
014C ; sendchar(EEDR);
014C 0DB3 in R16,0x1d
014E 58DF rcall _sendchar
0150 .dbline 127
0150 ; }
0150 6DCF rjmp L11
0152 L47:
0152 .dbline 128
0152 ; else if(val=='F') // read fuse bits
0152 4634 cpi R20,70
0154 31F4 brne L49
0156 .dbline 129
0156 ; {
0156 .dbline 130
0156 ; sendchar(read_program_memory(0x0000,0x09));
0156 29E0 ldi R18,9
0158 0027 clr R16
015A 1127 clr R17
015C 00D0 rcall _read_program_memory
015E 50DF rcall _sendchar
0160 .dbline 131
0160 ; }
0160 65CF rjmp L11
0162 L49:
0162 .dbline 132
0162 ; else if(val=='r') // read lock bits
0162 4237 cpi R20,114
0164 31F4 brne L51
0166 .dbline 133
0166 ; {
0166 .dbline 134
0166 ; sendchar(read_program_memory(0x0001,0x09));
0166 29E0 ldi R18,9
0168 01E0 ldi R16,1
016A 10E0 ldi R17,0
016C 00D0 rcall _read_program_memory
016E 48DF rcall _sendchar
0170 .dbline 135
0170 ; }
0170 5DCF rjmp L11
0172 L51:
0172 .dbline 136
0172 ; else if(val=='N') // read high fuse bits
0172 4E34 cpi R20,78
0174 31F4 brne L53
0176 .dbline 137
0176 ; {
0176 .dbline 138
0176 ; sendchar(read_program_memory(0x0003,0x09));
0176 29E0 ldi R18,9
0178 03E0 ldi R16,3
017A 10E0 ldi R17,0
017C 00D0 rcall _read_program_memory
017E 40DF rcall _sendchar
0180 .dbline 139
0180 ; }
0180 55CF rjmp L11
0182 L53:
0182 .dbline 140
0182 ; else if(val=='t') // Return programmer type
0182 4437 cpi R20,116
0184 29F4 brne L55
0186 .dbline 141
0186 ; {
0186 .dbline 142
0186 ; sendchar(device);
0186 07E7 ldi R16,119
0188 3BDF rcall _sendchar
018A .dbline 143
018A ; sendchar(0);
018A 0027 clr R16
018C 39DF rcall _sendchar
018E .dbline 144
018E ; }
018E 4ECF rjmp L11
0190 L55:
0190 .dbline 145
0190 ; else if ((val=='x')||(val=='y')||(val=='T'))
0190 4837 cpi R20,120
0192 21F0 breq L60
0194 4937 cpi R20,121
0196 11F0 breq L60
0198 4435 cpi R20,84
019A 21F4 brne L57
019C L60:
019C .dbline 146
019C ; {
019C .dbline 147
019C ; recchar();
019C 35DF rcall _recchar
019E .dbline 148
019E ; sendchar('\r');
019E 0DE0 ldi R16,13
01A0 2FDF rcall _sendchar
01A2 .dbline 149
01A2 ; }
01A2 44CF rjmp L11
01A4 L57:
01A4 .dbline 150
01A4 ; else if (val=='S') // Return software identifier
01A4 4335 cpi R20,83
01A6 79F4 brne L61
01A8 .dbline 151
01A8 ; {
01A8 .dbline 152
01A8 ; sendchar('A');
01A8 01E4 ldi R16,65
01AA 2ADF rcall _sendchar
01AC .dbline 153
01AC ; sendchar('V');
01AC 06E5 ldi R16,86
01AE 28DF rcall _sendchar
01B0 .dbline 154
01B0 ; sendchar('R');
01B0 02E5 ldi R16,82
01B2 26DF rcall _sendchar
01B4 .dbline 155
01B4 ; sendchar('B');
01B4 02E4 ldi R16,66
01B6 24DF rcall _sendchar
01B8 .dbline 156
01B8 ; sendchar('O');
01B8 0FE4 ldi R16,79
01BA 22DF rcall _sendchar
01BC .dbline 157
01BC ; sendchar('O');
01BC 0FE4 ldi R16,79
01BE 20DF rcall _sendchar
01C0 .dbline 158
01C0 ; sendchar('T');
01C0 04E5 ldi R16,84
01C2 1EDF rcall _sendchar
01C4 .dbline 159
01C4 ; }
01C4 33CF rjmp L11
01C6 L61:
01C6 .dbline 160
01C6 ; else if (val=='V') // Return Software Version
01C6 4635 cpi R20,86
01C8 29F4 brne L63
01CA .dbline 161
01CA ; {
01CA .dbline 162
01CA ; sendchar('1');
01CA 01E3 ldi R16,49
01CC 19DF rcall _sendchar
01CE .dbline 163
01CE ; sendchar('0');
01CE 00E3 ldi R16,48
01D0 17DF rcall _sendchar
01D2 .dbline 164
01D2 ; }
01D2 2CCF rjmp L11
01D4 L63:
01D4 .dbline 165
01D4 ; else if (val=='s') // Return Signature Byte
01D4 4337 cpi R20,115
01D6 39F4 brne L65
01D8 .dbline 166
01D8 ; {
01D8 .dbline 167
01D8 ; sendchar(sig_byte3);
01D8 07E0 ldi R16,7
01DA 12DF rcall _sendchar
01DC .dbline 168
01DC ; sendchar(sig_byte2);
01DC 03E9 ldi R16,147
01DE 10DF rcall _sendchar
01E0 .dbline 169
01E0 ; sendchar(sig_byte1);
01E0 0EE1 ldi R16,30
01E2 0EDF rcall _sendchar
01E4 .dbline 170
01E4 ; }
01E4 23CF rjmp L11
01E6 L65:
01E6 .dbline 171
01E6 4B31 cpi R20,27
01E8 09F4 brne X1
01EA 20CF rjmp L11
01EC X1:
01EC .dbline 172
01EC .dbline 173
01EC 0FE3 ldi R16,63
01EE 08DF rcall _sendchar
01F0 .dbline 174
01F0 .dbline 175
01F0 .dbline 40
01F0 .dbline 40
01F0 1DCF rjmp L11
01F2 X0:
01F2 .dbline -2
01F2 L10:
01F2 00D0 rcall pop_gset5
01F4 .dbline 0 ; func end
01F4 0895 ret
01F6 .dbsym r intval 10 i
01F6 .dbsym r data 14 i
01F6 .dbsym r ldata 12 c
01F6 .dbsym r address 22 i
01F6 .dbsym r val 20 c
01F6 .dbend
01F6 .dbfunc e main _main fV
01F6 ; funcptr -> R20,R21
.even
01F6 _main::
01F6 .dbline -1
01F6 .dbline 178
01F6 ; else if(val!=0x1b) // if not esc
01F6 ; {
01F6 ; sendchar('?');
01F6 ; }
01F6 ; }
01F6 ; }
01F6 ; void main(void)
01F6 ; {
01F6 .dbline 179
01F6 ; void (*funcptr)( void ) = 0x0000; // Set up function pointer
01F6 4427 clr R20
01F8 5527 clr R21
01FA .dbline 180
01FA ; DDRD=0;
01FA 2224 clr R2
01FC 21BA out 0x11,R2
01FE .dbline 181
01FE ; PORTD=0xff;
01FE 8FEF ldi R24,255
0200 82BB out 0x12,R24
0202 .dbline 182
0202 ; uart_init();
0202 06DF rcall _uart_init
0204 .dbline 183
0204 ; if ((PIND&0x04)==0)
0204 8299 sbic 0x10,2
0206 04C0 rjmp L70
0208 .dbline 184
0208 ; {
0208 .dbline 185
0208 ; PORTD=0;
0208 2224 clr R2
020A 22BA out 0x12,R2
020C .dbline 186
020C ; iap();
020C 0EDF rcall _iap
020E .dbline 187
020E ; }
020E 03C0 rjmp L71
0210 L70:
0210 .dbline 189
0210 E42F mov R30,R20
0212 F52F mov R31,R21
0214 00D0 rcall xicall
0216 L71:
0216 .dbline -2
0216 .dbline 190
0216 ; else
0216 ; funcptr();
0216 ; }
0216 L69:
0216 .dbline 0 ; func end
0216 0895 ret
0218 .dbsym r funcptr 20 pfV
0218 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -