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

📄 uart.lis

📁 CS5532的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -