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

📄 uart3.lis

📁 u-blox的GPS模块LEA-5x,三本例子为ATMEGA1280对他的操作的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module uart3.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\item\GPS-1280\uart3.c
 0000                   .dbfunc e uart3_register_init _uart3_register_init fV
                        .even
 0000           _uart3_register_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; #include <iom1280v.h>
 0000           ; #include <macros.h>
 0000           ; #include "define.h"
 0000           ; #include "gps.h"
 0000           ; 
 0000           ; uart uart3;
 0000           ; 
 0000           ; uchar uart3_recv_buf[1000];
 0000           ; 
 0000           ; //-------------------------------------------------------------
 0000           ; void uart3_register_init(void)
 0000           ; {     
 0000                   .dbline 14
 0000           ;       //U2X3=1
 0000           ;       UCSR3A=(1<<U2X3);   
 0000 82E0              ldi R24,2
 0002 80933001          sts 304,R24
 0006                   .dbline 16
 0006           ;       //异步模式,数据格式:8位数据位,1位停止位,无奇偶校验
 0006           ;       UCSR3C=( (1<<UCSZ31) | (1<<UCSZ30) );           
 0006 86E0              ldi R24,6
 0008 80933201          sts 306,R24
 000C                   .dbline 18
 000C           ;       //Focs=14.7456MHZ  baudrate=9600
 000C           ;       UBRR3H=0x00;    
 000C 2224              clr R2
 000E 20923501          sts 309,R2
 0012                   .dbline 19
 0012           ;       UBRR3L=191;
 0012 8FEB              ldi R24,191
 0014 80933401          sts 308,R24
 0018                   .dbline 21
 0018           ;       //发送和接收使能
 0018           ;       UCSR3B |=(1<<RXEN3);
 0018 80913101          lds R24,305
 001C 8061              ori R24,16
 001E 80933101          sts 305,R24
 0022                   .dbline 22
 0022           ;       UCSR3B |=(1<<TXEN3);
 0022 80913101          lds R24,305
 0026 8860              ori R24,8
 0028 80933101          sts 305,R24
 002C                   .dbline 24
 002C           ;       //接收中断使能
 002C           ;       UCSR3B |=(1<<RXCIE3);
 002C 80913101          lds R24,305
 0030 8068              ori R24,128
 0032 80933101          sts 305,R24
 0036                   .dbline -2
 0036           L1:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbend
 0038                   .dbfunc e uart3_init _uart3_init fV
                        .even
 0038           _uart3_init::
 0038                   .dbline -1
 0038                   .dbline 28
 0038           ; }
 0038           ; //-------------------------------------------------------------
 0038           ; void uart3_init(void)
 0038           ; {
 0038                   .dbline 29
 0038           ;       uart3_register_init();
 0038 E3DF              xcall _uart3_register_init
 003A                   .dbline 31
 003A           ;       
 003A           ;       uart3.state                     = UART_STATE_NULL;
 003A 2224              clr R2
 003C 2092E803          sts _uart3,R2
 0040                   .dbline 32
 0040           ;       uart3.time                      = UART_TIME;
 0040 88E8              ldi R24,136
 0042 93E1              ldi R25,19
 0044 A0E0              ldi R26,0
 0046 B0E0              ldi R27,0
 0048 9093EA03          sts _uart3+1+1,R25
 004C 8093E903          sts _uart3+1,R24
 0050 B093EC03          sts _uart3+1+2+1,R27
 0054 A093EB03          sts _uart3+1+2,R26
 0058                   .dbline 33
 0058           ;       uart3.last_recv_len     = 0;
 0058 3324              clr R3
 005A 3092EE03          sts _uart3+5+1,R3
 005E 2092ED03          sts _uart3+5,R2
 0062                   .dbline 34
 0062           ;       uart3.recv_len          = 0;
 0062 3092F003          sts _uart3+7+1,R3
 0066 2092EF03          sts _uart3+7,R2
 006A                   .dbline 35
 006A           ;       uart3.send_len          = 0;
 006A 3092F203          sts _uart3+9+1,R3
 006E 2092F103          sts _uart3+9,R2
 0072                   .dbline -2
 0072           L2:
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbend
                        .area vector(rom, abs)
                        .org 216
 00D8 0C943A00          jmp _uart3_rx_isr
                        .area text(rom, con, rel)
 0074                   .dbfile E:\item\GPS-1280\uart3.c
 0074                   .dbfunc e uart3_rx_isr _uart3_rx_isr fV
                        .even
 0074           _uart3_rx_isr::
 0074 2A92              st -y,R2
 0076 8A93              st -y,R24
 0078 9A93              st -y,R25
 007A EA93              st -y,R30
 007C FA93              st -y,R31
 007E 2FB6              in R2,0x3f
 0080 2A92              st -y,R2
 0082                   .dbline -1
 0082                   .dbline 40
 0082           ; }
 0082           ; //-------------------------------------------------------------
 0082           ; #pragma interrupt_handler uart3_rx_isr:iv_USART3_RXC
 0082           ; void uart3_rx_isr(void)
 0082           ; {     
 0082                   .dbline 41
 0082           ;       uart3_recv_buf[uart3.recv_len]=UDR3;
 0082 80E0              ldi R24,<_uart3_recv_buf
 0084 90E0              ldi R25,>_uart3_recv_buf
 0086 E091EF03          lds R30,_uart3+7
 008A F091F003          lds R31,_uart3+7+1
 008E E80F              add R30,R24
 0090 F91F              adc R31,R25
 0092 20903601          lds R2,310
 0096 2082              std z+0,R2
 0098                   .dbline 42
 0098           ;       (uart3.recv_len)++;
 0098 8091EF03          lds R24,_uart3+7
 009C 9091F003          lds R25,_uart3+7+1
 00A0 0196              adiw R24,1
 00A2 9093F003          sts _uart3+7+1,R25
 00A6 8093EF03          sts _uart3+7,R24
 00AA                   .dbline -2
 00AA           L7:
 00AA                   .dbline 0 ; func end
 00AA 2990              ld R2,y+
 00AC 2FBE              out 0x3f,R2
 00AE F991              ld R31,y+
 00B0 E991              ld R30,y+
 00B2 9991              ld R25,y+
 00B4 8991              ld R24,y+
 00B6 2990              ld R2,y+
 00B8 1895              reti
 00BA                   .dbend
 00BA                   .dbfunc e uart0_check_rev_data _uart0_check_rev_data fc
                        .even
 00BA           _uart0_check_rev_data::
 00BA                   .dbline -1
 00BA                   .dbline 46
 00BA           ; }
 00BA           ; //-------------------------------------------------------------
 00BA           ; bool uart0_check_rev_data(void)
 00BA           ; {
 00BA                   .dbline 47
 00BA           ;       if((uart3.last_recv_len) != (uart3.recv_len)){
 00BA 2090EF03          lds R2,_uart3+7
 00BE 3090F003          lds R3,_uart3+7+1
 00C2 4090ED03          lds R4,_uart3+5
 00C6 5090EE03          lds R5,_uart3+5+1
 00CA 4214              cp R4,R2
 00CC 5304              cpc R5,R3
 00CE 51F0              breq L11
 00D0           X0:
 00D0                   .dbline 47
 00D0                   .dbline 48
 00D0           ;               (uart3.last_recv_len) = (uart3.recv_len);
 00D0 2090EF03          lds R2,_uart3+7
 00D4 3090F003          lds R3,_uart3+7+1
 00D8 3092EE03          sts _uart3+5+1,R3
 00DC 2092ED03          sts _uart3+5,R2
 00E0                   .dbline 49
 00E0           ;               return true;
 00E0 01E0              ldi R16,1
 00E2 01C0              xjmp L10
 00E4           L11:
 00E4                   .dbline 51
 00E4           ;       }
 00E4           ;       return false;
 00E4 0027              clr R16
 00E6                   .dbline -2
 00E6           L10:
 00E6                   .dbline 0 ; func end
 00E6 0895              ret
 00E8                   .dbend
 00E8                   .dbfunc e uart3_function _uart3_function fc
                        .even
 00E8           _uart3_function::
 00E8 0E940000          xcall push_xgset300C
 00EC                   .dbline -1
 00EC                   .dbline 55
 00EC           ; }
 00EC           ; //-------------------------------------------------------------
 00EC           ; unsigned char uart3_function(void)
 00EC           ; {
 00EC                   .dbline 56
 00EC           ;       switch(uart3.state)
 00EC 4091E803          lds R20,_uart3
 00F0 5527              clr R21
 00F2 4030              cpi R20,0
 00F4 4507              cpc R20,R21
 00F6 79F0              breq L21
 00F8           X1:
 00F8 4130              cpi R20,1
 00FA E0E0              ldi R30,0
 00FC 5E07              cpc R21,R30
 00FE 49F1              breq L26
 0100           X2:
 0100 4230              cpi R20,2
 0102 E0E0              ldi R30,0
 0104 5E07              cpc R21,R30
 0106 09F4              brne X8
 0108 38C0              xjmp L30
 010A           X8:
 010A           X3:
 010A 4330              cpi R20,3
 010C E0E0              ldi R30,0
 010E 5E07              cpc R21,R30
 0110 09F4              brne X9
 0112 65C0              xjmp L38
 0114           X9:
 0114           X4:
 0114 7DC0              xjmp L18
 0116           L21:
 0116                   .dbline 59
 0116           ;       {
 0116           ;               case UART_STATE_NULL:
 0116           ;                       uart3.state                     = UART_STATE_CHECK_RECV;
 0116 81E0              ldi R24,1
 0118 8093E803          sts _uart3,R24
 011C                   .dbline 60
 011C           ;                       uart3.time                      = UART_TIME;
 011C 88E8              ldi R24,136
 011E 93E1              ldi R25,19
 0120 A0E0              ldi R26,0
 0122 B0E0              ldi R27,0
 0124 9093EA03          sts _uart3+1+1,R25
 0128 8093E903          sts _uart3+1,R24
 012C B093EC03          sts _uart3+1+2+1,R27
 0130 A093EB03          sts _uart3+1+2,R26
 0134                   .dbline 61
 0134           ;                       uart3.last_recv_len     = 0;
 0134 2224              clr R2
 0136 3324              clr R3
 0138 3092EE03          sts _uart3+5+1,R3
 013C 2092ED03          sts _uart3+5,R2
 0140                   .dbline 62
 0140           ;                       uart3.recv_len          = 0;
 0140 3092F003          sts _uart3+7+1,R3
 0144 2092EF03          sts _uart3+7,R2
 0148                   .dbline 63
 0148           ;                       uart3.send_len          = 0;
 0148 3092F203          sts _uart3+9+1,R3
 014C 2092F103          sts _uart3+9,R2

⌨️ 快捷键说明

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