📄 detectaphone.lst
字号:
047C 9894 CBI 0x12,4
(0485) DelayMs(50); // 激活MC55串口
047D E302 LDI R16,0x32
047E E010 LDI R17,0
047F D05D RCALL _DelayMs
(0486) SetRTS();
0480 9A94 SBI 0x12,4
(0487)
(0488) // DelayMs(1000); // 激活MC55串口
(0489)
(0490) TxIndex = 0;
0481 2422 CLR R2
0482 922000A5 STS TxIndex,R2
(0491) RxIndex = 0;
0484 922000C6 STS RxIndex,R2
(0492)
(0493) while(!DetQEITING());
0486 DF83 RCALL _DetQEITING
0487 2300 TST R16
0488 F3E9 BEQ 0x0486
(0494)
(0495) PutString("AT",2,0);
0489 2422 CLR R2
048A 8228 STD Y+0,R2
048B E022 LDI R18,2
048C E908 LDI R16,0x98
048D E010 LDI R17,0
048E DDE2 RCALL _PutString
(0496)
(0497) DelayMs(500);
048F EF04 LDI R16,0xF4
0490 E011 LDI R17,1
0491 D04B RCALL _DelayMs
(0498)
(0499) PutString("AT",2,1);
0492 E081 LDI R24,1
0493 8388 STD Y+0,R24
0494 E022 LDI R18,2
0495 E908 LDI R16,0x98
0496 E010 LDI R17,0
0497 DDD9 RCALL _PutString
(0500)
(0501) PutString("ATV0",4,1);
0498 E081 LDI R24,1
0499 8388 STD Y+0,R24
049A E024 LDI R18,4
049B E903 LDI R16,0x93
049C E010 LDI R17,0
049D DDD3 RCALL _PutString
(0502)
(0503) PutString("ATE0",4,1);
049E E081 LDI R24,1
049F 8388 STD Y+0,R24
04A0 E024 LDI R18,4
04A1 E80E LDI R16,0x8E
04A2 E010 LDI R17,0
04A3 DDCD RCALL _PutString
(0504)
(0505) PutString("AT+CNMI=2,1",11,1);
04A4 E081 LDI R24,1
04A5 8388 STD Y+0,R24
04A6 E02B LDI R18,0xB
04A7 E802 LDI R16,0x82
04A8 E010 LDI R17,0
04A9 DDC7 RCALL _PutString
(0506)
(0507) PutString("AT+CMGF=1",9,1);
04AA E081 LDI R24,1
04AB 8388 STD Y+0,R24
04AC E029 LDI R18,0x9
04AD E708 LDI R16,0x78
04AE E010 LDI R17,0
04AF DDC1 RCALL _PutString
(0508)
(0509) Delete_SMS(ALL);
04B0 EF0F LDI R16,0xFF
04B1 DE75 RCALL _Delete_SMS
(0510)
(0511) PhoneNum_to_EEPROM();
04B2 D06C RCALL _PhoneNum_to_EEPROM
(0512)
(0513) EEPROM_to_PhoneNum();
04B3 D07E RCALL _EEPROM_to_PhoneNum
04B4 9621 ADIW R28,1
04B5 9508 RET
(0514)
(0515) }
(0516)
(0517) /////////////////////////////////////////////////////////////////////////////////
(0518) /////////////////////////////////////////////////////////////////////////////////
(0519) /////////////////////////////////////////////////////////////////////////////////
(0520) /////////////////////////////////////////////////////////////////////////////////
(0521)
(0522) /*
(0523) #pragma interrupt_handler int0_isr:2
(0524) void int0_isr(void)
(0525) {
(0526) //external interupt on INT0
(0527) DialNum();
(0528)
(0529) }
(0530)
(0531) #pragma interrupt_handler int1_isr:3
(0532) void int1_isr(void)
(0533) {
(0534) //external interupt on INT1
(0535) }
(0536) */
(0537) ////////////////////////////////////////////////////////////////////////////////
(0538)
(0539) void port_init(void)
(0540) {
(0541) PORTB = 0x01;
_port_init:
04B6 E081 LDI R24,1
04B7 BB88 OUT 0x18,R24
(0542) DDRB = 0x01;
04B8 BB87 OUT 0x17,R24
(0543) PORTC = 0x00; //m103 output only
04B9 2422 CLR R2
04BA BA25 OUT 0x15,R2
(0544) DDRC = 0x02;
04BB E082 LDI R24,2
04BC BB84 OUT 0x14,R24
(0545) PORTD = 0x0C;
04BD E08C LDI R24,0xC
04BE BB82 OUT 0x12,R24
(0546) DDRD = 0x50;
04BF E580 LDI R24,0x50
04C0 BB81 OUT 0x11,R24
04C1 9508 RET
(0547) }
(0548)
(0549) //UART0 initialize
(0550) // desired baud rate: 19200
(0551) // actual: baud rate:19200 (0.0%)
(0552) // char size: 8 bit
(0553) // parity: Disabled
(0554) //#ifdef XTAL == 3.6864
(0555)
(0556) void uart0_init(void)
(0557) {
(0558) UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
04C2 2422 CLR R2
04C3 B82A OUT 0x0A,R2
(0559) UCSRA = 0x00;
04C4 B82B OUT 0x0B,R2
(0560) UCSRC = BIT(URSEL) | 0x06;
04C5 E886 LDI R24,0x86
04C6 BD80 OUT 0x20,R24
(0561) UBRRL = 0x0B; //set baud rate lo
04C7 E08B LDI R24,0xB
04C8 B989 OUT 0x09,R24
(0562) UBRRH = 0x00; //set baud rate hi
04C9 BC20 OUT 0x20,R2
(0563) UCSRB = 0xD8;
04CA ED88 LDI R24,0xD8
04CB B98A OUT 0x0A,R24
04CC 9508 RET
(0564) }
(0565) //#endif
(0566)
(0567) //#ifdef XTAL == 7.3728
(0568) /*void uart0_init(void)
(0569) {
(0570) UCSRB = 0x00; //disable while setting baud rate
(0571) UCSRA = 0x00;
(0572) UCSRC = BIT(URSEL) | 0x06;
(0573) UBRRL = 0x17; //set baud rate lo
(0574) UBRRH = 0x00; //set baud rate hi
(0575) UCSRB = 0xD8;
(0576) }*/
(0577) //#endif
(0578)
(0579) //call this routine to initialize all peripherals
(0580) void init_devices(void)
(0581) {
(0582) //stop errant interrupts until set up
(0583) CLI(); //disable all interrupts
_init_devices:
04CD 94F8 BCLR 7
(0584) port_init();
04CE DFE7 RCALL _port_init
(0585) uart0_init();
04CF DFF2 RCALL _uart0_init
(0586)
(0587) MCUCR = 0x00;
04D0 2422 CLR R2
04D1 BE25 OUT 0x35,R2
(0588) GICR = 0x00; //0xC0;
04D2 BE2B OUT 0x3B,R2
(0589) TIMSK = 0x00; //timer interrupt sources
04D3 BE29 OUT 0x39,R2
(0590) SEI(); //re-enable interrupts
04D4 9478 BSET 7
(0591)
(0592) InitMC55();
04D5 DF91 RCALL _InitMC55
04D6 9508 RET
(0593) }
(0594)
(0595)
(0596)
(0597) //
(0598) void main(void)
(0599) {
(0600) DelayMs(1000);
_main:
04D7 EE08 LDI R16,0xE8
04D8 E013 LDI R17,3
04D9 D003 RCALL _DelayMs
(0601) init_devices();
04DA DFF2 RCALL _init_devices
(0602) work();
04DB DF5B RCALL _work
04DC 9508 RET
_DelayMs:
i --> R20
ms --> R16
04DD D077 RCALL push_gset1
FILE: D:\MyProject\SMS-MC55\Code\窃听器delay\delay.c
(0001) ////////////////////////////////////////////////////////////////////////////////
(0002) // ICC-AVR application builder : 2006-6-25 下午 06:02:39
(0003) // Target : M8
(0004) // Crystal: 3.6864Mhz
(0005) // Author: Anwarye
(0006) // Title: Detcetaphone
(0007) ////////////////////////////////////////////////////////////////////////////////
(0008)
(0009) #include <iom8v.h>
(0010) #include <macros.h>
(0011) //#include "define.h"
(0012)
(0013) extern volatile unsigned char PhoneNum[12];
(0014)
(0015)
(0016) void DelayMs(unsigned int ms)
(0017) {
04DE C00A RJMP 0x04E9
(0018) unsigned int i;
(0019) while(ms--)
(0020) {
(0021) for(i=0;i<450;i++) // 3.6864MHz = 450 ,7.3728MHz = 900
04DF 2744 CLR R20
04E0 2755 CLR R21
04E1 C003 RJMP 0x04E5
(0022) {
(0023) asm("NOP");
04E2 0000 NOP
04E3 5F4F SUBI R20,0xFF
04E4 4F5F SBCI R21,0xFF
04E5 3C42 CPI R20,0xC2
04E6 E0E1 LDI R30,1
04E7 075E CPC R21,R30
04E8 F3C8 BCS 0x04E2
04E9 0118 MOVW R2,R16
04EA 5001 SUBI R16,1
04EB 4010 SBCI R17,0
04EC 2022 TST R2
04ED F789 BNE 0x04DF
04EE 2033 TST R3
04EF F779 BNE 0x04DF
04F0 D067 RCALL pop_gset1
04F1 9508 RET
_Write_EEPROM:
Address --> R22
Data --> R20
04F2 D060 RCALL push_gset2
04F3 01B9 MOVW R22,R18
04F4 2F40 MOV R20,R16
(0024) }
(0025) }
(0026) }
(0027)
(0028) void Write_EEPROM(unsigned char Data,unsigned int Address)
(0029) {
(0030) if(EECR&0x20) DelayMs(8);
04F5 9BE5 SBIS 0x1C,5
04F6 C003 RJMP 0x04FA
04F7 E008 LDI R16,0x8
04F8 E010 LDI R17,0
04F9 DFE3 RCALL _DelayMs
(0031) EEARH=Address>>8;
04FA 011B MOVW R2,R22
04FB 2C23 MOV R2,R3
04FC 2433 CLR R3
04FD BA2F OUT 0x1F,R2
(0032) EEARL=Address&0x00ff;
04FE 01CB MOVW R24,R22
04FF 7090 ANDI R25,0
0500 BB8E OUT 0x1E,R24
(0033) EEDR=Data;
0501 BB4D OUT 0x1D,R20
(0034) EECR=EECR|0x04;
0502 9AE2 SBI 0x1C,2
(0035) EECR=EECR|0x02;
0503 9AE1 SBI 0x1C,1
(0036) DelayMs(8);
0504 E008 LDI R16,0x8
0505 E010 LDI R17,0
0506 DFD6 RCALL _DelayMs
0507 D03D RCALL pop_gset2
0508 9508 RET
_Read_EEPROM:
i --> R20
Address --> R20
0509 D04B RCALL push_gset1
050A 01A8 MOVW R20,R16
(0037) }
(0038)
(0039) unsigned char Read_EEPROM(unsigned int Address)
(0040) {
(0041) unsigned char i;
(0042)
(0043) if(EECR&0x01) DelayMs(8);
050B 9BE0 SBIS 0x1C,0
050C C003 RJMP 0x0510
050D E008 LDI R16,0x8
050E E010 LDI R17,0
050F DFCD RCALL _DelayMs
(0044) EEARH=Address>>8;
0510 011A MOVW R2,R20
0511 2C23 MOV R2,R3
0512 2433 CLR R3
0513 BA2F OUT 0x1F,R2
(0045) EEARL=Address&0x00ff;
0514 01CA MOVW R24,R20
0515 7090 ANDI R25,0
0516 BB8E OUT 0x1E,R24
(0046) EECR=EECR|0x01;
0517 9AE0 SBI 0x1C,0
(0047) DelayMs(10);
0518 E00A LDI R16,0xA
0519 E010 LDI R17,0
051A DFC2 RCALL _DelayMs
(0048) i=EEDR;
051B B34D IN R20,0x1D
(0049) return(i);
051C 2F04 MOV R16,R20
051D D03A RCALL pop_gset1
051E 9508 RET
_PhoneNum_to_EEPROM:
ch --> R20
n --> R22
051F D033 RCALL push_gset2
(0050) }
(0051)
(0052) void PhoneNum_to_EEPROM(void)
(0053) {
(0054) unsigned char n,ch;
(0055) for(n=0;n<12;n++)
0520 2766 CLR R22
0521 C00C RJMP 0x052E
(0056) {
(0057) ch = PhoneNum[n];
0522 E680 LDI R24,0x60
0523 E090 LDI R25,0
0524 2FE6 MOV R30,R22
0525 27FF CLR R31
0526 0FE8 ADD R30,R24
0527 1FF9 ADC R31,R25
0528 8140 LDD R20,Z+0
(0058) Write_EEPROM(ch,n);
0529 2F26 MOV R18,R22
052A 2733 CLR R19
052B 2F04 MOV R16,R20
052C DFC5 RCALL _Write_EEPROM
052D 9563 INC R22
052E 306C CPI R22,0xC
052F F390 BCS 0x0522
0530 D014 RCALL pop_gset2
0531 9508 RET
_EEPROM_to_PhoneNum:
ch --> R20
n --> R22
0532 D020 RCALL push_gset2
(0059) }
(0060) }
(0061)
(0062) void EEPROM_to_PhoneNum(void)
(0063) {
(0064) unsigned char n,ch;
(0065) for(n=0;n<12;n++)
0533 2766 CLR R22
0534 C00C RJMP 0x0541
(0066) {
(0067) ch = Read_EEPROM(n);
0535 2F06 MOV R16,R22
0536 2711 CLR R17
0537 DFD1 RCALL _Read_EEPROM
0538 2F40 MOV R20,R16
(0068) PhoneNum[n] = ch;
FILE: <library>
0539 E680 LDI R24,0x60
053A E090 LDI R25,0
053B 2FE6 MOV R30,R22
053C 27FF CLR R31
053D 0FE8 ADD R30,R24
053E 1FF9 ADC R31,R25
053F 8340 STD Z+0,R20
0540 9563 INC R22
0541 306C CPI R22,0xC
0542 F390 BCS 0x0535
0543 D001 RCALL pop_gset2
0544 9508 RET
pop_gset2:
0545 E0E2 LDI R30,2
0546 C012 RJMP pop
pop_gset3:
0547 E0E4 LDI R30,4
0548 C010 RJMP pop
pop_gset4:
0549 E0E8 LDI R30,0x8
054A C00E RJMP pop
pop_gset5:
054B 27EE CLR R30
054C C00C RJMP pop
push_gset5:
054D 92FA ST R15,-Y
054E 92EA ST R14,-Y
push_gset4:
054F 92DA ST R13,-Y
0550 92CA ST R12,-Y
push_gset3:
0551 92BA ST R11,-Y
0552 92AA ST R10,-Y
push_gset2:
0553 937A ST R23,-Y
0554 936A ST R22,-Y
push_gset1:
0555 935A ST R21,-Y
0556 934A ST R20,-Y
0557 9508 RET
pop_gset1:
0558 E0E1 LDI R30,1
pop:
0559 9149 LD R20,Y+
055A 9159 LD R21,Y+
055B FDE0 SBRC R30,0
055C 9508 RET
055D 9169 LD R22,Y+
055E 9179 LD R23,Y+
055F FDE1 SBRC R30,1
0560 9508 RET
0561 90A9 LD R10,Y+
0562 90B9 LD R11,Y+
0563 FDE2 SBRC R30,2
0564 9508 RET
0565 90C9 LD R12,Y+
0566 90D9 LD R13,Y+
0567 FDE3 SBRC R30,3
0568 9508 RET
0569 90E9 LD R14,Y+
056A 90F9 LD R15,Y+
056B 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -