📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\SOURCE~1\gps20080503\main.c
.area data(ram, con, rel)
0000 .dbfile D:\SOURCE~1\gps20080503\main.c
0000 _sink0_num::
0000 .blkb 1
.area idata
0000 64 .byte 100
.area data(ram, con, rel)
0001 .dbfile D:\SOURCE~1\gps20080503\main.c
0001 .dbfile D:\SOURCE~1\gps20080503\define.h
0001 .dbsym e sink0_num _sink0_num c
.area text(rom, con, rel)
0000 .dbfile D:\SOURCE~1\gps20080503\define.h
0000 .dbfile D:\SOURCE~1\gps20080503\initrialm16.h
0000 .dbfunc e Init_Devices _Init_Devices fV
.even
0000 _Init_Devices::
0000 .dbline -1
0000 .dbline 36
0000 ; //ICC-AVR application builder : 2007-6-27 10:26:06
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; /**************初始化m8函数***************/
0000 ; #ifndef Initrial_M16_H
0000 ; #define Initrial_M16_H
0000 ;
0000 ; /**************************************************************
0000 ; **函数名称 :void init_devices(void)
0000 ; **函数功能 :初始化设备
0000 ; **输入参数 :无
0000 ; **返回值 :无
0000 ; **外定义变量:无
0000 ; **调用的函数:无
0000 ; **************************************************************/
0000 ; void Init_Devices(void);
0000 ;
0000 ; /**************************************************************
0000 ; **函数名称 :void port_init(void)
0000 ; **函数功能 :初始化端口
0000 ; **输入参数 :无
0000 ; **返回值 :无
0000 ; **外定义变量:无
0000 ; **调用的函数: Port_init();
0000 ; **************************************************************/
0000 ; void Port_Init(void);
0000 ; void Init_Devices(void);
0000 ; void uart0_init(void);
0000 ; void uart0_rx_isr(void);
0000 ; extern void Get_GPRMC_data(void);//提取GPRMC数据
0000 ;
0000 ;
0000 ; //call this routine to initialize all peripherals
0000 ; void Init_Devices(void)
0000 ; {
0000 .dbline 38
0000 ; //stop errant interrupts until set up
0000 ; CLI(); //disable all interrupts
0000 F894 cli
0002 .dbline 39
0002 ; Port_Init();
0002 07D0 xcall _Port_Init
0004 .dbline 40
0004 ; uart0_init();
0004 14D0 xcall _uart0_init
0006 .dbline 41
0006 ; MCUCR = 0x00;
0006 2224 clr R2
0008 25BE out 0x35,R2
000A .dbline 42
000A ; GICR = 0x00;
000A 2BBE out 0x3b,R2
000C .dbline 43
000C ; TIMSK = 0x00; //timer interrupt sources
000C 29BE out 0x39,R2
000E .dbline 44
000E ; SEI(); //re-enable interrupts
000E 7894 sei
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e Port_Init _Port_Init fV
.even
0012 _Port_Init::
0012 .dbline -1
0012 .dbline 49
0012 ; //all peripherals are now initialized
0012 ; }
0012 ;
0012 ; void Port_Init(void)
0012 ; {
0012 .dbline 50
0012 ; PORTB = 0xFF;
0012 8FEF ldi R24,255
0014 88BB out 0x18,R24
0016 .dbline 51
0016 ; DDRB = 0xFF;
0016 87BB out 0x17,R24
0018 .dbline 52
0018 ; PORTC = 0x7F; //m103 output only
0018 8FE7 ldi R24,127
001A 85BB out 0x15,R24
001C .dbline 53
001C ; DDRC = 0x7F;
001C 84BB out 0x14,R24
001E .dbline 54
001E ; PORTD = 0xFF;
001E 8FEF ldi R24,255
0020 82BB out 0x12,R24
0022 .dbline 55
0022 ; DDRD = 0xFF;
0022 81BB out 0x11,R24
0024 .dbline 57
0024 ;
0024 ; DDRD &=~ BIT(PD0);
0024 8898 cbi 0x11,0
0026 .dbline 58
0026 ; PORTD &= ~ BIT(PD0);
0026 9098 cbi 0x12,0
0028 .dbline 60
0028 ;
0028 ; DDRA &=~ BIT(PA1);//按键
0028 D198 cbi 0x1a,1
002A .dbline 61
002A ; DDRA &=~ BIT(PA3);
002A D398 cbi 0x1a,3
002C .dbline -2
002C L2:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e uart0_init _uart0_init fV
.even
002E _uart0_init::
002E .dbline -1
002E .dbline 73
002E ; //PORTA &= ~ BIT(PA5);
002E ; //PORTA &= ~ BIT(PA7);
002E ;
002E ;
002E ;
002E ; }
002E ;
002E ; //UART0 initialize
002E ; // desired baud rate: 9600
002E ; // actual: baud rate:9615 (0.2%)
002E ; void uart0_init(void)
002E ; {
002E .dbline 74
002E ; UCSRB = 0x00; //disable while setting baud rate
002E 2224 clr R2
0030 2AB8 out 0xa,R2
0032 .dbline 75
0032 ; UCSRA = 0x00;
0032 2BB8 out 0xb,R2
0034 .dbline 76
0034 ; UCSRC = BIT(URSEL) | 0x06;
0034 86E8 ldi R24,134
0036 80BD out 0x20,R24
0038 .dbline 77
0038 ; UBRRL = 0x33; //set baud rate lo
0038 83E3 ldi R24,51
003A 89B9 out 0x9,R24
003C .dbline 78
003C ; UBRRH = 0x00; //set baud rate hi
003C 20BC out 0x20,R2
003E .dbline 79
003E ; UCSRB = 0x98;
003E 88E9 ldi R24,152
0040 8AB9 out 0xa,R24
0042 .dbline -2
0042 L3:
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbend
.area vector(rom, abs)
.org 44
002C 0C942200 jmp _uart0_rx_isr
.area text(rom, con, rel)
0044 .dbfile D:\SOURCE~1\gps20080503\initrialm16.h
0044 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
0044 ; data -> R20
.even
0044 _uart0_rx_isr::
0044 0A92 st -y,R0
0046 1A92 st -y,R1
0048 2A92 st -y,R2
004A 3A92 st -y,R3
004C 4A92 st -y,R4
004E 5A92 st -y,R5
0050 6A92 st -y,R6
0052 7A92 st -y,R7
0054 8A92 st -y,R8
0056 9A92 st -y,R9
0058 0A93 st -y,R16
005A 1A93 st -y,R17
005C 2A93 st -y,R18
005E 3A93 st -y,R19
0060 8A93 st -y,R24
0062 9A93 st -y,R25
0064 AA93 st -y,R26
0066 BA93 st -y,R27
0068 EA93 st -y,R30
006A FA93 st -y,R31
006C 0FB6 in R0,0x3f
006E 0A92 st -y,R0
0070 4A93 st -y,R20
0072 .dbline -1
0072 .dbline 84
0072 ; }
0072 ;
0072 ; #pragma interrupt_handler uart0_rx_isr:12
0072 ; void uart0_rx_isr(void)
0072 ; {
0072 .dbline 86
0072 ; char data;
0072 ; data = UDR;
0072 4CB1 in R20,0xc
0074 .dbline 87
0074 ; if(data == '$')//开始字符
0074 4432 cpi R20,36
0076 41F4 brne L5
0078 X0:
0078 .dbline 88
0078 ; {
0078 .dbline 89
0078 ; usart_flag |= BIT(SINK0_START);
0078 80910A00 lds R24,_usart_flag
007C 8160 ori R24,1
007E 80930A00 sts _usart_flag,R24
0082 .dbline 90
0082 ; sink0_count = 0;
0082 2224 clr R2
0084 20920B00 sts _sink0_count,R2
0088 .dbline 91
0088 ; }
0088 L5:
0088 .dbline 92
0088 ; if(usart_flag & BIT(SINK0_START))
0088 20900A00 lds R2,_usart_flag
008C 20FE sbrs R2,0
008E 0DC0 rjmp L7
0090 X1:
0090 .dbline 93
0090 ; {
0090 .dbline 94
0090 ; sink0_buf[sink0_count] = data;
0090 80E0 ldi R24,<_sink0_buf
0092 90E0 ldi R25,>_sink0_buf
0094 E0910B00 lds R30,_sink0_count
0098 FF27 clr R31
009A E80F add R30,R24
009C F91F adc R31,R25
009E 4083 std z+0,R20
00A0 .dbline 95
00A0 ; sink0_count ++;
00A0 80910B00 lds R24,_sink0_count
00A4 8F5F subi R24,255 ; addi 1
00A6 80930B00 sts _sink0_count,R24
00AA .dbline 96
00AA ; }
00AA L7:
00AA .dbline 97
00AA ; if(data == 0x0a)//换行结束字符
00AA 4A30 cpi R20,10
00AC 41F4 brne L9
00AE X2:
00AE .dbline 98
00AE ; {
00AE .dbline 99
00AE ; usart_flag &=~ BIT(SINK0_START);
00AE 80910A00 lds R24,_usart_flag
00B2 8E7F andi R24,254
00B4 80930A00 sts _usart_flag,R24
00B8 .dbline 100
00B8 ; usart_flag |= BIT(SINK0_FINISH);
00B8 8260 ori R24,2
00BA 80930A00 sts _usart_flag,R24
00BE .dbline 102
00BE ;
00BE ; }
00BE L9:
00BE .dbline 103
00BE ; if(usart_flag & BIT(SINK0_FINISH))
00BE 20900A00 lds R2,_usart_flag
00C2 21FE sbrs R2,1
00C4 06C0 rjmp L11
00C6 X3:
00C6 .dbline 104
00C6 ; {
00C6 .dbline 105
00C6 ; Get_GPRMC_data();
00C6 B5D4 xcall _Get_GPRMC_data
00C8 .dbline 106
00C8 ; usart_flag &=~ BIT(SINK0_FINISH);
00C8 80910A00 lds R24,_usart_flag
00CC 8D7F andi R24,253
00CE 80930A00 sts _usart_flag,R24
00D2 .dbline 107
00D2 ; }
00D2 L11:
00D2 .dbline -2
00D2 L4:
00D2 .dbline 0 ; func end
00D2 4991 ld R20,y+
00D4 0990 ld R0,y+
00D6 0FBE out 0x3f,R0
00D8 F991 ld R31,y+
00DA E991 ld R30,y+
00DC B991 ld R27,y+
00DE A991 ld R26,y+
00E0 9991 ld R25,y+
00E2 8991 ld R24,y+
00E4 3991 ld R19,y+
00E6 2991 ld R18,y+
00E8 1991 ld R17,y+
00EA 0991 ld R16,y+
00EC 9990 ld R9,y+
00EE 8990 ld R8,y+
00F0 7990 ld R7,y+
00F2 6990 ld R6,y+
00F4 5990 ld R5,y+
00F6 4990 ld R4,y+
00F8 3990 ld R3,y+
00FA 2990 ld R2,y+
00FC 1990 ld R1,y+
00FE 0990 ld R0,y+
0100 1895 reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -