📄 uart.lis
字号:
00C6 ; case ST_MSG_SIZE_H:
00C6 ; {
00C6 .dbline 101
00C6 ; msg_size = uart_data;
00C6 202E mov R2,R16
00C8 3324 clr R3
00CA 30920100 sts _msg_size+1,R3
00CE 20920000 sts _msg_size,R2
00D2 .dbline 102
00D2 ; msg_size <<=8;
00D2 322C mov R3,R2
00D4 2224 clr R2
00D6 30920100 sts _msg_size+1,R3
00DA 20920000 sts _msg_size,R2
00DE .dbline 103
00DE ; check_sum ^= uart_data;
00DE 20900400 lds R2,_check_sum
00E2 2026 eor R2,R16
00E4 20920400 sts _check_sum,R2
00E8 .dbline 104
00E8 ; rx_stu_mac = ST_MSG_SIZE_L;
00E8 83EF ldi R24,243
00EA 80930300 sts _rx_stu_mac,R24
00EE .dbline 105
00EE ; break;
00EE 56C0 xjmp L4
00F0 L11:
00F0 .dbline 108
00F0 ; }
00F0 ; case ST_MSG_SIZE_L:
00F0 ; {
00F0 .dbline 109
00F0 ; msg_size |= uart_data;
00F0 202E mov R2,R16
00F2 3324 clr R3
00F4 40900000 lds R4,_msg_size
00F8 50900100 lds R5,_msg_size+1
00FC 4228 or R4,R2
00FE 5328 or R5,R3
0100 50920100 sts _msg_size+1,R5
0104 40920000 sts _msg_size,R4
0108 .dbline 110
0108 ; check_sum ^= uart_data;
0108 20900400 lds R2,_check_sum
010C 2026 eor R2,R16
010E 20920400 sts _check_sum,R2
0112 .dbline 111
0112 ; rx_stu_mac = ST_GET_TOKEN;
0112 84EF ldi R24,244
0114 80930300 sts _rx_stu_mac,R24
0118 .dbline 112
0118 ; break;
0118 41C0 xjmp L4
011A L12:
011A .dbline 115
011A ; }
011A ; case ST_GET_TOKEN:
011A ; {
011A .dbline 116
011A ; if(uart_data==TOKEN)
011A 0E30 cpi R16,14
011C 61F4 brne L13
011E .dbline 117
011E ; {
011E .dbline 118
011E ; check_sum ^= uart_data;
011E 20900400 lds R2,_check_sum
0122 2026 eor R2,R16
0124 20920400 sts _check_sum,R2
0128 .dbline 119
0128 ; rx_stu_mac = ST_GET_DATA;
0128 85EF ldi R24,245
012A 80930300 sts _rx_stu_mac,R24
012E .dbline 120
012E ; uart_rx_counter=0;
012E 2224 clr R2
0130 20921B00 sts _uart_rx_counter,R2
0134 .dbline 121
0134 ; }
0134 33C0 xjmp L4
0136 L13:
0136 .dbline 123
0136 ; else
0136 ; {
0136 .dbline 124
0136 ; rx_stu_mac = ST_START;
0136 80EF ldi R24,240
0138 80930300 sts _rx_stu_mac,R24
013C .dbline 125
013C ; }
013C .dbline 126
013C ; break;
013C 2FC0 xjmp L4
013E L15:
013E .dbline 129
013E ; }
013E ; case ST_GET_DATA:
013E ; {
013E .dbline 130
013E ; uart_rx_buf[uart_rx_counter++]=uart_data;
013E 20901B00 lds R2,_uart_rx_counter
0142 3324 clr R3
0144 822D mov R24,R2
0146 8F5F subi R24,255 ; addi 1
0148 80931B00 sts _uart_rx_counter,R24
014C 80E0 ldi R24,<_uart_rx_buf
014E 90E0 ldi R25,>_uart_rx_buf
0150 E22D mov R30,R2
0152 FF27 clr R31
0154 E80F add R30,R24
0156 F91F adc R31,R25
0158 0083 std z+0,R16
015A .dbline 131
015A ; check_sum ^= uart_data;
015A 20900400 lds R2,_check_sum
015E 2026 eor R2,R16
0160 20920400 sts _check_sum,R2
0164 .dbline 132
0164 ; if(uart_rx_counter==msg_size)
0164 20900000 lds R2,_msg_size
0168 30900100 lds R3,_msg_size+1
016C 40901B00 lds R4,_uart_rx_counter
0170 5524 clr R5
0172 4214 cp R4,R2
0174 5304 cpc R5,R3
0176 91F4 brne L4
0178 .dbline 133
0178 ; {
0178 .dbline 134
0178 ; rx_stu_mac = ST_GET_CHECK;
0178 86EF ldi R24,246
017A 80930300 sts _rx_stu_mac,R24
017E .dbline 135
017E ; }
017E .dbline 136
017E ; break;
017E 0EC0 xjmp L4
0180 L18:
0180 .dbline 139
0180 ; }
0180 ; case ST_GET_CHECK:
0180 ; {
0180 .dbline 140
0180 ; if(uart_data == check_sum)
0180 20900400 lds R2,_check_sum
0184 0215 cp R16,R2
0186 19F4 brne L19
0188 .dbline 141
0188 ; {
0188 .dbline 142
0188 ; msg_end_flag=1;
0188 81E0 ldi R24,1
018A 80930200 sts _msg_end_flag,R24
018E .dbline 143
018E ; }
018E L19:
018E .dbline 144
018E ; rx_stu_mac = ST_START;
018E 80EF ldi R24,240
0190 80930300 sts _rx_stu_mac,R24
0194 .dbline 145
0194 ; break;
0194 03C0 xjmp L4
0196 L3:
0196 .dbline 148
0196 .dbline 149
0196 80EF ldi R24,240
0198 80930300 sts _rx_stu_mac,R24
019C .dbline 150
019C L4:
019C .dbline -2
019C L2:
019C 2990 ld R2,y+
019E 2FBE out 0x3f,R2
01A0 F991 ld R31,y+
01A2 E991 ld R30,y+
01A4 9991 ld R25,y+
01A6 8991 ld R24,y+
01A8 3991 ld R19,y+
01AA 2991 ld R18,y+
01AC 0991 ld R16,y+
01AE 5990 ld R5,y+
01B0 4990 ld R4,y+
01B2 3990 ld R3,y+
01B4 2990 ld R2,y+
01B6 .dbline 0 ; func end
01B6 1895 reti
01B8 .dbsym r uart_data 16 c
01B8 .dbend
01B8 .dbfunc e rx_pkg_process _rx_pkg_process fV
01B8 ; cmd -> R20
01B8 ; i -> R20,R21
.even
01B8 _rx_pkg_process::
01B8 0E940000 xcall push_gset1
01BC .dbline -1
01BC .dbline 840
01BC ; }
01BC ; default:
01BC ; {
01BC ; rx_stu_mac=ST_START;
01BC ; break;
01BC ; }
01BC ; }
01BC ; }
01BC ;
01BC ;
01BC ;
01BC ;
01BC ; /*void packageProcess(uint08 seqNum)
01BC ; {
01BC ; uint08 cmd;
01BC ; uint08 tmp=0;
01BC ; uint08 tmp2=0;
01BC ; uint08 tmp3=0;
01BC ; uint08 mode;
01BC ; uint16 block_size;
01BC ; uint16 i;
01BC ; uint16 tmp16;
01BC ; uint16 num_bytes=0;
01BC ; uint32 polling_address=0;
01BC ; uint32 start_address = address;
01BC ; cmd = msg_buffer[0];
01BC ;
01BC ; //命令CMD_SIGN_ON
01BC ; if(cmd==CMD_SIGN_ON)
01BC ; {
01BC ; num_bytes = 11;
01BC ; msg_buffer[0] = CMD_SIGN_ON;
01BC ; msg_buffer[1] = STATUS_CMD_OK;
01BC ; msg_buffer[2] = 8;
01BC ; memcpy(msg_buffer+3,"STK500_2",8);
01BC ; }
01BC ; //命令CMD_SET_PARAMETER
01BC ; else if(cmd==CMD_SET_PARAMETER)
01BC ; {
01BC ; switch(msg_buffer[1])
01BC ; {
01BC ; case PARAM_SCK_DURATION:
01BC ;
01BC ; if((msg_buffer[2]) >= 1 ) clockSpeed=SPI_SPEED_2MHZ;
01BC ; if((msg_buffer[2]) >= 2 ) clockSpeed=SPI_SPEED_1MHZ;
01BC ; if((msg_buffer[2]) >= 4 ) clockSpeed=SPI_SPEED_500KHZ;
01BC ; if((msg_buffer[2]) >= 8 ) clockSpeed=SPI_SPEED_250KHZ;
01BC ; if((msg_buffer[2]) >= 16 ) clockSpeed=SPI_SPEED_125KHZ;
01BC ; if((msg_buffer[2]) >= 32 ) clockSpeed=SPI_SPEED_62KHZ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -