📄 pp.lst
字号:
02D2 C00C RJMP 0x02DF
(0224) data1++;data2++;leng1--;leng2--;
02D3 5F0F SUBI R16,0xFF
02D4 4F1F SBCI R17,0xFF
02D5 5F6F SUBI R22,0xFF
02D6 4F7F SBCI R23,0xFF
02D7 952A DEC R18
02D8 954A DEC R20
(0225) if(!leng2) return 0;
02D9 F411 BNE 0x02DC
02DA 2700 CLR R16
02DB C003 RJMP 0x02DF
02DC 2322 TST R18
02DD F769 BNE 0x02CB
(0226) }
(0227) return 1;
02DE E001 LDI R16,1
02DF D270 RCALL pop_gset2
02E0 9508 RET
_delay_ms:
time --> R16
02E1 D278 RCALL push_gset2
(0228) }
(0229) //***************************************************************毫秒级延时37//
(0230) void delay_ms(unsigned int time)
(0231) {
02E2 C011 RJMP 0x02F4
(0232) while(time)
(0233) {
(0234) while(TCNT0<(fosc/64/1000));
02E3 E74D LDI R20,0x7D
02E4 E050 LDI R21,0
02E5 E060 LDI R22,0
02E6 E070 LDI R23,0
02E7 B622 IN R2,0x32
02E8 2433 CLR R3
02E9 2444 CLR R4
02EA 2455 CLR R5
02EB 1624 CP R2,R20
02EC 0635 CPC R3,R21
02ED 0646 CPC R4,R22
02EE 0657 CPC R5,R23
02EF F39C BLT 0x02E3
(0235) TCNT0=0;
02F0 2422 CLR R2
02F1 BE22 OUT 0x32,R2
(0236) time--;
02F2 5001 SUBI R16,1
02F3 4010 SBCI R17,0
02F4 3000 CPI R16,0
02F5 0701 CPC R16,R17
02F6 F761 BNE 0x02E3
02F7 D258 RCALL pop_gset2
02F8 9508 RET
(0237) }
(0238) }
(0239) //************************************************************ATMEGA8初始化38//
(0240) void init_atmega(void)
(0241) {
(0242) SFIOR&=(~(1<<PUD));//上拉SFIOR
_init_atmega:
02F9 B780 IN R24,0x30
02FA 7F8B ANDI R24,0xFB
02FB BF80 OUT 0x30,R24
(0243) DDRB=0xFF;
02FC EF8F LDI R24,0xFF
02FD BB87 OUT 0x17,R24
(0244) DDRD=0xF8;//,PD7(E),PD6(RW),PD5(RS),PD4(SPS),PD2(ICC),PD1(TXD),PD0(RXD);
02FE EF88 LDI R24,0xF8
02FF BB81 OUT 0x11,R24
(0245) PORTD=0xFB;
0300 EF8B LDI R24,0xFB
0301 BB82 OUT 0x12,R24
(0246) DDRC=0x0F;//PC4,PC3(REN),PC2(GREEN),PC0(BUZZER)
0302 E08F LDI R24,0xF
0303 BB84 OUT 0x14,R24
(0247) PORTC=0x01;
0304 E081 LDI R24,1
0305 BB85 OUT 0x15,R24
(0248) UCSRB=(1<<RXEN)|(1<<TXEN);
0306 E188 LDI R24,0x18
0307 B98A OUT 0x0A,R24
(0249) UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
0308 E886 LDI R24,0x86
0309 BD80 OUT 0x20,R24
(0250) UBRRH=(fosc/16/(baud+1))/256;
030A 2422 CLR R2
030B BC20 OUT 0x20,R2
(0251) UBRRL=(fosc/16/(baud+1))%256;
030C E18A LDI R24,0x1A
030D B989 OUT 0x09,R24
(0252) TCCR2=0x0a;
030E E08A LDI R24,0xA
030F BD85 OUT 0x25,R24
(0253) TCNT2=0x00;
0310 BC24 OUT 0x24,R2
(0254) OCR2=fosc/8/2000;//500us
0311 EF84 LDI R24,0xF4
0312 E091 LDI R25,1
0313 BD83 OUT 0x23,R24
(0255) TIMSK=1<<OCIE2;
0314 E880 LDI R24,0x80
0315 BF89 OUT 0x39,R24
(0256) TCCR0=(1<<CS01)|(1<<CS00);//64分频
0316 E083 LDI R24,3
0317 BF83 OUT 0x33,R24
(0257) TCNT0=0;
0318 BE22 OUT 0x32,R2
(0258) SEI();
0319 9478 BSET 7
031A 9508 RET
_RxGsm:
i --> R20
031B D240 RCALL push_gset1
031C 9723 SBIW R28,3
(0259) }
(0260) //*****************************************************************接收远程41//
(0261) void RxGsm(void)
(0262) {
(0263) unsigned char i;
(0264) switch(RxGsmAddr)
031D 91400062 LDS R20,RxGsmAddr
031F 2755 CLR R21
0320 3040 CPI R20,0
0321 0745 CPC R20,R21
0322 F071 BEQ 0x0331
0323 3041 CPI R20,1
0324 E0E0 LDI R30,0
0325 075E CPC R21,R30
0326 F071 BEQ 0x0335
0327 3042 CPI R20,2
0328 E0E0 LDI R30,0
0329 075E CPC R21,R30
032A F0F1 BEQ 0x0349
032B 3043 CPI R20,3
032C E0E0 LDI R30,0
032D 075E CPC R21,R30
032E F409 BNE 0x0330
032F C08D RJMP 0x03BD
0330 C0DE RJMP 0x040F
(0265) {
(0266) case(0)://接收停止
(0267) {
(0268) RxGsmAddr=0;return;
0331 2422 CLR R2
0332 92200062 STS RxGsmAddr,R2
0334 C0DA RJMP 0x040F
(0269) }
(0270) case(1)://接收初始
(0271) {
(0272) if(!(PIND&0x04)&&(RxCalAddr==1))
0335 9982 SBIC 0x10,2
0336 C0D8 RJMP 0x040F
0337 91800061 LDS R24,RxCalAddr
0339 3081 CPI R24,1
033A F009 BEQ 0x033C
033B C0D3 RJMP 0x040F
(0273) {RxGsmAddr=2;RxUartWait=0;RxUartAddr=1;return;}
033C E082 LDI R24,2
033D 93800062 STS RxGsmAddr,R24
033F 2422 CLR R2
0340 2433 CLR R3
0341 9230006E STS RxUartWait+1,R3
0343 9220006D STS RxUartWait,R2
0345 E081 LDI R24,1
0346 93800072 STS RxUartAddr,R24
0348 C0C6 RJMP 0x040F
(0274) else return;
(0275) }
(0276) case(2)://接收是否完成
(0277) {
(0278) if(!(PIND&0x04)&&(RxCalAddr==1))
0349 9982 SBIC 0x10,2
034A C06E RJMP 0x03B9
034B 91800061 LDS R24,RxCalAddr
034D 3081 CPI R24,1
034E F009 BEQ 0x0350
034F C069 RJMP 0x03B9
(0279) {
(0280) if(RxUartAddr) return;
0350 90200072 LDS R2,RxUartAddr
0352 2022 TST R2
0353 F009 BEQ 0x0355
0354 C0BA RJMP 0x040F
(0281) if(CmpsRom(RxUartDbuf,RxUartLeng,"DD",2)) {RxGsmAddr=1;OutToneCount=4;return;}//DD
0355 E082 LDI R24,2
0356 838A STD Y+2,R24
0357 EC87 LDI R24,0xC7
0358 E090 LDI R25,0
0359 8399 STD Y+1,R25
035A 8388 STD Y+0,R24
035B 9120006F LDS R18,RxUartLeng
035D E703 LDI R16,0x73
035E E010 LDI R17,0
035F DF4B RCALL _CmpsRom
0360 2300 TST R16
0361 F039 BEQ 0x0369
0362 E081 LDI R24,1
0363 93800062 STS RxGsmAddr,R24
0365 E084 LDI R24,4
0366 93800066 STS OutToneCount,R24
0368 C0A6 RJMP 0x040F
(0282) OutToneCount=2;
0369 E082 LDI R24,2
036A 93800066 STS OutToneCount,R24
(0283) CopyRam(RxUartDbuf+2,RxUartLeng,writecaltemp,16);//写信息到卡
036C E180 LDI R24,0x10
036D 838A STD Y+2,R24
036E E78E LDI R24,0x7E
036F E091 LDI R25,1
0370 8399 STD Y+1,R25
0371 8388 STD Y+0,R24
0372 9120006F LDS R18,RxUartLeng
0374 E705 LDI R16,0x75
0375 E010 LDI R17,0
0376 DF1C RCALL _CopyRam
(0284) checktemp=0;
0377 2422 CLR R2
0378 9220017D STS checktemp,R2
(0285) for(i=2;i<=11;i++){checktemp^=writecal1[i];}
037A E042 LDI R20,2
037B C00D RJMP 0x0389
037C E48A LDI R24,0x4A
037D E090 LDI R25,0
037E 2FE4 MOV R30,R20
037F 27FF CLR R31
0380 0FE8 ADD R30,R24
0381 1FF9 ADC R31,R25
0382 91E4 LPM R30,0(Z)
0383 9020017D LDS R2,checktemp
0385 262E EOR R2,R30
0386 9220017D STS checktemp,R2
0388 9543 INC R20
0389 E08B LDI R24,0xB
038A 1784 CP R24,R20
038B F780 BCC 0x037C
(0286) for(i=0;i<16;i++){checktemp^=writecaltemp[i];}
038C 2744 CLR R20
038D C00D RJMP 0x039B
038E E78E LDI R24,0x7E
038F E091 LDI R25,1
0390 2FE4 MOV R30,R20
0391 27FF CLR R31
0392 0FE8 ADD R30,R24
0393 1FF9 ADC R31,R25
0394 8020 LDD R2,Z+0
0395 9030017D LDS R3,checktemp
0397 2432 EOR R3,R2
0398 9230017D STS checktemp,R3
039A 9543 INC R20
039B 3140 CPI R20,0x10
039C F388 BCS 0x038E
(0287) RxGsmAddr=3;RxUartAddr=1;RxUartWait=20;
039D E083 LDI R24,3
039E 93800062 STS RxGsmAddr,R24
03A0 E081 LDI R24,1
03A1 93800072 STS RxUartAddr,R24
03A3 E184 LDI R24,0x14
03A4 E090 LDI R25,0
03A5 9390006E STS RxUartWait+1,R25
03A7 9380006D STS RxUartWait,R24
(0288) TxRomUart(writecal1,12);TxRamUart(writecaltemp,16);TxRamUart(&checktemp,1);
03A9 E02C LDI R18,0xC
03AA E030 LDI R19,0
03AB E40A LDI R16,0x4A
03AC E010 LDI R17,0
03AD DEB1 RCALL _TxRomUart
03AE E120 LDI R18,0x10
03AF E030 LDI R19,0
03B0 E70E LDI R16,0x7E
03B1 E011 LDI R17,1
03B2 DEBA RCALL _TxRamUart
03B3 E021 LDI R18,1
03B4 E030 LDI R19,0
03B5 E70D LDI R16,0x7D
03B6 E011 LDI R17,1
03B7 DEB5 RCALL _TxRamUart
(0289) return;
03B8 C056 RJMP 0x040F
(0290) }
(0291) else {RxGsmAddr=1;return;}
03B9 E081 LDI R24,1
03BA 93800062 STS RxGsmAddr,R24
03BC C052 RJMP 0x040F
(0292) }
(0293) case(3)://判断写卡是否成功
(0294) {
(0295) if(RxUartAddr) return;
03BD 90200072 LDS R2,RxUartAddr
03BF 2022 TST R2
03C0 F009 BEQ 0x03C2
03C1 C04D RJMP 0x040F
(0296) if(CmpsRom(RxUartDbuf,RxUartLeng,writecal1,2)) {RxCalAddr=1;RxGsmAddr=1;OutToneCount=4;TxRomUart("EEWriteERROR ",13);TxRomUart(" ",16);return;}
03C2 E082 LDI R24,2
03C3 838A STD Y+2,R24
03C4 E48A LDI R24,0x4A
03C5 E090 LDI R25,0
03C6 8399 STD Y+1,R25
03C7 8388 STD Y+0,R24
03C8 9120006F LDS R18,RxUartLeng
03CA E703 LDI R16,0x73
03CB E010 LDI R17,0
03CC DEDE RCALL _CmpsRom
03CD 2300 TST R16
03CE F099 BEQ 0x03E2
03CF E081 LDI R24,1
03D0 93800061 STS RxCalAddr,R24
03D2 93800062 STS RxGsmAddr,R24
03D4 E084 LDI R24,4
03D5 93800066 STS OutToneCount,R24
03D7 E02D LDI R18,0xD
03D8 E030 LDI R19,0
03D9 EB09 LDI R16,0xB9
03DA E010 LDI R17,0
03DB DE83 RCALL _TxRomUart
03DC E120 LDI R18,0x10
03DD E030 LDI R19,0
03DE EA08 LDI R16,0xA8
03DF E010 LDI R17,0
03E0 DE7E RCALL _TxRomUart
03E1 C02D RJMP 0x040F
(0297) if(CmpsRom(RxUartDbuf+3,RxUartLeng,writecal1+3,1)) {RxCalAddr=1;RxGsmAddr=1;OutToneCount=4;TxRomUart("EEWriteERROR ",13);TxRomUart(" ",16);return;}
03E2 E081 LDI R24,1
03E3 838A STD Y+2,R24
03E4 E48D LDI R24,0x4D
03E5 E090 LDI R25,0
03E6 8399 STD Y+1,R25
03E7 8388 STD Y+0,R24
03E8 9120006F LDS R18,RxUartLeng
03EA E706 LDI R16,0x76
03EB E010 LDI R17,0
03EC DEBE RCALL _CmpsRom
03ED 2300 TST R16
03EE F099 BEQ 0x0402
03EF E081 LDI R24,1
03F0 93800061 STS RxCalAddr,R24
03F2 93800062 STS RxGsmAddr,R24
03F4 E084 LDI R24,4
03F5 93800066 STS OutToneCount,R24
03F7 E02D LDI R18,0xD
03F8 E030 LDI R19,0
03F9 EB09 LDI R16,0xB9
03FA E010 LDI R17,0
03FB DE63 RCALL _TxRomUart
03FC E120 LDI R18,0x10
03FD E030 LDI R19,0
03FE EA08 LDI R16,0xA8
03FF E010 LDI R17,0
0400 DE5E RCALL _TxRomUart
0401 C00D RJMP 0x040F
(0298) TxRomUart("EEWrite OK ",13);//EE
0402 E02D LDI R18,0xD
0403 E030 LDI R19,0
0404 E90A LDI R16,0x9A
0405 E010 LDI R17,0
0406 DE58 RCALL _TxRomUart
(0299) TxRomUart(" ",16);
0407 E120 LDI R18,0x10
0408 E030 LDI R19,0
0409 EA08 LDI R16,0xA8
040A E010 LDI R17,0
040B DE53 RCALL _TxRomUart
(0300) RxGsmAddr=1;return;
040C E081 LDI R24,1
040D 93800062 STS RxGsmAddr,R24
040F 9623 ADIW R28,3
0410 D14E RCALL pop_gset1
0411 9508 RET
_RxCal:
0412 D149 RCALL push_gset1
0413 9723 SBIW R28,3
(0301) }
(0302) }
(0303) }
(0304) //***************************************************************接收卡信息42//
(0305) void RxCal(void)
(0306) {
(0307) switch(RxCalAddr)
0414 91400061 LDS R20,RxCalAddr
0416 2755 CLR R21
0417 3040 CPI R20,0
0418 0745 CPC R20,R21
0419 F099 BEQ 0x042D
041A 3041 CPI R20,1
041B E0E0 LDI R30,0
041C 075E CPC R21,R30
041D F099 BEQ 0x0431
041E 3042 CPI R20,2
041F E0E0 LDI R30,0
0420 075E CPC R21,R30
0421 F179 BEQ 0x0451
0422 3043 CPI R20,3
0423 E0E0 LDI R30,0
0424 075E CPC R21,R30
0425 F409 BNE 0x0427
0426 C055 RJMP 0x047C
0427 3044 CPI R20,4
0428 E0E0 LDI R30,0
0429 075E CPC R21,R30
042A F409 BNE 0x042C
042B C0C5 RJMP 0x04F1
042C C0EB RJMP 0x0518
(0308) {
(0309) case(0)://检测停止
(0310) {
(0311) RxCalAddr=0;return;
042D 2422 CLR R2
042E 92200061 STS RxCalAddr,R2
0430 C0E7 RJMP 0x0518
(0312) }
(0313) case(1)://检测卡是否还在
(0314) {
(0315) if(!(PIND&0x04)) return;
0431 9982 SBIC 0x10,2
0432 C001 RJMP 0x0434
0433 C0E4 RJMP 0x0518
(0316) TxRomUart("EE ",13);//GG
0434 E02D LDI R18,0xD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -