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

📄 main.lis

📁 用avr单片机接收GPS的数据的c语言程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\Program\gps\main.c
 0000                   .dbfunc e main _main fV
 0000           ;              i -> R20,R21
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 47
 0000           ; /*
 0000           ; ###############################################################################
 0000           ; Include Part
 0000           ; ###############################################################################
 0000           ; */
 0000           ; #include <iom32v.h>           // mega16 register definition file
 0000           ; #include <lcd.h>      // LCD driver file
 0000           ; #include "def.h"              // Type definition file
 0000           ; #include <macros.h>
 0000           ; #include <serial.h>      //serial port driver file
 0000           ; 
 0000           ; 
 0000           ; /*
 0000           ; ##############################################################
 0000           ; define part
 0000           ; ##############################################################
 0000           ; */
 0000           ;  //   char  rcv_buf[1024];  
 0000           ;     char time[10];
 0000           ;       char status;
 0000           ;       char latitude[9];
 0000           ;       char NSind;
 0000           ;       char longtitude[10];
 0000           ;       char EWind;
 0000           ;       char date[6];
 0000           ; 
 0000           ;       
 0000           ; /*
 0000           ; ###############################################################################
 0000           ; Function Prototype Definition Part
 0000           ; ###############################################################################
 0000           ; */
 0000           ; void port_init(void);
 0000           ; void init_devices(void);
 0000           ; void GpsDataParse(void);
 0000           ; void Parse (void);
 0000           ; //void convert (void);
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /*
 0000           ; ###############################################################################
 0000           ; Function Implementation Part
 0000           ; ###############################################################################
 0000           ; */
 0000           ; void main (void)
 0000           ; {
 0000                   .dbline 48
 0000           ;     int i=0;
 0000 4427              clr R20
 0002 5527              clr R21
 0004                   .dbline 50
 0004           ;     //initial the MCU
 0004           ;     init_devices();
 0004 13D0              xcall _init_devices
 0006 03C0              xjmp L3
 0008           L2:
 0008                   .dbline 52
 0008                   .dbline 54
 0008 1BD0              xcall _GpsDataParse
 000A                   .dbline 55
 000A 0E940000          xcall _display
 000E                   .dbline 56
 000E           L3:
 000E                   .dbline 51
 000E FCCF              xjmp L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r i 20 I
 0012                   .dbend
 0012                   .dbfunc e port_init _port_init fV
                        .even
 0012           _port_init::
 0012                   .dbline -1
 0012                   .dbline 62
 0012           ;     while (1)
 0012           ;    {
 0012           ;       //  for (i=0;i<3000;i++);
 0012           ;         GpsDataParse();   //get data
 0012           ;         display();   //display
 0012           ;    }
 0012           ; 
 0012           ; }
 0012           ; 
 0012           ; 
 0012           ; void port_init(void)
 0012           ; {
 0012                   .dbline 63
 0012           ;     PORTA = 0x00;
 0012 2224              clr R2
 0014 2BBA              out 0x1b,R2
 0016                   .dbline 64
 0016           ;       DDRA  = 0xFC;
 0016 8CEF              ldi R24,252
 0018 8ABB              out 0x1a,R24
 001A                   .dbline 65
 001A           ;       PORTB = 0x00;
 001A 28BA              out 0x18,R2
 001C                   .dbline 66
 001C           ;       DDRB  = 0x00;
 001C 27BA              out 0x17,R2
 001E                   .dbline 67
 001E           ;       PORTC = 0x00; //m103 output only
 001E 25BA              out 0x15,R2
 0020                   .dbline 68
 0020           ;       DDRC  = 0x83;
 0020 83E8              ldi R24,131
 0022 84BB              out 0x14,R24
 0024                   .dbline 69
 0024           ;       PORTD = 0x00;
 0024 22BA              out 0x12,R2
 0026                   .dbline 70
 0026           ;       DDRD  = 0x9C;
 0026 8CE9              ldi R24,156
 0028 81BB              out 0x11,R24
 002A                   .dbline -2
 002A           L5:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbend
 002C                   .dbfunc e init_devices _init_devices fV
                        .even
 002C           _init_devices::
 002C                   .dbline -1
 002C                   .dbline 75
 002C           ; }
 002C           ; 
 002C           ; //call this routine to initialize all peripherals
 002C           ; void init_devices(void)
 002C           ; {
 002C                   .dbline 77
 002C           ;       //stop errant interrupts until set up
 002C           ;       CLI(); //disable all interrupts
 002C F894              cli
 002E                   .dbline 78
 002E           ;       port_init();
 002E F1DF              xcall _port_init
 0030                   .dbline 79
 0030           ;       uart0_init();
 0030 0E940000          xcall _uart0_init
 0034                   .dbline 81
 0034           ; 
 0034           ;       MCUCR = 0x00;
 0034 2224              clr R2
 0036 25BE              out 0x35,R2
 0038                   .dbline 82
 0038           ;       GICR  = 0x00;
 0038 2BBE              out 0x3b,R2
 003A                   .dbline 83
 003A           ;       TIMSK = 0x00; //timer interrupt sources
 003A 29BE              out 0x39,R2
 003C                   .dbline 85
 003C           ;       //all peripherals are now initialized
 003C           ;       SEI();
 003C 7894              sei
 003E                   .dbline -2
 003E           L6:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbend
 0040                   .dbfunc e GpsDataParse _GpsDataParse fV
 0040           ;           head -> y+0
 0040           ;           temp -> R20
                        .even
 0040           _GpsDataParse::
 0040 0E940000          xcall push_gset1
 0044 2397              sbiw R28,3
 0046                   .dbline -1
 0046                   .dbline 88
 0046           ; }
 0046           ; void GpsDataParse(void)
 0046           ; {
 0046                   .dbline 93
 0046           ;     char head[3];
 0046           ;     char temp;
 0046           ;       
 0046           ;             //CLI();
 0046           ;                 temp=Read_buf();
 0046 0E940000          xcall _Read_buf
 004A 402F              mov R20,R16
 004C 03C0              xjmp L9
 004E           L8:
 004E                   .dbline 95
 004E 0E940000          xcall _Read_buf
 0052 402F              mov R20,R16
 0054           L9:
 0054                   .dbline 94
 0054 4432              cpi R20,36
 0056 D9F7              brne L8
 0058                   .dbline 97
 0058 0E940000          xcall _Read_buf
 005C                   .dbline 98
 005C 0E940000          xcall _Read_buf
 0060 402F              mov R20,R16
 0062                   .dbline 101
 0062 0E940000          xcall _Read_buf
 0066 0883              std y+0,R16
 0068                   .dbline 102
 0068 0E940000          xcall _Read_buf
 006C 0983              std y+1,R16
 006E                   .dbline 103
 006E 0E940000          xcall _Read_buf
 0072 0A83              std y+2,R16
 0074                   .dbline 104
 0074 8881              ldd R24,y+0
 0076 8235              cpi R24,82
 0078 31F4              brne L13
 007A 8981              ldd R24,y+1
 007C 8D34              cpi R24,77
 007E 19F4              brne L13
 0080 0334              cpi R16,67
 0082 09F4              brne L13
 0084                   .dbline 105
 0084                   .dbline 106
 0084 04D0              xcall _Parse
 0086                   .dbline 107
 0086           L13:
 0086                   .dbline -2
 0086           L7:
 0086 2396              adiw R28,3
 0088 0E940000          xcall pop_gset1
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbsym l head 0 A[3:3]c
 008E                   .dbsym r temp 20 c
 008E                   .dbend
 008E                   .dbfunc e Parse _Parse fV
 008E           ;              i -> R20,R21
 008E           ;           temp -> R22
                        .even
 008E           _Parse::
 008E 0E940000          xcall push_gset2
 0092                   .dbline -1
 0092                   .dbline 117
 0092           ;           while (temp != '$')
 0092           ;                     temp=Read_buf();
 0092           ;     
 0092           ;                 temp=Read_buf();//first and second character are "GPXXX"
 0092           ;                 temp=Read_buf();
 0092           ;       
 0092           ;                 //get the header
 0092           ;                 head[0]=Read_buf();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -