⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 ATmega128的GPS例子
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .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 + -