📄 smain.lis
字号:
0006 ; 0xB5,0x62,0x06,0x01,0x06,0x00,0xF0,0x02,0x00,0x00,0x00,0x00,0xFF,0x1F// CANCEL GSA
0006 ; };
0006 ; unsigned char disgsv[]={
0006 ; 0XB5,0x62,0x06,0x01,0x06,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x24// CANCEL GSV
0006 ; };
0006 ; unsigned char disvtg[]={
0006 ; 0xB5,0x62,0x06,0x01,0x06,0x00,0xF0,0x05,0x00,0x00,0x00,0x00,0x02,0x2E// CANCEL VTG
0006 ; };
0006 ; unsigned char disgrs[]={
0006 ; 0XB5,0x62,0x06,0x01,0x06,0x00,0xF0,0x06,0x00,0x00,0x00,0x00,0x03,0x33// CANCEL GRS
0006 ; };
0006 ; unsigned char disgst[]={
0006 ; 0xB5,0x62,0x06,0x01,0x06,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x04,0x38// CANCEL GST
0006 ; };
0006 ; unsigned char diszda[]={
0006 ; 0XB5,0x62,0x06,0x01,0x06,0x00,0xF0,0x08,0x00,0x00,0x00,0x00,0x05,0x3D// CANCEL ZDA
0006 ; };
0006 ;
0006 ; void setGPS(BYTE *command){
0006 .dbline 32
0006 ; BYTE *p,i;
0006 ; p = command;
0006 BA01 movw R22,R20
0008 .dbline 33
0008 4427 clr R20
000A 07C0 xjmp L5
000C L2:
000C .dbline 33
000C .dbline 34
000C FB01 movw R30,R22
000E 0081 ldd R16,z+0
0010 0E940000 xcall _WriteComm1
0014 .dbline 35
0014 6F5F subi R22,255 ; offset = 1
0016 7F4F sbci R23,255
0018 .dbline 36
0018 L3:
0018 .dbline 33
0018 4395 inc R20
001A L5:
001A .dbline 33
001A ; for (i = 0;i < 14;i ++){
001A 4E30 cpi R20,14
001C B8F3 brlo L2
001E .dbline 37
001E ; WriteComm1( *p );
001E ; p ++;
001E ; }
001E ; DelayMORE(10);
001E 0AE0 ldi R16,10
0020 0E940000 xcall _DelayMORE
0024 .dbline -2
0024 L1:
0024 0E940000 xcall pop_gset2
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r i 20 c
002A .dbsym r p 22 pc
002A .dbsym r command 20 pc
002A .dbend
002A .dbfunc e iniGPS _iniGPS fV
.even
002A _iniGPS::
002A .dbline -1
002A .dbline 39
002A ; }
002A ; void iniGPS(){
002A .dbline 40
002A ; setGPS(disgga);
002A 00E0 ldi R16,<_disgga
002C 10E0 ldi R17,>_disgga
002E E8DF xcall _setGPS
0030 .dbline 41
0030 ; setGPS(disgll);
0030 00E0 ldi R16,<_disgll
0032 10E0 ldi R17,>_disgll
0034 E5DF xcall _setGPS
0036 .dbline 42
0036 ; setGPS(disgsa);
0036 00E0 ldi R16,<_disgsa
0038 10E0 ldi R17,>_disgsa
003A E2DF xcall _setGPS
003C .dbline 43
003C ; setGPS(disgsv);
003C 00E0 ldi R16,<_disgsv
003E 10E0 ldi R17,>_disgsv
0040 DFDF xcall _setGPS
0042 .dbline 44
0042 ; setGPS(disvtg);
0042 00E0 ldi R16,<_disvtg
0044 10E0 ldi R17,>_disvtg
0046 DCDF xcall _setGPS
0048 .dbline 45
0048 ; setGPS(disgrs);
0048 00E0 ldi R16,<_disgrs
004A 10E0 ldi R17,>_disgrs
004C D9DF xcall _setGPS
004E .dbline 46
004E ; setGPS(disgst);
004E 00E0 ldi R16,<_disgst
0050 10E0 ldi R17,>_disgst
0052 D6DF xcall _setGPS
0054 .dbline 47
0054 ; setGPS(diszda);
0054 00E0 ldi R16,<_diszda
0056 10E0 ldi R17,>_diszda
0058 D3DF xcall _setGPS
005A .dbline -2
005A L6:
005A .dbline 0 ; func end
005A 0895 ret
005C .dbend
005C .dbfunc e port_init _port_init fV
.even
005C _port_init::
005C .dbline -1
005C .dbline 50
005C ; }
005C ; void port_init(void)
005C ; {
005C .dbline 51
005C ; PORTA = 0x04;
005C 84E0 ldi R24,4
005E 8BBB out 0x1b,R24
0060 .dbline 52
0060 ; DDRA = 0x04;//speaker
0060 8ABB out 0x1a,R24
0062 .dbline 53
0062 ; PORTB = 0x01;
0062 81E0 ldi R24,1
0064 88BB out 0x18,R24
0066 .dbline 54
0066 ; DDRB = 0x01;
0066 87BB out 0x17,R24
0068 .dbline 55
0068 ; PORTC = 0x00;
0068 2224 clr R2
006A 25BA out 0x15,R2
006C .dbline 56
006C ; DDRC = 0x00;
006C 24BA out 0x14,R2
006E .dbline 57
006E ; PORTD = 0x00;
006E 22BA out 0x12,R2
0070 .dbline 58
0070 ; DDRD = 0x00;
0070 21BA out 0x11,R2
0072 .dbline 59
0072 ; DDRD |= BIT(STA);
0072 8D9A sbi 0x11,5
0074 .dbline 60
0074 ; DDRD |= BIT(STC);
0074 8E9A sbi 0x11,6
0076 .dbline -2
0076 L7:
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbend
0078 .dbfunc e uart0_init _uart0_init fV
.even
0078 _uart0_init::
0078 .dbline -1
0078 .dbline 71
0078 ; }
0078 ;
0078 ;
0078 ;
0078 ; //UART0 initialize
0078 ; // desired baud rate: 9600
0078 ; // actual: baud rate:9600 (0.0%)
0078 ; // char size: 8 bit
0078 ; // parity: Disabled
0078 ; void uart0_init(void)
0078 ; {
0078 .dbline 72
0078 ; UCSR0B = 0x00; //disable while setting baud rate
0078 2224 clr R2
007A 2AB8 out 0xa,R2
007C .dbline 73
007C ; UCSR0A = 0x00; //disable while setting baud rate
007C 2BB8 out 0xb,R2
007E .dbline 74
007E ; UBRR0L =0x17; //set baud rate
007E 87E1 ldi R24,23
0080 89B9 out 0x9,R24
0082 .dbline 75
0082 ; UBRR0H = 0x00;
0082 20BC out 0x20,R2
0084 .dbline 76
0084 ; UCSR0C = BIT(URSEL0) | 0x06;
0084 86E8 ldi R24,134
0086 80BD out 0x20,R24
0088 .dbline 77
0088 ; UCSR0A = 0x00; //enable
0088 2BB8 out 0xb,R2
008A .dbline 79
008A ; //UCSR0B = 0x18; //enable
008A ; UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);
008A 88E9 ldi R24,152
008C 8AB9 out 0xa,R24
008E .dbline 80
008E ; setCommEventProc(ProcModemReceive);
008E 00E0 ldi R16,<PL_ProcModemReceive
0090 10E0 ldi R17,>PL_ProcModemReceive
0092 0E940000 xcall _setCommEventProc
0096 .dbline -2
0096 L8:
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbend
0098 .dbfunc e uart1_init _uart1_init fV
.even
0098 _uart1_init::
0098 .dbline -1
0098 .dbline 90
0098 ;
0098 ; }
0098 ;
0098 ; //UART1 initialize
0098 ;
0098 ; // actual baud rate:9600 (0.0%)
0098 ; // char size: 8 bit
0098 ; // parity: Disabled
0098 ; void uart1_init(void)
0098 ; {
0098 .dbline 91
0098 ; UCSR1B = 0x00; //disable while setting baud rate
0098 2224 clr R2
009A 21B8 out 0x1,R2
009C .dbline 92
009C ; UCSR1A = 0x00; //disable while setting baud rate
009C 22B8 out 0x2,R2
009E .dbline 93
009E ; UBRR1L =0x17; //set baud rate
009E 87E1 ldi R24,23
00A0 80B9 out 0x0,R24
00A2 .dbline 94
00A2 ; UBRR1H = 0x00;
00A2 2CBE out 0x3c,R2
00A4 .dbline 95
00A4 ; UCSR1C = BIT(URSEL1) | 0x06;
00A4 86E8 ldi R24,134
00A6 8CBF out 0x3c,R24
00A8 .dbline 96
00A8 ; UCSR1A = 0x00; //enable
00A8 22B8 out 0x2,R2
00AA .dbline 98
00AA ; //UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1);
00AA ; UCSR1B = (1<<RXEN1)|(1<<TXEN1);
00AA 88E1 ldi R24,24
00AC 81B9 out 0x1,R24
00AE .dbline -2
00AE L9:
00AE .dbline 0 ; func end
00AE 0895 ret
00B0 .dbend
00B0 .dbfunc e init_devices _init_devices fV
.even
00B0 _init_devices::
00B0 .dbline -1
00B0 .dbline 103
00B0 ; }
00B0 ;
00B0 ; //call this routine to initialize all peripherals
00B0 ; void init_devices(void)
00B0 ; {
00B0 .dbline 105
00B0 ; //stop errant interrupts until set up
00B0 ; CLI(); //disable all interrupts
00B0 F894 cli
00B2 .dbline 106
00B2 ; port_init();
00B2 D4DF xcall _port_init
00B4 .dbline 107
00B4 ; uart0_init();
00B4 E1DF xcall _uart0_init
00B6 .dbline 108
00B6 ; uart1_init();
00B6 F0DF xcall _uart1_init
00B8 .dbline 110
00B8 ;
00B8 ; MCUCR= 0x00; //mcu control register
00B8 2224 clr R2
00BA 25BE out 0x35,R2
00BC .dbline 111
00BC ; EMCUCR = 0x00;//extend ect
00BC 26BE out 0x36,R2
00BE .dbline 113
00BE ; //GIMSK= 0x00;
00BE ; TIMSK= 0x00; //timer interrupt sources
00BE 29BE out 0x39,R2
00C0 .dbline 114
00C0 ; ETIMSK=0x00;
00C0 20927D00 sts 125,R2
00C4 .dbline 115
00C4 ; GICR= 0x00;//general interrupt control register
00C4 2BBE out 0x3b,R2
00C6 .dbline 116
00C6 ; PCMSK0=0x00;
00C6 20926B00 sts 107,R2
00CA .dbline 117
00CA ; PCMSK1=0x00;
00CA 20926C00 sts 108,R2
00CE .dbline 118
00CE ; SEI(); //re-enable interrupts
00CE 7894 sei
00D0 .dbline -2
00D0 L10:
00D0 .dbline 0 ; func end
00D0 0895 ret
00D2 .dbend
.area func_lit
0000 0000 PL_ProcModemReceive: .word `_ProcModemReceive
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -