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

📄 uart3.lis

📁 u-blox的GPS模块LEA-5x,三本例子为ATMEGA1280对他的操作的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0150                   .dbline 64
 0150           ;               break;
 0150 62C0              xjmp L19
 0152           L26:
 0152                   .dbline 67
 0152           ; 
 0152           ;               case UART_STATE_CHECK_RECV:
 0152           ;                       if(uart0_check_rev_data()==TRUE){
 0152 B3DF              xcall _uart0_check_rev_data
 0154 0130              cpi R16,1
 0156 09F0              breq X10
 0158 5EC0              xjmp L19
 015A           X10:
 015A           X5:
 015A                   .dbline 67
 015A                   .dbline 68
 015A           ;                               uart3.state = UART_STATE_RECVING_DATA;
 015A 82E0              ldi R24,2
 015C 8093E803          sts _uart3,R24
 0160                   .dbline 69
 0160           ;                               uart3.time = UART_TIME;
 0160 88E8              ldi R24,136
 0162 93E1              ldi R25,19
 0164 A0E0              ldi R26,0
 0166 B0E0              ldi R27,0
 0168 9093EA03          sts _uart3+1+1,R25
 016C 8093E903          sts _uart3+1,R24
 0170 B093EC03          sts _uart3+1+2+1,R27
 0174 A093EB03          sts _uart3+1+2,R26
 0178                   .dbline 70
 0178           ;               }else{
 0178                   .dbline 70
 0178                   .dbline 71
 0178           ;                       }
 0178                   .dbline 72
 0178           ;               break;
 0178 4EC0              xjmp L19
 017A           L30:
 017A                   .dbline 75
 017A           ; 
 017A           ;               case UART_STATE_RECVING_DATA:
 017A           ;                       if(uart0_check_rev_data()){
 017A 9FDF              xcall _uart0_check_rev_data
 017C 0023              tst R16
 017E 69F0              breq L31
 0180           X6:
 0180                   .dbline 75
 0180                   .dbline 76
 0180           ;                               uart3.time = UART_TIME;
 0180 88E8              ldi R24,136
 0182 93E1              ldi R25,19
 0184 A0E0              ldi R26,0
 0186 B0E0              ldi R27,0
 0188 9093EA03          sts _uart3+1+1,R25
 018C 8093E903          sts _uart3+1,R24
 0190 B093EC03          sts _uart3+1+2+1,R27
 0194 A093EB03          sts _uart3+1+2,R26
 0198                   .dbline 77
 0198           ;                       }else{
 0198 3EC0              xjmp L19
 019A           L31:
 019A                   .dbline 77
 019A                   .dbline 78
 019A           ;                               (uart3.time)--;
 019A 81E0              ldi R24,1
 019C 90E0              ldi R25,0
 019E A0E0              ldi R26,0
 01A0 B0E0              ldi R27,0
 01A2 4090EB03          lds R4,_uart3+1+2
 01A6 5090EC03          lds R5,_uart3+1+2+1
 01AA 2090E903          lds R2,_uart3+1
 01AE 3090EA03          lds R3,_uart3+1+1
 01B2 281A              sub R2,R24
 01B4 390A              sbc R3,R25
 01B6 4A0A              sbc R4,R26
 01B8 5B0A              sbc R5,R27
 01BA 3092EA03          sts _uart3+1+1,R3
 01BE 2092E903          sts _uart3+1,R2
 01C2 5092EC03          sts _uart3+1+2+1,R5
 01C6 4092EB03          sts _uart3+1+2,R4
 01CA                   .dbline 79
 01CA           ;                               if(!(uart3.time)){
 01CA 8894              clc
 01CC 2220              tst R2
 01CE 3204              cpc R3,R2
 01D0 4204              cpc R4,R2
 01D2 5204              cpc R5,R2
 01D4 01F5              brne L19
 01D6           X7:
 01D6                   .dbline 79
 01D6                   .dbline 80
 01D6           ;                                       uart3.state = UART_STATE_DISPOSE_DATA;
 01D6 83E0              ldi R24,3
 01D8 8093E803          sts _uart3,R24
 01DC                   .dbline 81
 01DC           ;                               }
 01DC                   .dbline 82
 01DC           ;                       }
 01DC                   .dbline 83
 01DC           ;               break;
 01DC 1CC0              xjmp L19
 01DE           L38:
 01DE                   .dbline 86
 01DE           ; 
 01DE           ;               case UART_STATE_DISPOSE_DATA:
 01DE           ;                       uart3.last_recv_len     =0;
 01DE 2224              clr R2
 01E0 3324              clr R3
 01E2 3092EE03          sts _uart3+5+1,R3
 01E6 2092ED03          sts _uart3+5,R2
 01EA                   .dbline 87
 01EA           ;                       uart3.state = UART_STATE_NULL;
 01EA 2092E803          sts _uart3,R2
 01EE                   .dbline 89
 01EE           ;                       //add function here
 01EE           ;                       CLI();
 01EE F894              cli
 01F0                   .dbline 90
 01F0           ;                       gps_function(uart3_recv_buf,uart3.recv_len);
 01F0 2091EF03          lds R18,_uart3+7
 01F4 3091F003          lds R19,_uart3+7+1
 01F8 00E0              ldi R16,<_uart3_recv_buf
 01FA 10E0              ldi R17,>_uart3_recv_buf
 01FC 0E940000          xcall _gps_function
 0200                   .dbline 92
 0200           ;                       //set recv lengh zero
 0200           ;                       uart3.recv_len  = 0;
 0200 2224              clr R2
 0202 3324              clr R3
 0204 3092F003          sts _uart3+7+1,R3
 0208 2092EF03          sts _uart3+7,R2
 020C                   .dbline 93
 020C           ;                       SEI();
 020C 7894              sei
 020E                   .dbline 95
 020E           ;                       //uart3.state                   = UART_STATE_CHECK_RECV;
 020E           ;               break;
 020E 03C0              xjmp L19
 0210           L18:
 0210                   .dbline 98
 0210           ; 
 0210           ;               default:
 0210           ;                       uart3.state = UART_STATE_NULL;
 0210 2224              clr R2
 0212 2092E803          sts _uart3,R2
 0216                   .dbline 99
 0216           ;               break;
 0216           L19:
 0216                   .dbline 101
 0216           ;       }
 0216           ;       return 1;
 0216 01E0              ldi R16,1
 0218                   .dbline -2
 0218           L17:
 0218                   .dbline 0 ; func end
 0218 0C940000          xjmp pop_xgset300C
 021C                   .dbend
 021C                   .dbfunc e uart3_data_send _uart3_data_send fV
 021C           ;              i -> R20,R21
 021C           ;        sendLen -> R18,R19
 021C           ;           pbuf -> R16,R17
                        .even
 021C           _uart3_data_send::
 021C 4A93              st -y,R20
 021E 5A93              st -y,R21
 0220                   .dbline -1
 0220                   .dbline 105
 0220           ; }
 0220           ; //-------------------------------------------------------------
 0220           ; void uart3_data_send(unsigned char *pbuf,unsigned int sendLen)
 0220           ; {
 0220                   .dbline 107
 0220           ;       unsigned int i;
 0220           ;       for(i=0;i<sendLen;i++)
 0220 4427              clr R20
 0222 5527              clr R21
 0224 0CC0              xjmp L46
 0226           L47:
 0226                   .dbline 109
 0226           ;       {
 0226           ;               while(!(UCSR3A & (1<<UDRE3)));  // 等待发送缓冲寄存器空 
 0226           L48:
 0226                   .dbline 109
 0226 20903001          lds R2,304
 022A 25FE              sbrs R2,5
 022C FCCF              rjmp L47
 022E           X11:
 022E                   .dbline 110
 022E           ;               UDR3=* (pbuf+i);        
 022E FA01              movw R30,R20
 0230 E00F              add R30,R16
 0232 F11F              adc R31,R17
 0234 2080              ldd R2,z+0
 0236 20923601          sts 310,R2
 023A                   .dbline 111
 023A           ;       }
 023A           L44:
 023A                   .dbline 107
 023A 4F5F              subi R20,255  ; offset = 1
 023C 5F4F              sbci R21,255
 023E           L46:
 023E                   .dbline 107
 023E 4217              cp R20,R18
 0240 5307              cpc R21,R19
 0242 88F3              brlo L48
 0244           X12:
 0244                   .dbline 112
 0244           ;       return;
 0244                   .dbline -2
 0244           L42:
 0244                   .dbline 0 ; func end
 0244 5991              ld R21,y+
 0246 4991              ld R20,y+
 0248 0895              ret
 024A                   .dbsym r i 20 i
 024A                   .dbsym r sendLen 18 i
 024A                   .dbsym r pbuf 16 pc
 024A                   .dbend
 024A                   .dbfunc e uart3_send_char _uart3_send_char fV
 024A           ;              c -> R16
                        .even
 024A           _uart3_send_char::
 024A                   .dbline -1
 024A                   .dbline 116
 024A           ; }
 024A           ; //-------------------------------------------------------------
 024A           ; void uart3_send_char(unsigned char c)
 024A           ; {
 024A           L51:
 024A                   .dbline 117
 024A           ;       while(!(UCSR3A & (1<<UDRE3)));  // 等待发送缓冲寄存器空 
 024A           L52:
 024A                   .dbline 117
 024A 20903001          lds R2,304
 024E 25FE              sbrs R2,5
 0250 FCCF              rjmp L51
 0252           X13:
 0252                   .dbline 118
 0252           ;       UDR3=c;
 0252 00933601          sts 310,R16
 0256                   .dbline 119
 0256           ;       return;
 0256                   .dbline -2
 0256           L50:
 0256                   .dbline 0 ; func end
 0256 0895              ret
 0258                   .dbsym r c 16 c
 0258                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\item\GPS-1280\uart3.c
 0000           _uart3_recv_buf::
 0000                   .blkb 1000
 03E8                   .dbsym e uart3_recv_buf _uart3_recv_buf A[1000:1000]c
 03E8           _uart3::
 03E8                   .blkb 11
 03F3                   .dbstruct 0 11 _uart
 03F3                   .dbfield 0 state c
 03F3                   .dbfield 1 time l
 03F3                   .dbfield 5 last_recv_len i
 03F3                   .dbfield 7 recv_len i
 03F3                   .dbfield 9 send_len i
 03F3                   .dbend
 03F3                   .dbsym e uart3 _uart3 S[_uart]
 03F3           ; }

⌨️ 快捷键说明

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