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