📄 mega16.lst
字号:
0212 8020 LDD R2,Z+0
0213 BA2B OUT 0x1B,R2
(0242) if(LedDp&0x08)PORTB|=0x10;
0214 90200076 LDS R2,LedDp
0216 FE23 SBRS R2,3
0217 C002 RJMP 0x021A
0218 9AC4 SBI 0x18,4
0219 C003 RJMP 0x021D
(0243) else PORTB&=0xEF;
021A B388 IN R24,0x18
021B 7E8F ANDI R24,0xEF
021C BB88 OUT 0x18,R24
(0244) ms_delay(delay);
021D 2F04 MOV R16,R20
021E 2711 CLR R17
021F D003 RCALL _ms_delay
0220 940E02EF CALL pop_gset3
0222 9508 RET
_ms_delay:
d1 --> R20
d2 --> R22
delay --> R16
0223 940E02F8 CALL push_gset2
(0245)
(0246)
(0247) }
(0248) void ms_delay(uint delay)
(0249) {
(0250) int d1,d2;
(0251) for(d1=0;d1<delay;d1++)
0225 2744 CLR R20
0226 2755 CLR R21
0227 C00A RJMP 0x0232
(0252) {
(0253) for(d2=0;d2<1000;d2++);
0228 2766 CLR R22
0229 2777 CLR R23
022A 5F6F SUBI R22,0xFF
022B 4F7F SBCI R23,0xFF
022C 3E68 CPI R22,0xE8
022D E0E3 LDI R30,3
022E 077E CPC R23,R30
022F F3D4 BLT 0x022A
0230 5F4F SUBI R20,0xFF
0231 4F5F SBCI R21,0xFF
0232 1740 CP R20,R16
0233 0751 CPC R21,R17
0234 F398 BCS 0x0228
0235 940E02EC CALL pop_gset2
0237 9508 RET
(0254) }
(0255) }
(0256) //call this routine to initialise all peripherals
(0257) void init_devices(void)
(0258) {
(0259) //stop errant interrupts until set up
(0260) CLI(); //disable all interrupts
_init_devices:
0238 94F8 BCLR 7
(0261) port_init();
0239 DE1E RCALL _port_init
(0262) uart0_init();
023A DE44 RCALL _uart0_init
(0263) timer1_init();
023B DE2D RCALL _timer1_init
(0264) adc_init();
023C DEF6 RCALL _adc_init
(0265) MCUCR = 0x02;
023D E082 LDI R24,2
023E BF85 OUT 0x35,R24
(0266) GICR = 0x40;
023F E480 LDI R24,0x40
0240 BF8B OUT 0x3B,R24
(0267) TIMSK = 0x04; //timer interrupt sources
0241 E084 LDI R24,4
0242 BF89 OUT 0x39,R24
(0268)
(0269) SEI(); //re-enable interrupts
0243 9478 BSET 7
0244 9508 RET
(0270) //all peripherals are now initialised
(0271) }
(0272)
(0273) ////////////////////////////////////////////////////////////////////////////////
(0274) void main()
(0275) {
(0276) int i,adc=0,led=0,key=0;
_main:
i --> Y+1
leddptt --> R12
ttmp --> R12
key --> R22
led --> R10
adc --> R20
0245 2744 CLR R20
0246 2755 CLR R21
0247 24AA CLR R10
0248 24BB CLR R11
0249 2766 CLR R22
024A 2777 CLR R23
(0277) uchar ttmp,leddptt=0;
024B 24CC CLR R12
(0278) init_devices();
024C DFEB RCALL _init_devices
(0279) temp_data=0x13;
024D E183 LDI R24,0x13
024E 93800087 STS temp_data,R24
0250 C04F RJMP 0x02A0
(0280) while(1)
(0281) {
(0282)
(0283) //display second flag
(0284)
(0285)
(0286)
(0287) if(++led>240)
0251 01C5 MOVW R24,R10
0252 9601 ADIW R24,1
0253 015C MOVW R10,R24
0254 EF80 LDI R24,0xF0
0255 E090 LDI R25,0
0256 158A CP R24,R10
0257 059B CPC R25,R11
0258 F494 BGE 0x026B
(0288) {
(0289) PORTD ^= (LRledReg<<3);//LR-LED
0259 90200078 LDS R2,LRledReg
025B 0C22 LSL R2
025C 0C22 LSL R2
025D 0C22 LSL R2
025E B232 IN R3,0x12
025F 2432 EOR R3,R2
0260 BA32 OUT 0x12,R3
(0290) led=0;
0261 24AA CLR R10
0262 24BB CLR R11
(0291) M8Mode ^= (LRledReg&0x03);
0263 91800078 LDS R24,LRledReg
0265 7083 ANDI R24,3
0266 90200063 LDS R2,M8Mode
0268 2628 EOR R2,R24
0269 92200063 STS M8Mode,R2
(0292) }
(0293) if(++adc>100)
026B 5F4F SUBI R20,0xFF
026C 4F5F SBCI R21,0xFF
026D E684 LDI R24,0x64
026E E090 LDI R25,0
026F 1784 CP R24,R20
0270 0795 CPC R25,R21
0271 F424 BGE 0x0276
(0294) {
(0295) tx_pack();
0272 DE7D RCALL _tx_pack
(0296) ADCSRA |=(1<<ADSC); //启动AD转换
0273 9A36 SBI 0x06,6
(0297) adc=0;
0274 2744 CLR R20
0275 2755 CLR R21
(0298) }
(0299) if(++key>200)
0276 01CB MOVW R24,R22
0277 9601 ADIW R24,1
0278 01BC MOVW R22,R24
0279 EC88 LDI R24,0xC8
027A E090 LDI R25,0
027B 1786 CP R24,R22
027C 0797 CPC R25,R23
027D F504 BGE 0x029E
(0300) {
(0301) key=0;
027E 2766 CLR R22
027F 2777 CLR R23
(0302) ttmp = PINC&0x03;
0280 B383 IN R24,0x13
0281 7083 ANDI R24,3
0282 2EC8 MOV R12,R24
(0303) if(ttmp==0x03)
0283 3083 CPI R24,3
0284 F449 BNE 0x028E
(0304) {
(0305) PORTD |=0x18;//关LR-LED
0285 B382 IN R24,0x12
0286 6188 ORI R24,0x18
0287 BB82 OUT 0x12,R24
(0306) M8Mode=0;
0288 2422 CLR R2
0289 92200063 STS M8Mode,R2
(0307) LRledReg=0;
028B 92200078 STS LRledReg,R2
(0308) }
028D C005 RJMP 0x0293
(0309) else LRledReg = (~(ttmp))&0x03;
028E 2D8C MOV R24,R12
028F 9580 COM R24
0290 7083 ANDI R24,3
0291 93800078 STS LRledReg,R24
(0310) LedDp=LedDp<<1;
0293 90200076 LDS R2,LedDp
0295 0C22 LSL R2
0296 92200076 STS LedDp,R2
(0311) if(LedDp>0x08)LedDp=0x01;
0298 E088 LDI R24,0x8
0299 1582 CP R24,R2
029A F418 BCC 0x029E
029B E081 LDI R24,1
029C 93800076 STS LedDp,R24
(0312)
(0313) }
(0314) led_display(1);
FILE: <library>
029E E001 LDI R16,1
029F DF01 RCALL _led_display
02A0 CFB0 RJMP 0x0251
02A1 9508 RET
mod16s:
02A2 9468 BSET 6
02A3 92DA ST R13,-Y
02A4 2ED1 MOV R13,R17
02A5 C004 RJMP 0x02AA
div16s:
02A6 94E8 BCLR 6
02A7 92DA ST R13,-Y
02A8 2ED1 MOV R13,R17
02A9 26D3 EOR R13,R19
02AA FF17 SBRS R17,7
02AB C004 RJMP 0x02B0
02AC 9510 COM R17
02AD 9500 COM R16
02AE 5F0F SUBI R16,0xFF
02AF 4F1F SBCI R17,0xFF
02B0 FF37 SBRS R19,7
02B1 C004 RJMP 0x02B6
02B2 9530 COM R19
02B3 9520 COM R18
02B4 5F2F SUBI R18,0xFF
02B5 4F3F SBCI R19,0xFF
02B6 940E02C3 CALL xdiv16u
02B8 FED7 SBRS R13,7
02B9 C004 RJMP 0x02BE
02BA 9510 COM R17
02BB 9500 COM R16
02BC 5F0F SUBI R16,0xFF
02BD 4F1F SBCI R17,0xFF
02BE 90D9 LD R13,Y+
02BF 9508 RET
mod16u:
02C0 9468 BSET 6
02C1 C001 RJMP xdiv16u
div16u:
02C2 94E8 BCLR 6
xdiv16u:
02C3 92EA ST R14,-Y
02C4 92FA ST R15,-Y
02C5 938A ST R24,-Y
02C6 24EE CLR R14
02C7 24FF CLR R15
02C8 E180 LDI R24,0x10
02C9 0F00 LSL R16
02CA 1F11 ROL R17
02CB 1CEE ROL R14
02CC 1CFF ROL R15
02CD 16E2 CP R14,R18
02CE 06F3 CPC R15,R19
02CF F018 BCS 0x02D3
02D0 1AE2 SUB R14,R18
02D1 0AF3 SBC R15,R19
02D2 9503 INC R16
02D3 958A DEC R24
02D4 F7A1 BNE 0x02C9
02D5 F416 BRTC 0x02D8
02D6 2D0E MOV R16,R14
02D7 2D1F MOV R17,R15
02D8 9189 LD R24,Y+
02D9 90F9 LD R15,Y+
02DA 90E9 LD R14,Y+
02DB 9508 RET
empy16s:
02DC 920A ST R0,-Y
02DD 921A ST R1,-Y
02DE 938A ST R24,-Y
02DF 939A ST R25,-Y
02E0 9F02 MUL R16,R18
02E1 01C0 MOVW R24,R0
02E2 9F12 MUL R17,R18
02E3 0D90 ADD R25,R0
02E4 9F03 MUL R16,R19
02E5 0D90 ADD R25,R0
02E6 018C MOVW R16,R24
02E7 9199 LD R25,Y+
02E8 9189 LD R24,Y+
02E9 9019 LD R1,Y+
02EA 9009 LD R0,Y+
02EB 9508 RET
pop_gset2:
02EC E0E2 LDI R30,2
02ED 940C02FE JMP pop
pop_gset3:
02EF E0E4 LDI R30,4
02F0 940C02FE JMP pop
push_gset5:
02F2 92FA ST R15,-Y
02F3 92EA ST R14,-Y
push_gset4:
02F4 92DA ST R13,-Y
02F5 92CA ST R12,-Y
push_gset3:
02F6 92BA ST R11,-Y
02F7 92AA ST R10,-Y
push_gset2:
02F8 937A ST R23,-Y
02F9 936A ST R22,-Y
push_gset1:
02FA 935A ST R21,-Y
02FB 934A ST R20,-Y
02FC 9508 RET
pop_gset1:
02FD E0E1 LDI R30,1
pop:
02FE 9149 LD R20,Y+
02FF 9159 LD R21,Y+
0300 FDE0 SBRC R30,0
0301 9508 RET
0302 9169 LD R22,Y+
0303 9179 LD R23,Y+
0304 FDE1 SBRC R30,1
0305 9508 RET
0306 90A9 LD R10,Y+
0307 90B9 LD R11,Y+
0308 FDE2 SBRC R30,2
0309 9508 RET
030A 90C9 LD R12,Y+
030B 90D9 LD R13,Y+
030C FDE3 SBRC R30,3
030D 9508 RET
030E 90E9 LD R14,Y+
030F 90F9 LD R15,Y+
0310 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -