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

📄 uart.lis

📁 CS5532的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01BC           ;               }
 01BC           ;               
 01BC           ;               num_bytes = 2;
 01BC           ;               msg_buffer[0] = CMD_PROGRAM_EEPROM_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       //命令CMD_READ_EEPROM_ISP
 01BC           ;       else if(cmd==CMD_READ_EEPROM_ISP)
 01BC           ;       {
 01BC           ;               block_size = ((unsigned int)msg_buffer[1])<<8;
 01BC           ;               block_size |= msg_buffer[2];
 01BC           ;               tmp = msg_buffer[3];
 01BC           ;               
 01BC           ;               for(i=0;i<block_size;i++)
 01BC           ;               {
 01BC           ;                       //Select Low or High-Byte
 01BC           ;                       SPIWrite(tmp);
 01BC           ;                       SPIWrite16(address&0xFFFF);
 01BC           ;                       msg_buffer[i+2] = SPIWrite(0);
 01BC           ;                       //increment address
 01BC           ;                       address++;
 01BC           ;               }
 01BC           ;               num_bytes = block_size+3;
 01BC           ;               msg_buffer[0] = CMD_READ_EEPROM_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;
 01BC           ;               msg_buffer[block_size+2] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       
 01BC           ;       //命令CMD_PROGRAM_FUSE_ISP
 01BC           ;       else if(cmd==CMD_PROGRAM_FUSE_ISP)
 01BC           ;       {
 01BC           ;               universalComm(msg_buffer[1],msg_buffer[2],msg_buffer[3],msg_buffer[4]);
 01BC           ;               num_bytes = 3;
 01BC           ;               msg_buffer[0] = CMD_PROGRAM_FUSE_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;          
 01BC           ;               msg_buffer[2] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ; 
 01BC           ;       //命令CMD_READ_FUSE_ISP
 01BC           ;       else if(cmd==CMD_READ_FUSE_ISP)
 01BC           ;       {       
 01BC           ;               tmp = SPIWrite(msg_buffer[2]);
 01BC           ;               if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[3]);
 01BC           ;               if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[4]);
 01BC           ;               if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[5]);
 01BC           ;               if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
 01BC           ;               num_bytes = 4;
 01BC           ;               msg_buffer[0] = CMD_READ_FUSE_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;          
 01BC           ;               msg_buffer[3] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       
 01BC           ;       //命令CMD_PROGRAM_LOCK_ISP
 01BC           ;       else if(cmd==CMD_PROGRAM_LOCK_ISP)
 01BC           ;       {
 01BC           ;               universalComm(msg_buffer[1],msg_buffer[2],msg_buffer[3],msg_buffer[4]);
 01BC           ;               
 01BC           ;               num_bytes = 3;
 01BC           ;               msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;          
 01BC           ;               msg_buffer[2] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       //命令CMD_READ_LOCK_ISP
 01BC           ;       else if(cmd==CMD_READ_LOCK_ISP)
 01BC           ;       {
 01BC           ;               tmp = SPIWrite(msg_buffer[2]);
 01BC           ;               if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[3]);
 01BC           ;               if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[4]);
 01BC           ;               if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[5]);
 01BC           ;               if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
 01BC           ;               num_bytes = 4;
 01BC           ;               msg_buffer[0] = CMD_READ_LOCK_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;          
 01BC           ;               msg_buffer[3] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       
 01BC           ;       //命令CMD_READ_SIGNATURE_ISP
 01BC           ;       else if(cmd==CMD_READ_SIGNATURE_ISP)
 01BC           ;       {
 01BC           ;               tmp = SPIWrite(msg_buffer[2]);
 01BC           ;               if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[3]);
 01BC           ;               if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[4]);
 01BC           ;               if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[5]);
 01BC           ;               if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
 01BC           ;               num_bytes = 4;
 01BC           ;               msg_buffer[0] = CMD_READ_SIGNATURE_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;          
 01BC           ;               msg_buffer[3] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       
 01BC           ;       //命令CMD_READ_OSCCAL_ISP
 01BC           ;       else if(cmd==CMD_READ_OSCCAL_ISP)
 01BC           ;       {
 01BC           ;               tmp = SPIWrite(msg_buffer[2]);
 01BC           ;               if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[3]);
 01BC           ;               if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[4]);
 01BC           ;               if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
 01BC           ;               tmp = SPIWrite(msg_buffer[5]);
 01BC           ;               if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
 01BC           ;               num_bytes = 4;
 01BC           ;               msg_buffer[0] = CMD_READ_OSCCAL_ISP;
 01BC           ;               msg_buffer[1] = STATUS_CMD_OK;          
 01BC           ;               msg_buffer[3] = STATUS_CMD_OK;
 01BC           ;       }
 01BC           ;       else
 01BC           ;       {
 01BC           ;               num_bytes = 1;
 01BC           ;               msg_buffer[0] = STATUS_CMD_UNKNOWN;
 01BC           ;       }
 01BC           ;       //传送缓冲区数据
 01BC           ;       if(num_bytes>0)
 01BC           ;       {               
 01BC           ;               putChar(MESSAGE_START);
 01BC           ;               checkSum=MESSAGE_START;
 01BC           ;               putChar(seqNum);
 01BC           ;               checkSum^=seqNum;
 01BC           ;               tmp=(num_bytes&0xFF00)>>8;
 01BC           ;               putChar(tmp);
 01BC           ;               checkSum^=tmp;
 01BC           ;               tmp=num_bytes&0x00FF;
 01BC           ;               putChar(tmp);
 01BC           ;               checkSum^=tmp;
 01BC           ;               putChar(TOKEN);
 01BC           ;               checkSum^=TOKEN;
 01BC           ;               for(i=0;i<num_bytes;i++)
 01BC           ;               {
 01BC           ;                       putChar(msg_buffer[i]);
 01BC           ;                       checkSum^=msg_buffer[i];
 01BC           ;               }               
 01BC           ;               putChar(checkSum);
 01BC           ;               checkSum=0x00;          
 01BC           ;       }
 01BC           ; 
 01BC           ; }    
 01BC           ; */
 01BC           ; 
 01BC           ; 
 01BC           ; /**********************************************************************
 01BC           ; functionName:void rx_pkg_process(void)
 01BC           ; description:串口接收包处理
 01BC           ; **********************************************************************/
 01BC           ; void rx_pkg_process(void)
 01BC           ; {
 01BC                   .dbline 844
 01BC           ;       uint16 i;
 01BC           ;       uint08 cmd;
 01BC           ;       
 01BC           ;       cmd = uart_tx_buf[0];
 01BC 40911E00          lds R20,_uart_tx_buf
 01C0                   .dbline 846
 01C0           ;       
 01C0           ;       if(msg_end_flag)
 01C0 20900200          lds R2,_msg_end_flag
 01C4 2220              tst R2
 01C6 A9F0              breq L22
 01C8                   .dbline 847
 01C8           ;       {
 01C8                   .dbline 848
 01C8           ;               msg_end_flag=0;
 01C8 2224              clr R2
 01CA 20920200          sts _msg_end_flag,R2
 01CE                   .dbline 850
 01CE           ;               
 01CE           ;               for(i=0;i<uart_rx_counter;i++)
 01CE 4427              clr R20
 01D0 5527              clr R21
 01D2 09C0              xjmp L27
 01D4           L24:
 01D4                   .dbline 851
 01D4                   .dbline 852
 01D4 80E0              ldi R24,<_uart_rx_buf
 01D6 90E0              ldi R25,>_uart_rx_buf
 01D8 FA01              movw R30,R20
 01DA E80F              add R30,R24
 01DC F91F              adc R31,R25
 01DE 0081              ldd R16,z+0
 01E0 36D0              xcall _put_char
 01E2                   .dbline 853
 01E2           L25:
 01E2                   .dbline 850
 01E2 4F5F              subi R20,255  ; offset = 1
 01E4 5F4F              sbci R21,255
 01E6           L27:
 01E6                   .dbline 850
 01E6 20901B00          lds R2,_uart_rx_counter
 01EA 3324              clr R3
 01EC 4215              cp R20,R2
 01EE 5305              cpc R21,R3
 01F0 88F3              brlo L24
 01F2                   .dbline 865
 01F2           L22:
 01F2                   .dbline -2
 01F2           L21:
 01F2 0E940000          xcall pop_gset1
 01F6                   .dbline 0 ; func end
 01F6 0895              ret
 01F8                   .dbsym r cmd 20 c
 01F8                   .dbsym r i 20 i
 01F8                   .dbend
                        .area vector(rom, abs)
                        .org 52
 0034 0C94FC00          jmp _uart0_tx_isr
                        .area text(rom, con, rel)
 01F8                   .dbfile G:\CS5532\firmware\uart.c
 01F8                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
                        .even
 01F8           _uart0_tx_isr::
 01F8 2A92              st -y,R2
 01FA 8A93              st -y,R24
 01FC 9A93              st -y,R25
 01FE EA93              st -y,R30
 0200 FA93              st -y,R31
 0202 2FB6              in R2,0x3f
 0204 2A92              st -y,R2
 0206                   .dbline -1
 0206                   .dbline 874
 0206           ;               {
 0206           ;                       put_char(uart_rx_buf[i]);
 0206           ;               }
 0206           ;               /*switch(cmd)
 0206           ;               {
 0206           ;                       case 0:
 0206           ;                       {
 0206           ;                               break;
 0206           ;                       }
 0206           ;                       default:
 0206           ;                       {
 0206           ;                               break;
 0206           ;                       }
 0206           ;               }*/
 0206           ;       }
 0206           ; }
 0206           ; 
 0206           ; /**************************************

⌨️ 快捷键说明

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