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

📄 smain.lis

📁 微程序控制器采用ATMEL AVR MEGA162
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -