📄 uart3.lis
字号:
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 + -