Rev 64 | Rev 97 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Sun Oct 29 20:04:53 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* UART F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\uart.c* FileName: uart.c F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Author Date Comment F:\MCP\projects\CAN\canToSerial\Source\uart.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canToSerial\Source\uart.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canToSerial\Source\uart.c********************************************************************/ F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c#include <uart.h> F:\MCP\projects\CAN\canToSerial\Source\uart.c#include <stackTasks.h> F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cstatic char uartBusy(void); F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartInit F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.cvoid uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c{ F:\MCP\projects\CAN\canToSerial\Source\uart.c// Configure USART F:\MCP\projects\CAN\canToSerial\Source\uart.c0009c6 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009c8 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009ca 0e20 MOVLW 0x20 TXSTA=0b00100000; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009cc 6eac MOVWF 0xac,0x0#ifdef HIGH_BRG F:\MCP\projects\CAN\canToSerial\Source\uart.c0009ce 84ac BSF 0xac,0x2,0x0 TXSTAbits.BRGH=1; // High BRG speed F:\MCP\projects\CAN\canToSerial\Source\uart.c0009d0 86b8 BSF 0xb8,0x3,0x0 BAUDCONbits.BRG16=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009d2 6ab0 CLRF 0xb0,0x0 SPBRGH = SPBRGH_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009d4 0e55 MOVLW 0x55 SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009d6 6eaf MOVWF 0xaf,0x0#else F:\MCP\projects\CAN\canToSerial\Source\uart.cTXSTAbits.BRGH=0; // Low BRG speed F:\MCP\projects\CAN\canToSerial\Source\uart.cSPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c#endif F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c0009d8 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009da 6eab MOVWF 0xab,0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c// USART RX interrupt F:\MCP\projects\CAN\canToSerial\Source\uart.c0009dc 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009de 8a9d BSF 0x9d,0x5,0x0 PIE1bits.RCIE=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c// High interrupt F:\MCP\projects\CAN\canToSerial\Source\uart.c0009e0 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009e2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartPutc F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: BYTE c to send on uart F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.c0009e4 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\uart.c0009e6 ffe60009e8 cfe1 MOVFF 0xfe1,0xfd90009ea ffd9{ F:\MCP\projects\CAN\canToSerial\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canToSerial\Source\uart.c0009ec 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canToSerial\Source\uart.c0009ee 50db MOVF 0xdb,0x0,0x00009f0 6ead MOVWF 0xad,0x00009f2 d84b RCALL 0xa8a while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009f4 0900 IORLW 0x00009f6 e001 BZ 0x9fa0009f8 d7fc BRA 0x9f20009fa 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c0009fc cfe7 MOVFF 0xfe7,0xfd90009fe ffd9000a00 0012 RETURN 0x0F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartPuts F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: Byte array to send on uart F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a02 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canToSerial\Source\uart.c000a04 ffe6000a06 cfe1 MOVFF 0xfe1,0xfd9000a08 ffd9{ F:\MCP\projects\CAN\canToSerial\Source\uart.cdo F:\MCP\projects\CAN\canToSerial\Source\uart.c{ // Transmit a byte F:\MCP\projects\CAN\canToSerial\Source\uart.c000a0a d83f RCALL 0xa8a while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a0c 0900 IORLW 0x0000a0e e001 BZ 0xa12000a10 d7fc BRA 0xa0a000a12 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a14 cfdb MOVFF 0xfdb,0xfe9000a16 ffe9000a18 0efe MOVLW 0xfe000a1a cfdb MOVFF 0xfdb,0xfea000a1c ffea000a1e 50ef MOVF 0xef,0x0,0x0000a20 6ee6 MOVWF 0xe6,0x0000a22 dfe0 RCALL 0x9e4000a24 52e5 MOVF 0xe5,0x1,0x0000a26 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a28 cfdb MOVFF 0xfdb,0xfe9000a2a ffe9000a2c 2adb INCF 0xdb,0x1,0x0000a2e 0efe MOVLW 0xfe000a30 cfdb MOVFF 0xfdb,0xfea000a32 ffea000a34 e301 BNC 0xa38000a36 2adb INCF 0xdb,0x1,0x0000a38 50ef MOVF 0xef,0x0,0x0000a3a e1e7 BNZ 0xa0a000a3c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c000a3e cfe7 MOVFF 0xfe7,0xfd9000a40 ffd9000a42 0012 RETURN 0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartPutrs F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: Byte array to send on uart (static) F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a44 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canToSerial\Source\uart.c000a46 ffe6000a48 cfe1 MOVFF 0xfe1,0xfd9000a4a ffd9{ F:\MCP\projects\CAN\canToSerial\Source\uart.cdo F:\MCP\projects\CAN\canToSerial\Source\uart.c{ // Transmit a byte F:\MCP\projects\CAN\canToSerial\Source\uart.c000a4c d81e RCALL 0xa8a while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a4e 0900 IORLW 0x0000a50 e001 BZ 0xa54000a52 d7fc BRA 0xa4c000a54 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a56 cfdb MOVFF 0xfdb,0xff6000a58 fff6000a5a 0efe MOVLW 0xfe000a5c cfdb MOVFF 0xfdb,0xff7000a5e fff7000a60 0008 TBLRD000a62 50f5 MOVF 0xf5,0x0,0x0000a64 6ee6 MOVWF 0xe6,0x0000a66 dfbe RCALL 0x9e4000a68 52e5 MOVF 0xe5,0x1,0x0000a6a 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a6c cfdb MOVFF 0xfdb,0xff6000a6e fff6000a70 2adb INCF 0xdb,0x1,0x0000a72 0efe MOVLW 0xfe000a74 cfdb MOVFF 0xfdb,0xff7000a76 fff7000a78 e301 BNC 0xa7c000a7a 2adb INCF 0xdb,0x1,0x0000a7c 0008 TBLRD000a7e 50f5 MOVF 0xf5,0x0,0x0000a80 e1e5 BNZ 0xa4c000a82 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c000a84 cfe7 MOVFF 0xfe7,0xfd9000a86 ffd9000a88 0012 RETURN 0x0F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartBusy F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: none. F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: If usart busy or not. F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.cchar uartBusy(void) F:\MCP\projects\CAN\canToSerial\Source\uart.c{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a8a 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a8c 0b02 ANDLW 0x2000a8e 0a02 XORLW 0x2000a90 e001 BZ 0xa94000a92 0e01 MOVLW 0x1000a94 d000 BRA 0xa96000a96 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartGet F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: Byte read F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.cBYTE uartGet(void) F:\MCP\projects\CAN\canToSerial\Source\uart.c{ F:\MCP\projects\CAN\canToSerial\Source\uart.c// Return the received data F:\MCP\projects\CAN\canToSerial\Source\uart.c000a98 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a9a d000 BRA 0xa9c000a9c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartISR F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: call to uartParse F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.cvoid uartISR(void) F:\MCP\projects\CAN\canToSerial\Source\uart.c{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a9e 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canToSerial\Source\uart.c000aa0 0b20 ANDLW 0x20000aa2 e00d BZ 0xabe000aa4 509d MOVF 0x9d,0x0,0x0000aa6 0b20 ANDLW 0x20000aa8 e00a BZ 0xabe{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000aaa a2ab BTFSS 0xab,0x1,0x0 if (RCSTAbits.OERR) { RCSTAbits.CREN=0; RCSTAbits.CREN=1; } F:\MCP\projects\CAN\canToSerial\Source\uart.c000aac d002 BRA 0xab2000aae 98ab BCF 0xab,0x4,0x0000ab0 88ab BSF 0xab,0x4,0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c000ab2 dff2 RCALL 0xa98 uartParse(uartGet()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000ab4 6ee6 MOVWF 0xe6,0x0000ab6 ece8 CALL 0x7d0,0x0000ab8 f003000aba 52e5 MOVF 0xe5,0x1,0x0000abc 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c} F:\MCP\projects\CAN\canToSerial\Source\uart.c000abe 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c/* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Function: uartDataRedy F:\MCP\projects\CAN\canToSerial\Source\uart.c* F:\MCP\projects\CAN\canToSerial\Source\uart.c* Input: none. F:\MCP\projects\CAN\canToSerial\Source\uart.c* Output: If usart data are redy to be read. F:\MCP\projects\CAN\canToSerial\Source\uart.c* Pre-conditions: call to uartInit() F:\MCP\projects\CAN\canToSerial\Source\uart.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\uart.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\uart.c*/ F:\MCP\projects\CAN\canToSerial\Source\uart.cchar uartDataRedy(void) F:\MCP\projects\CAN\canToSerial\Source\uart.c{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000ac0 a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\canToSerial\Source\uart.c000ac2 d002 BRA 0xac8{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000ac4 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\canToSerial\Source\uart.c000ac6 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\canToSerial\Source\uart.c} F:\MCP\projects\CAN\canToSerial\Source\uart.c000ac8 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\canToSerial\Source\uart.c000aca 0b20 ANDLW 0x20000acc e001 BZ 0xad0000ace 0e01 MOVLW 0x1000ad0 d000 BRA 0xad2000ad2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.cF:\MCP\projects\CAN\canToSerial\Source\uart.c#endif F:\MCP\projects\CAN\canToSerial\Source\uart.c/********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* CAN driver F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* FileName: CAN.c F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Author Date Comment F:\MCP\projects\CAN\canToSerial\Source\CAN.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canToSerial\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canToSerial\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canToSerial\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c/* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\CAN.c*/ F:\MCP\projects\CAN\canToSerial\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canToSerial\Source\CAN.c{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c000044 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canToSerial\Source\CAN.c000046 6e6f MOVWF 0x6f,0x0000048 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canToSerial\Source\CAN.c00004a 146e ANDWF 0x6e,0x0,0x000004c 0880 SUBLW 0x8000004e e001 BZ 0x52000050 d7fb BRA 0x48F:\MCP\projects\CAN\canToSerial\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000052 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canToSerial\Source\CAN.c000054 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000056 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canToSerial\Source\CAN.c000058 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00005a 1070 IORWF 0x70,0x0,0x000005c 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canToSerial\Source\CAN.c00005e 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canToSerial\Source\CAN.c000060 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000062 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000064 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canToSerial\Source\CAN.c000066 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000068 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00006a 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canToSerial\Source\CAN.c00006c 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canToSerial\Source\CAN.c00006e 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canToSerial\Source\CAN.c000070 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000072 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000074 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000076 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000078 9e77 BCF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00007a 8c77 BSF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canToSerial\Source\CAN.c00007c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00007e 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canToSerial\Source\CAN.c000080 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000082 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canToSerial\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canToSerial\Source\CAN.c000084 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000086 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000088 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canToSerial\Source\CAN.c00008a 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canToSerial\Source\CAN.c00008c 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canToSerial\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canToSerial\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canToSerial\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canToSerial\Source\CAN.c#else F:\MCP\projects\CAN\canToSerial\Source\CAN.c00008e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canToSerial\Source\CAN.c000090 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canToSerial\Source\CAN.c000092 146e ANDWF 0x6e,0x0,0x0000094 e001 BZ 0x98000096 d7fc BRA 0x90#endif F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000098 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c/* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canToSerial\Source\CAN.c*/ F:\MCP\projects\CAN\canToSerial\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canToSerial\Source\CAN.c{ F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00009a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canToSerial\Source\CAN.c00009c 0b02 ANDLW 0x200009e e106 BNZ 0xac0000a0 50a4 MOVF 0xa4,0x0,0x00000a2 0b02 ANDLW 0x20000a4 e103 BNZ 0xac0000a6 50a4 MOVF 0xa4,0x0,0x00000a8 0b01 ANDLW 0x10000aa e047 BZ 0x13a{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Get which buffer that is ful. F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ac ae60 BTFSS 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ae d006 BRA 0xbc0000b0 0e00 MOVLW 0x00000b2 1477 ANDWF 0x77,0x0,0x00000b4 0910 IORLW 0x100000b6 6e77 MOVWF 0x77,0x00000b8 d841 RCALL 0x13c0000ba d039 BRA 0x12e else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000bc 010f MOVLB 0xf0000be af50 BTFSS 0x50,0x7,0x10000c0 d006 BRA 0xce0000c2 0e00 MOVLW 0x00000c4 1477 ANDWF 0x77,0x0,0x00000c6 0911 IORLW 0x110000c8 6e77 MOVWF 0x77,0x00000ca d838 RCALL 0x13c0000cc d030 BRA 0x12e else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ce 010e MOVLB 0xe0000d0 af20 BTFSS 0x20,0x7,0x10000d2 d006 BRA 0xe00000d4 0e00 MOVLW 0x00000d6 1477 ANDWF 0x77,0x0,0x00000d8 0912 IORLW 0x120000da 6e77 MOVWF 0x77,0x00000dc d82f RCALL 0x13c0000de d027 BRA 0x12e else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000e0 af30 BTFSS 0x30,0x7,0x10000e2 d006 BRA 0xf00000e4 0e00 MOVLW 0x00000e6 1477 ANDWF 0x77,0x0,0x00000e8 0913 IORLW 0x130000ea 6e77 MOVWF 0x77,0x00000ec d827 RCALL 0x13c0000ee d01f BRA 0x12e else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000f0 af40 BTFSS 0x40,0x7,0x10000f2 d006 BRA 0x1000000f4 0e00 MOVLW 0x00000f6 1477 ANDWF 0x77,0x0,0x00000f8 0914 IORLW 0x140000fa 6e77 MOVWF 0x77,0x00000fc d81f RCALL 0x13c0000fe d017 BRA 0x12e else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000100 af50 BTFSS 0x50,0x7,0x1000102 d006 BRA 0x110000104 0e00 MOVLW 0x0000106 1477 ANDWF 0x77,0x0,0x0000108 0915 IORLW 0x1500010a 6e77 MOVWF 0x77,0x000010c d817 RCALL 0x13c00010e d00f BRA 0x12e else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000110 af60 BTFSS 0x60,0x7,0x1000112 d006 BRA 0x120000114 0e00 MOVLW 0x0000116 1477 ANDWF 0x77,0x0,0x0000118 0916 IORLW 0x1600011a 6e77 MOVWF 0x77,0x000011c d80f RCALL 0x13c00011e d007 BRA 0x12e else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000120 af70 BTFSS 0x70,0x7,0x1000122 d005 BRA 0x12e000124 0e00 MOVLW 0x0000126 1477 ANDWF 0x77,0x0,0x0000128 0917 IORLW 0x1700012a 6e77 MOVWF 0x77,0x000012c d807 RCALL 0x13cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00012e b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c000130 92a4 BCF 0xa4,0x1,0x0000132 b2a4 BTFSC 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c000134 92a4 BCF 0xa4,0x1,0x0000136 b0a4 BTFSC 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c000138 90a4 BCF 0xa4,0x0,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c00013a 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c/* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\CAN.c*/ F:\MCP\projects\CAN\canToSerial\Source\CAN.c00013c cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canToSerial\Source\CAN.c00013e ffe6000140 cfe1 MOVFF 0xfe1,0xfd9000142 ffd9000144 0e0f MOVLW 0xf000146 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Set extended mode or not. F:\MCP\projects\CAN\canToSerial\Source\CAN.c000148 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00014a 0b08 ANDLW 0x800014c e102 BNZ 0x15200014e 0e00 MOVLW 0x0000150 d001 BRA 0x154000152 0e01 MOVLW 0x1000154 6ee7 MOVWF 0xe7,0x0000156 0e04 MOVLW 0x4000158 cfe7 MOVFF 0xfe7,0xfdb00015a ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Clear F:\MCP\projects\CAN\canToSerial\Source\CAN.c00015c 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00015e 6ade CLRF 0xde,0x0000160 6ade CLRF 0xde,0x0000162 6add CLRF 0xdd,0x0000164 52dd MOVF 0xdd,0x1,0x0000166 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000168 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c00016a e16f BNZ 0x24a{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c//Read extended ident. F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//xx xx xx 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00016c 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<21) + (((DWORD)(RXB0SIDL & 0xE0))<<13) + (((DWORD)(RXB0SIDL & 0x03))<<16) + (((DWORD)RXB0EIDH)<<8) + (BYTE)RXB0EIDL; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00016e 6e00 MOVWF 0x0,0x0000170 6a01 CLRF 0x1,0x0000172 6a02 CLRF 0x2,0x0000174 6a03 CLRF 0x3,0x0000176 0e15 MOVLW 0x15000178 0b1f ANDLW 0x1f00017a e007 BZ 0x18a00017c 90d8 BCF 0xd8,0x0,0x000017e 3600 RLCF 0x0,0x1,0x0000180 3601 RLCF 0x1,0x1,0x0000182 3602 RLCF 0x2,0x1,0x0000184 3603 RLCF 0x3,0x1,0x0000186 06e8 DECF 0xe8,0x1,0x0000188 e1f9 BNZ 0x17c00018a 0ee0 MOVLW 0xe000018c 1462 ANDWF 0x62,0x0,0x000018e 6e04 MOVWF 0x4,0x0000190 6a05 CLRF 0x5,0x0000192 6a06 CLRF 0x6,0x0000194 6a07 CLRF 0x7,0x0000196 0e0d MOVLW 0xd000198 0b1f ANDLW 0x1f00019a e007 BZ 0x1aa00019c 90d8 BCF 0xd8,0x0,0x000019e 3604 RLCF 0x4,0x1,0x00001a0 3605 RLCF 0x5,0x1,0x00001a2 3606 RLCF 0x6,0x1,0x00001a4 3607 RLCF 0x7,0x1,0x00001a6 06e8 DECF 0xe8,0x1,0x00001a8 e1f9 BNZ 0x19c0001aa 5004 MOVF 0x4,0x0,0x00001ac 2600 ADDWF 0x0,0x1,0x00001ae 5005 MOVF 0x5,0x0,0x00001b0 2201 ADDWFC 0x1,0x1,0x00001b2 5006 MOVF 0x6,0x0,0x00001b4 2202 ADDWFC 0x2,0x1,0x00001b6 5007 MOVF 0x7,0x0,0x00001b8 2203 ADDWFC 0x3,0x1,0x00001ba 0e03 MOVLW 0x30001bc 1462 ANDWF 0x62,0x0,0x00001be 6e08 MOVWF 0x8,0x00001c0 6a09 CLRF 0x9,0x00001c2 6a0a CLRF 0xa,0x00001c4 6a0b CLRF 0xb,0x00001c6 0e10 MOVLW 0x100001c8 0b1f ANDLW 0x1f0001ca e007 BZ 0x1da0001cc 90d8 BCF 0xd8,0x0,0x00001ce 3608 RLCF 0x8,0x1,0x00001d0 3609 RLCF 0x9,0x1,0x00001d2 360a RLCF 0xa,0x1,0x00001d4 360b RLCF 0xb,0x1,0x00001d6 06e8 DECF 0xe8,0x1,0x00001d8 e1f9 BNZ 0x1cc0001da 5008 MOVF 0x8,0x0,0x00001dc 2600 ADDWF 0x0,0x1,0x00001de 5009 MOVF 0x9,0x0,0x00001e0 2201 ADDWFC 0x1,0x1,0x00001e2 500a MOVF 0xa,0x0,0x00001e4 2202 ADDWFC 0x2,0x1,0x00001e6 500b MOVF 0xb,0x0,0x00001e8 2203 ADDWFC 0x3,0x1,0x00001ea 5063 MOVF 0x63,0x0,0x00001ec 6e0c MOVWF 0xc,0x00001ee 6a0d CLRF 0xd,0x00001f0 6a0e CLRF 0xe,0x00001f2 6a0f CLRF 0xf,0x00001f4 0e08 MOVLW 0x80001f6 0b1f ANDLW 0x1f0001f8 e007 BZ 0x2080001fa 90d8 BCF 0xd8,0x0,0x00001fc 360c RLCF 0xc,0x1,0x00001fe 360d RLCF 0xd,0x1,0x0000200 360e RLCF 0xe,0x1,0x0000202 360f RLCF 0xf,0x1,0x0000204 06e8 DECF 0xe8,0x1,0x0000206 e1f9 BNZ 0x1fa000208 500c MOVF 0xc,0x0,0x000020a 2600 ADDWF 0x0,0x1,0x000020c 500d MOVF 0xd,0x0,0x000020e 2201 ADDWFC 0x1,0x1,0x0000210 500e MOVF 0xe,0x0,0x0000212 2202 ADDWFC 0x2,0x1,0x0000214 500f MOVF 0xf,0x0,0x0000216 2203 ADDWFC 0x3,0x1,0x0000218 5064 MOVF 0x64,0x0,0x000021a 6e10 MOVWF 0x10,0x000021c 6a11 CLRF 0x11,0x000021e 6a12 CLRF 0x12,0x0000220 6a13 CLRF 0x13,0x0000222 5010 MOVF 0x10,0x0,0x0000224 2600 ADDWF 0x0,0x1,0x0000226 5011 MOVF 0x11,0x0,0x0000228 2201 ADDWFC 0x1,0x1,0x000022a 5012 MOVF 0x12,0x0,0x000022c 2202 ADDWFC 0x2,0x1,0x000022e 5013 MOVF 0x13,0x0,0x0000230 2203 ADDWFC 0x3,0x1,0x0000232 c000 MOVFF 0x0,0xfdf000234 ffdf000236 0e01 MOVLW 0x1000238 c001 MOVFF 0x1,0xfdb00023a ffdb00023c 0e02 MOVLW 0x200023e c002 MOVFF 0x2,0xfdb000240 ffdb000242 0e03 MOVLW 0x3000244 c003 MOVFF 0x3,0xfdb000246 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c000248 d02f BRA 0x2a8 else F:\MCP\projects\CAN\canToSerial\Source\CAN.c{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c//Read standard ident. F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00024a 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00024c 6e00 MOVWF 0x0,0x000024e 6a01 CLRF 0x1,0x0000250 6a02 CLRF 0x2,0x0000252 6a03 CLRF 0x3,0x0000254 0e03 MOVLW 0x3000256 0b1f ANDLW 0x1f000258 e007 BZ 0x26800025a 90d8 BCF 0xd8,0x0,0x000025c 3600 RLCF 0x0,0x1,0x000025e 3601 RLCF 0x1,0x1,0x0000260 3602 RLCF 0x2,0x1,0x0000262 3603 RLCF 0x3,0x1,0x0000264 06e8 DECF 0xe8,0x1,0x0000266 e1f9 BNZ 0x25a000268 5062 MOVF 0x62,0x0,0x000026a 6e04 MOVWF 0x4,0x000026c 6a05 CLRF 0x5,0x000026e 6a06 CLRF 0x6,0x0000270 6a07 CLRF 0x7,0x0000272 0e05 MOVLW 0x5000274 90d8 BCF 0xd8,0x0,0x0000276 3207 RRCF 0x7,0x1,0x0000278 3206 RRCF 0x6,0x1,0x000027a 3205 RRCF 0x5,0x1,0x000027c 3204 RRCF 0x4,0x1,0x000027e 06e8 DECF 0xe8,0x1,0x0000280 e1f9 BNZ 0x274000282 5004 MOVF 0x4,0x0,0x0000284 2600 ADDWF 0x0,0x1,0x0000286 5005 MOVF 0x5,0x0,0x0000288 2201 ADDWFC 0x1,0x1,0x000028a 5006 MOVF 0x6,0x0,0x000028c 2202 ADDWFC 0x2,0x1,0x000028e 5007 MOVF 0x7,0x0,0x0000290 2203 ADDWFC 0x3,0x1,0x0000292 c000 MOVFF 0x0,0xfdf000294 ffdf000296 0e01 MOVLW 0x1000298 c001 MOVFF 0x1,0xfdb00029a ffdb00029c 0e02 MOVLW 0x200029e c002 MOVFF 0x2,0xfdb0002a0 ffdb0002a2 0e03 MOVLW 0x30002a4 c003 MOVFF 0x3,0xfdb0002a6 ffdb} F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Data length F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002a8 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002aa 0b01 ANDLW 0x10002ac 6e02 MOVWF 0x2,0x00002ae 5065 MOVF 0x65,0x0,0x00002b0 0b02 ANDLW 0x20002b2 e001 BZ 0x2b60002b4 0e01 MOVLW 0x10002b6 24e8 ADDWF 0xe8,0x0,0x00002b8 6e01 MOVWF 0x1,0x00002ba 5065 MOVF 0x65,0x0,0x00002bc 0b04 ANDLW 0x40002be e001 BZ 0x2c20002c0 0e01 MOVLW 0x10002c2 0d04 MULLW 0x40002c4 cff3 MOVFF 0xff3,0x00002c6 f0000002c8 5065 MOVF 0x65,0x0,0x00002ca 0b08 ANDLW 0x80002cc e001 BZ 0x2d00002ce 0e01 MOVLW 0x10002d0 0d08 MULLW 0x80002d2 50f3 MOVF 0xf3,0x0,0x00002d4 2400 ADDWF 0x0,0x0,0x00002d6 2401 ADDWF 0x1,0x0,0x00002d8 2402 ADDWF 0x2,0x0,0x00002da 6ee7 MOVWF 0xe7,0x00002dc 0e06 MOVLW 0x60002de cfe7 MOVFF 0xfe7,0xfdb0002e0 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Remote request F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002e2 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002e4 0b40 ANDLW 0x400002e6 e102 BNZ 0x2ec0002e8 0e00 MOVLW 0x00002ea d001 BRA 0x2ee0002ec 0e01 MOVLW 0x10002ee 6ee7 MOVWF 0xe7,0x00002f0 0e05 MOVLW 0x50002f2 cfe7 MOVFF 0xfe7,0xfdb0002f4 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002f6 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002f8 cf66 MOVFF 0xf66,0xfdb0002fa ffdb0002fc 0e08 MOVLW 0x80002fe cf67 MOVFF 0xf67,0xfdb000300 ffdb000302 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000304 cf68 MOVFF 0xf68,0xfdb000306 ffdb000308 0e0a MOVLW 0xa00030a cf69 MOVFF 0xf69,0xfdb00030c ffdb00030e 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000310 cf6a MOVFF 0xf6a,0xfdb000312 ffdb000314 0e0c MOVLW 0xc000316 cf6b MOVFF 0xf6b,0xfdb000318 ffdb00031a 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00031c cf6c MOVFF 0xf6c,0xfdb00031e ffdb000320 0e0e MOVLW 0xe000322 cf6d MOVFF 0xf6d,0xfdb000324 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canToSerial\Source\CAN.c000326 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canToSerial\Source\CAN.c000328 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00032a ffe900032c cfda MOVFF 0xfda,0xfea00032e ffea000330 cfee MOVFF 0xfee,0xfe6000332 ffe6000334 cfee MOVFF 0xfee,0xfe6000336 ffe6000338 cfee MOVFF 0xfee,0xfe600033a ffe600033c cfee MOVFF 0xfee,0xfe600033e ffe6000340 cfee MOVFF 0xfee,0xfe6000342 ffe6000344 cfee MOVFF 0xfee,0xfe6000346 ffe6000348 cfee MOVFF 0xfee,0xfe600034a ffe600034c cfee MOVFF 0xfee,0xfe600034e ffe6000350 cfee MOVFF 0xfee,0xfe6000352 ffe6000354 cfee MOVFF 0xfee,0xfe6000356 ffe6000358 cfee MOVFF 0xfee,0xfe600035a ffe600035c cfee MOVFF 0xfee,0xfe600035e ffe6000360 cfee MOVFF 0xfee,0xfe6000362 ffe6000364 cfee MOVFF 0xfee,0xfe6000366 ffe6000368 cfee MOVFF 0xfee,0xfe600036a ffe600036c ec45 CALL 0x68a,0x000036e f003000370 6e00 MOVWF 0x0,0x0000372 0e0f MOVLW 0xf000374 5ee1 SUBWF 0xe1,0x1,0x0000376 5000 MOVF 0x0,0x0,0x0000378 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canToSerial\Source\CAN.c00037a 5ce1 SUBWF 0xe1,0x0,0x000037c e202 BC 0x38200037e 6ae1 CLRF 0xe1,0x0000380 52e5 MOVF 0xe5,0x1,0x0000382 6ee1 MOVWF 0xe1,0x0000384 52e5 MOVF 0xe5,0x1,0x0000386 cfe7 MOVFF 0xfe7,0xfd9000388 ffd900038a 0012 RETURN 0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c/* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canToSerial\Source\CAN.c* F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canToSerial\Source\CAN.c*/ F:\MCP\projects\CAN\canToSerial\Source\CAN.c00038c cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canToSerial\Source\CAN.c00038e ffe6000390 cfe1 MOVFF 0xfe1,0xfd9000392 ffd9{ F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000394 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000396 b740 BTFSC 0x40,0x3,0x1000398 d004 BRA 0x3a200039a 0e00 MOVLW 0x000039c 1477 ANDWF 0x77,0x0,0x000039e 0903 IORLW 0x30003a0 6e77 MOVWF 0x77,0x00003a2 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003a4 b730 BTFSC 0x30,0x3,0x10003a6 d004 BRA 0x3b00003a8 0e00 MOVLW 0x00003aa 1477 ANDWF 0x77,0x0,0x00003ac 0904 IORLW 0x40003ae 6e77 MOVWF 0x77,0x00003b0 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003b2 b720 BTFSC 0x20,0x3,0x10003b4 d005 BRA 0x3c00003b6 0e00 MOVLW 0x00003b8 1477 ANDWF 0x77,0x0,0x00003ba 0905 IORLW 0x50003bc 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003be d002 BRA 0x3c4 else { return FALSE;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003c0 0e00 MOVLW 0x00003c2 d0e4 BRA 0x58cF:\MCP\projects\CAN\canToSerial\Source\CAN.c0003c4 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003c6 cfdb MOVFF 0xfdb,0x00003c8 f0000003ca 3400 RLCF 0x0,0x0,0x00003cc e20e BC 0x3ea0003ce 0eef MOVLW 0xef0003d0 cfdb MOVFF 0xfdb,0x10003d2 f0010003d4 0e03 MOVLW 0x30003d6 6ee7 MOVWF 0xe7,0x00003d8 1801 XORWF 0x1,0x0,0x00003da aee8 BTFSS 0xe8,0x7,0x00003dc d002 BRA 0x3e20003de 3401 RLCF 0x1,0x0,0x00003e0 d003 BRA 0x3e80003e2 50e7 MOVF 0xe7,0x0,0x00003e4 80d8 BSF 0xd8,0x0,0x00003e6 5401 SUBFWB 0x1,0x0,0x00003e8 e202 BC 0x3ee0003ea 0eef MOVLW 0xef0003ec 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c0003ee 0ef4 MOVLW 0xf4 if (cm.extended==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003f0 04db DECF 0xdb,0x0,0x00003f2 e15f BNZ 0x4b2{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c//Write extended ident. F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//xx xx xx 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c0003f4 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003f6 cfdb MOVFF 0xfdb,0x00003f8 f0000003fa 0ef1 MOVLW 0xf10003fc cfdb MOVFF 0xfdb,0x10003fe f001000400 0ef2 MOVLW 0xf2000402 cfdb MOVFF 0xfdb,0x2000404 f002000406 0ef3 MOVLW 0xf3000408 cfdb MOVFF 0xfdb,0x300040a f00300040c 0e15 MOVLW 0x1500040e 90d8 BCF 0xd8,0x0,0x0000410 3203 RRCF 0x3,0x1,0x0000412 3202 RRCF 0x2,0x1,0x0000414 3201 RRCF 0x1,0x1,0x0000416 3200 RRCF 0x0,0x1,0x0000418 06e8 DECF 0xe8,0x1,0x000041a e1f9 BNZ 0x40e00041c 5000 MOVF 0x0,0x0,0x000041e 6e61 MOVWF 0x61,0x0000420 0ef0 MOVLW 0xf0 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000422 cfdb MOVFF 0xfdb,0x5000424 f005000426 0ef1 MOVLW 0xf1000428 cfdb MOVFF 0xfdb,0x600042a f00600042c 0ef2 MOVLW 0xf200042e cfdb MOVFF 0xfdb,0x7000430 f007000432 0ef3 MOVLW 0xf3000434 cfdb MOVFF 0xfdb,0x8000436 f008000438 0e0d MOVLW 0xd00043a 90d8 BCF 0xd8,0x0,0x000043c 3208 RRCF 0x8,0x1,0x000043e 3207 RRCF 0x7,0x1,0x0000440 3206 RRCF 0x6,0x1,0x0000442 3205 RRCF 0x5,0x1,0x0000444 06e8 DECF 0xe8,0x1,0x0000446 e1f9 BNZ 0x43a000448 0ee0 MOVLW 0xe000044a 1405 ANDWF 0x5,0x0,0x000044c 6e04 MOVWF 0x4,0x000044e 0ef0 MOVLW 0xf0000450 cfdb MOVFF 0xfdb,0x0000452 f000000454 0ef1 MOVLW 0xf1000456 cfdb MOVFF 0xfdb,0x1000458 f00100045a 0ef2 MOVLW 0xf200045c cfdb MOVFF 0xfdb,0x200045e f002000460 0ef3 MOVLW 0xf3000462 cfdb MOVFF 0xfdb,0x3000464 f003000466 0e10 MOVLW 0x10000468 90d8 BCF 0xd8,0x0,0x000046a 3203 RRCF 0x3,0x1,0x000046c 3202 RRCF 0x2,0x1,0x000046e 3201 RRCF 0x1,0x1,0x0000470 3200 RRCF 0x0,0x1,0x0000472 06e8 DECF 0xe8,0x1,0x0000474 e1f9 BNZ 0x468000476 0e03 MOVLW 0x3000478 1400 ANDWF 0x0,0x0,0x000047a 2404 ADDWF 0x4,0x0,0x000047c 6e62 MOVWF 0x62,0x000047e 0ef0 MOVLW 0xf0 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000480 cfdb MOVFF 0xfdb,0x0000482 f000000484 0ef1 MOVLW 0xf1000486 cfdb MOVFF 0xfdb,0x1000488 f00100048a 0ef2 MOVLW 0xf200048c cfdb MOVFF 0xfdb,0x200048e f002000490 0ef3 MOVLW 0xf3000492 cfdb MOVFF 0xfdb,0x3000494 f003000496 0e08 MOVLW 0x8000498 90d8 BCF 0xd8,0x0,0x000049a 3203 RRCF 0x3,0x1,0x000049c 3202 RRCF 0x2,0x1,0x000049e 3201 RRCF 0x1,0x1,0x00004a0 3200 RRCF 0x0,0x1,0x00004a2 06e8 DECF 0xe8,0x1,0x00004a4 e1f9 BNZ 0x4980004a6 5000 MOVF 0x0,0x0,0x00004a8 6e63 MOVWF 0x63,0x00004aa 0ef0 MOVLW 0xf0 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004ac 50db MOVF 0xdb,0x0,0x00004ae 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b0 d02f BRA 0x510 else F:\MCP\projects\CAN\canToSerial\Source\CAN.c{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c//Write standard ident. F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//xx xx xx xx xx 10 09 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDH 10 09 08 07 06 05 04 03 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//RXB0SIDL 02 01 00 xx xx xx xx xx F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b2 0ef0 MOVLW 0xf0 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b4 cfdb MOVFF 0xfdb,0x00004b6 f0000004b8 0ef1 MOVLW 0xf10004ba cfdb MOVFF 0xfdb,0x10004bc f0010004be 0ef2 MOVLW 0xf20004c0 cfdb MOVFF 0xfdb,0x20004c2 f0020004c4 0ef3 MOVLW 0xf30004c6 cfdb MOVFF 0xfdb,0x30004c8 f0030004ca 0e03 MOVLW 0x30004cc 90d8 BCF 0xd8,0x0,0x00004ce 3203 RRCF 0x3,0x1,0x00004d0 3202 RRCF 0x2,0x1,0x00004d2 3201 RRCF 0x1,0x1,0x00004d4 3200 RRCF 0x0,0x1,0x00004d6 06e8 DECF 0xe8,0x1,0x00004d8 e1f9 BNZ 0x4cc0004da 5000 MOVF 0x0,0x0,0x00004dc 6e61 MOVWF 0x61,0x00004de 0ef0 MOVLW 0xf0 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004e0 cfdb MOVFF 0xfdb,0x00004e2 f0000004e4 0ef1 MOVLW 0xf10004e6 cfdb MOVFF 0xfdb,0x10004e8 f0010004ea 0ef2 MOVLW 0xf20004ec cfdb MOVFF 0xfdb,0x20004ee f0020004f0 0ef3 MOVLW 0xf30004f2 cfdb MOVFF 0xfdb,0x30004f4 f0030004f6 0e05 MOVLW 0x50004f8 0b1f ANDLW 0x1f0004fa e007 BZ 0x50a0004fc 90d8 BCF 0xd8,0x0,0x00004fe 3600 RLCF 0x0,0x1,0x0000500 3601 RLCF 0x1,0x1,0x0000502 3602 RLCF 0x2,0x1,0x0000504 3603 RLCF 0x3,0x1,0x0000506 06e8 DECF 0xe8,0x1,0x0000508 e1f9 BNZ 0x4fc00050a 0ee0 MOVLW 0xe000050c 1400 ANDWF 0x0,0x0,0x000050e 6e62 MOVWF 0x62,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Data length F:\MCP\projects\CAN\canToSerial\Source\CAN.c000510 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000512 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000514 50db MOVF 0xdb,0x0,0x0000516 0808 SUBLW 0x8000518 e203 BC 0x52000051a 0e08 MOVLW 0x800051c 6e65 MOVWF 0x65,0x000051e d003 BRA 0x526000520 0ef6 MOVLW 0xf6000522 50db MOVF 0xdb,0x0,0x0000524 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Remote request F:\MCP\projects\CAN\canToSerial\Source\CAN.c000526 0ef5 MOVLW 0xf5 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c000528 04db DECF 0xdb,0x0,0x000052a e102 BNZ 0x530{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c_asm F:\MCP\projects\CAN\canToSerial\Source\CAN.c00052c 8c65 BSF 0x65,0x6,0x0 bsf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canToSerial\Source\CAN.c_endasm F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c00052e d001 BRA 0x532 else F:\MCP\projects\CAN\canToSerial\Source\CAN.c{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c_asm F:\MCP\projects\CAN\canToSerial\Source\CAN.c000530 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canToSerial\Source\CAN.c_endasm F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canToSerial\Source\CAN.c000532 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000534 50db MOVF 0xdb,0x0,0x0000536 6e66 MOVWF 0x66,0x0000538 0ef8 MOVLW 0xf800053a 50db MOVF 0xdb,0x0,0x000053c 6e67 MOVWF 0x67,0x000053e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000540 50db MOVF 0xdb,0x0,0x0000542 6e68 MOVWF 0x68,0x0000544 0efa MOVLW 0xfa000546 50db MOVF 0xdb,0x0,0x0000548 6e69 MOVWF 0x69,0x000054a 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00054c 50db MOVF 0xdb,0x0,0x000054e 6e6a MOVWF 0x6a,0x0000550 0efc MOVLW 0xfc000552 50db MOVF 0xdb,0x0,0x0000554 6e6b MOVWF 0x6b,0x0000556 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000558 50db MOVF 0xdb,0x0,0x000055a 6e6c MOVWF 0x6c,0x000055c 0efe MOVLW 0xfe00055e 50db MOVF 0xdb,0x0,0x0000560 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canToSerial\Source\CAN.c000562 0ef4 MOVLW 0xf4 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000564 04db DECF 0xdb,0x0,0x0000566 e102 BNZ 0x56c000568 0e01 MOVLW 0x100056a d001 BRA 0x56e00056c 0e00 MOVLW 0x000056e b0e8 BTFSC 0xe8,0x0,0x0000570 8662 BSF 0x62,0x3,0x0000572 a0e8 BTFSS 0xe8,0x0,0x0000574 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Priority F:\MCP\projects\CAN\canToSerial\Source\CAN.c000576 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000578 cfdb MOVFF 0xfdb,0xfe600057a ffe600057c 0efc MOVLW 0xfc00057e 1460 ANDWF 0x60,0x0,0x0000580 52e5 MOVF 0xe5,0x1,0x0000582 10e7 IORWF 0xe7,0x0,0x0000584 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canToSerial\Source\CAN.c_asm F:\MCP\projects\CAN\canToSerial\Source\CAN.c000586 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canToSerial\Source\CAN.c_endasm F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000588 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00058a d000 BRA 0x58cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00058c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\CAN.c00058e cfe7 MOVFF 0xfe7,0xfd9000590 ffd9000592 0012 RETURN 0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canToSerial\Source\CAN.c/********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Main application F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\Main.c* FileName: Main.c F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Author Date Comment F:\MCP\projects\CAN\canToSerial\Source\Main.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canToSerial\Source\Main.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canToSerial\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c#include <uart.h> F:\MCP\projects\CAN\canToSerial\Source\Main.c#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cvoid main() F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Inits F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000594 d874 RCALL 0x67e mainInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c000596 ec22 CALL 0x44,0x0 canInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000598 f000#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c00059a ece3 CALL 0x9c6,0x0 uartInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00059c f004#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00059e ecb9 CALL 0xb72,0x0 tickInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c0005a0 f005F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0005a2 d7ff BRA 0x5a2 while(1) F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0005a4 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma interruptlow HighISR F:\MCP\projects\CAN\canToSerial\Source\Main.c0005a6 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c0005a8 ffe40005aa cfe0 MOVFF 0xfe0,0xfe40005ac ffe40005ae 6ee4 MOVWF 0xe4,0x00005b0 cfda MOVFF 0xfda,0xfe40005b2 ffe40005b4 cfe2 MOVFF 0xfe2,0xfda0005b6 ffda0005b8 cfe9 MOVFF 0xfe9,0xfe40005ba ffe40005bc cfea MOVFF 0xfea,0xfe40005be ffe40005c0 cff6 MOVFF 0xff6,0xfe40005c2 ffe40005c4 cff7 MOVFF 0xff7,0xfe40005c6 ffe40005c8 cff5 MOVFF 0xff5,0xfe40005ca ffe40005cc cff3 MOVFF 0xff3,0xfe40005ce ffe40005d0 cff4 MOVFF 0xff4,0xfe40005d2 ffe40005d4 cffa MOVFF 0xffa,0xfe40005d6 ffe40005d8 ee00 LFSR 0x0,0x140005da f0140005dc 0e0b MOVLW 0xb0005de 04e8 DECF 0xe8,0x0,0x00005e0 e303 BNC 0x5e80005e2 cfee MOVFF 0xfee,0xfe40005e4 ffe40005e6 d7fb BRA 0x5de0005e8 ee00 LFSR 0x0,0x00005ea f0000005ec 0e14 MOVLW 0x140005ee 04e8 DECF 0xe8,0x0,0x00005f0 e303 BNC 0x5f80005f2 cfee MOVFF 0xfee,0xfe40005f4 ffe40005f6 d7fb BRA 0x5ee0005f8 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c0005fa ec4f CALL 0xa9e,0x0 uartISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c0005fc f005#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c0005fe ec4d CALL 0x9a,0x0 canISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000600 f000#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000602 eccd CALL 0xb9a,0x0 tickUpdate(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000604 f005000606 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c000608 ee00 LFSR 0x0,0x1300060a f01300060c 0e14 MOVLW 0x1400060e 04e8 DECF 0xe8,0x0,0x0000610 e303 BNC 0x618000612 cfe5 MOVFF 0xfe5,0xfed000614 ffed000616 d7fb BRA 0x60e000618 ee00 LFSR 0x0,0x1e00061a f01e00061c 0e0b MOVLW 0xb00061e 04e8 DECF 0xe8,0x0,0x0000620 e303 BNC 0x628000622 cfe5 MOVFF 0xfe5,0xfed000624 ffed000626 d7fb BRA 0x61e000628 cfe5 MOVFF 0xfe5,0xffa00062a fffa00062c cfe5 MOVFF 0xfe5,0xff400062e fff4000630 cfe5 MOVFF 0xfe5,0xff3000632 fff3000634 cfe5 MOVFF 0xfe5,0xff5000636 fff5000638 cfe5 MOVFF 0xfe5,0xff700063a fff700063c cfe5 MOVFF 0xfe5,0xff600063e fff6000640 cfe5 MOVFF 0xfe5,0xfea000642 ffea000644 cfe5 MOVFF 0xfe5,0xfe9000646 ffe9000648 cfe5 MOVFF 0xfe5,0xfda00064a ffda00064c 50e5 MOVF 0xe5,0x0,0x000064e cfe5 MOVFF 0xfe5,0xfe0000650 ffe0000652 cfe5 MOVFF 0xfe5,0xfd8000654 ffd8000656 0010 RETFIE 0x0#pragma code highVector=0x08 F:\MCP\projects\CAN\canToSerial\Source\Main.cvoid HighVector (void) F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000008 efd3 GOTO 0x5a6 _asm goto HighISR _endasm F:\MCP\projects\CAN\canToSerial\Source\Main.c00000a f00200000c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma interruptlow LowISR F:\MCP\projects\CAN\canToSerial\Source\Main.c000658 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c00065a ffe400065c cfe0 MOVFF 0xfe0,0xfe400065e ffe4000660 6ee4 MOVWF 0xe4,0x0000662 cfda MOVFF 0xfda,0xfe4000664 ffe4000666 cfe2 MOVFF 0xfe2,0xfda000668 ffda00066a 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00066c 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c00066e cfe5 MOVFF 0xfe5,0xfda000670 ffda000672 50e5 MOVF 0xe5,0x0,0x0000674 cfe5 MOVFF 0xfe5,0xfe0000676 ffe0000678 cfe5 MOVFF 0xfe5,0xfd800067a ffd800067c 0010 RETFIE 0x0#pragma code lowVector=0x18 F:\MCP\projects\CAN\canToSerial\Source\Main.cvoid LowVector (void) F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000018 ef2c GOTO 0x658 _asm goto LowISR _endasm F:\MCP\projects\CAN\canToSerial\Source\Main.c00001a f00300001c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c#pragma code // Return to default code section F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c/* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canToSerial\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\Main.c*/ F:\MCP\projects\CAN\canToSerial\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canToSerial\Source\Main.c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00067e 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Enable internal PORTB pull-ups F:\MCP\projects\CAN\canToSerial\Source\Main.c000680 9ef1 BCF 0xf1,0x7,0x0 INTCON2bits.RBPU = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canToSerial\Source\Main.c000682 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canToSerial\Source\Main.c000684 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canToSerial\Source\Main.c000686 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000688 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c/* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canToSerial\Source\Main.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\Main.c*/ F:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canToSerial\Source\Main.c00068a cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canToSerial\Source\Main.c00068c ffe600068e cfe1 MOVFF 0xfe1,0xfd9000690 ffd9000692 0e02 MOVLW 0x2000694 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000696 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000698 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c00069a 0efd MOVLW 0xfd uartPutc(UART_START_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c00069c 6ee6 MOVWF 0xe6,0x000069e ecf2 CALL 0x9e4,0x00006a0 f0040006a2 52e5 MOVF 0xe5,0x1,0x00006a4 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006a6 cfdb MOVFF 0xfdb,0xfe60006a8 ffe60006aa ecf2 CALL 0x9e4,0x00006ac f0040006ae 52e5 MOVF 0xe5,0x1,0x00006b0 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006b2 cfdb MOVFF 0xfdb,0x00006b4 f0000006b6 0ef1 MOVLW 0xf10006b8 cfdb MOVFF 0xfdb,0x10006ba f0010006bc 0ef2 MOVLW 0xf20006be cfdb MOVFF 0xfdb,0x20006c0 f0020006c2 0ef3 MOVLW 0xf30006c4 cfdb MOVFF 0xfdb,0x30006c6 f0030006c8 0e08 MOVLW 0x80006ca 90d8 BCF 0xd8,0x0,0x00006cc 3203 RRCF 0x3,0x1,0x00006ce 3202 RRCF 0x2,0x1,0x00006d0 3201 RRCF 0x1,0x1,0x00006d2 3200 RRCF 0x0,0x1,0x00006d4 06e8 DECF 0xe8,0x1,0x00006d6 e1f9 BNZ 0x6ca0006d8 5000 MOVF 0x0,0x0,0x00006da 6ee6 MOVWF 0xe6,0x00006dc ecf2 CALL 0x9e4,0x00006de f0040006e0 52e5 MOVF 0xe5,0x1,0x00006e2 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006e4 cfdb MOVFF 0xfdb,0x00006e6 f0000006e8 0ef1 MOVLW 0xf10006ea cfdb MOVFF 0xfdb,0x10006ec f0010006ee 0ef2 MOVLW 0xf20006f0 cfdb MOVFF 0xfdb,0x20006f2 f0020006f4 0ef3 MOVLW 0xf30006f6 cfdb MOVFF 0xfdb,0x30006f8 f0030006fa 0e10 MOVLW 0x100006fc 90d8 BCF 0xd8,0x0,0x00006fe 3203 RRCF 0x3,0x1,0x0000700 3202 RRCF 0x2,0x1,0x0000702 3201 RRCF 0x1,0x1,0x0000704 3200 RRCF 0x0,0x1,0x0000706 06e8 DECF 0xe8,0x1,0x0000708 e1f9 BNZ 0x6fc00070a 5000 MOVF 0x0,0x0,0x000070c 6ee6 MOVWF 0xe6,0x000070e ecf2 CALL 0x9e4,0x0000710 f004000712 52e5 MOVF 0xe5,0x1,0x0000714 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000716 cfdb MOVFF 0xfdb,0x0000718 f00000071a 0ef1 MOVLW 0xf100071c cfdb MOVFF 0xfdb,0x100071e f001000720 0ef2 MOVLW 0xf2000722 cfdb MOVFF 0xfdb,0x2000724 f002000726 0ef3 MOVLW 0xf3000728 cfdb MOVFF 0xfdb,0x300072a f00300072c 0e18 MOVLW 0x1800072e 90d8 BCF 0xd8,0x0,0x0000730 3203 RRCF 0x3,0x1,0x0000732 3202 RRCF 0x2,0x1,0x0000734 3201 RRCF 0x1,0x1,0x0000736 3200 RRCF 0x0,0x1,0x0000738 06e8 DECF 0xe8,0x1,0x000073a e1f9 BNZ 0x72e00073c 5000 MOVF 0x0,0x0,0x000073e 6ee6 MOVWF 0xe6,0x0000740 ecf2 CALL 0x9e4,0x0000742 f004000744 52e5 MOVF 0xe5,0x1,0x0000746 0ef4 MOVLW 0xf4 uartPutc(cm.extended); F:\MCP\projects\CAN\canToSerial\Source\Main.c000748 cfdb MOVFF 0xfdb,0xfe600074a ffe600074c ecf2 CALL 0x9e4,0x000074e f004000750 52e5 MOVF 0xe5,0x1,0x0000752 0ef5 MOVLW 0xf5 uartPutc(cm.remote_request); F:\MCP\projects\CAN\canToSerial\Source\Main.c000754 cfdb MOVFF 0xfdb,0xfe6000756 ffe6000758 ecf2 CALL 0x9e4,0x000075a f00400075c 52e5 MOVF 0xe5,0x1,0x000075e 0ef6 MOVLW 0xf6 uartPutc(cm.data_length); F:\MCP\projects\CAN\canToSerial\Source\Main.c000760 cfdb MOVFF 0xfdb,0xfe6000762 ffe6000764 ecf2 CALL 0x9e4,0x0000766 f004000768 52e5 MOVF 0xe5,0x1,0x000076a 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[i]); F:\MCP\projects\CAN\canToSerial\Source\Main.c00076c 6add CLRF 0xdd,0x000076e cfde MOVFF 0xfde,0x0000770 f000000772 cfdd MOVFF 0xfdd,0x1000774 f001000776 90d8 BCF 0xd8,0x0,0x0000778 5001 MOVF 0x1,0x0,0x000077a e604 BN 0x78400077c 0e08 MOVLW 0x800077e 5c00 SUBWF 0x0,0x0,0x0000780 0e00 MOVLW 0x0000782 5801 SUBWFB 0x1,0x0,0x0000784 e216 BC 0x7b2000786 50d9 MOVF 0xd9,0x0,0x0000788 0ff7 ADDLW 0xf700078a 6e00 MOVWF 0x0,0x000078c 0eff MOVLW 0xff00078e 20da ADDWFC 0xda,0x0,0x0000790 6e01 MOVWF 0x1,0x0000792 50de MOVF 0xde,0x0,0x0000794 2400 ADDWF 0x0,0x0,0x0000796 6ee9 MOVWF 0xe9,0x0000798 50dd MOVF 0xdd,0x0,0x000079a 2001 ADDWFC 0x1,0x0,0x000079c 6eea MOVWF 0xea,0x000079e 50ef MOVF 0xef,0x0,0x00007a0 6ee6 MOVWF 0xe6,0x00007a2 ecf2 CALL 0x9e4,0x00007a4 f0040007a6 52e5 MOVF 0xe5,0x1,0x00007a8 2adf INCF 0xdf,0x1,0x00007aa 0e01 MOVLW 0x10007ac e301 BNC 0x7b00007ae 2adb INCF 0xdb,0x1,0x00007b0 d7de BRA 0x76e0007b2 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c0007b4 6ee6 MOVWF 0xe6,0x00007b6 ecf2 CALL 0x9e4,0x00007b8 f0040007ba 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c0007bc 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canToSerial\Source\Main.c0007be 5ce1 SUBWF 0xe1,0x0,0x00007c0 e202 BC 0x7c60007c2 6ae1 CLRF 0xe1,0x00007c4 52e5 MOVF 0xe5,0x1,0x00007c6 6ee1 MOVWF 0xe1,0x00007c8 52e5 MOVF 0xe5,0x1,0x00007ca cfe7 MOVFF 0xfe7,0xfd90007cc ffd90007ce 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c/* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Function: uartParse F:\MCP\projects\CAN\canToSerial\Source\Main.c* F:\MCP\projects\CAN\canToSerial\Source\Main.c* Input: Received uart message F:\MCP\projects\CAN\canToSerial\Source\Main.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Main.c* Pre-conditions: uartInit and received byte. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canToSerial\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canToSerial\Source\Main.c*/ F:\MCP\projects\CAN\canToSerial\Source\Main.c#ifdef USE_UART F:\MCP\projects\CAN\canToSerial\Source\Main.c0007d0 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007d2 ffe60007d4 cfe1 MOVFF 0xfe1,0xfd90007d6 ffd90007d8 0e12 MOVLW 0x120007da 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cBYTE i; F:\MCP\projects\CAN\canToSerial\Source\Main.c0007dc 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.c0007de 6adb CLRF 0xdb,0x00007e0 0e02 MOVLW 0x20007e2 6adb CLRF 0xdb,0x0CAN_MESSAGE cm; F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic BOOL waitingMessage = FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic TICK timeout=0; F:\MCP\projects\CAN\canToSerial\Source\Main.cstatic BYTE count=0; F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0007e4 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007e6 056e DECF 0x6e,0x0,0x10007e8 e11a BNZ 0x81e0007ea ecc3 CALL 0xb86,0x00007ec f0050007ee 0100 MOVLB 0x00007f0 516f MOVF 0x6f,0x0,0x10007f2 5c18 SUBWF 0x18,0x0,0x00007f4 6e00 MOVWF 0x0,0x00007f6 5170 MOVF 0x70,0x0,0x10007f8 5819 SUBWFB 0x19,0x0,0x00007fa 6e01 MOVWF 0x1,0x00007fc 5171 MOVF 0x71,0x0,0x10007fe 581a SUBWFB 0x1a,0x0,0x0000800 6e02 MOVWF 0x2,0x0000802 5172 MOVF 0x72,0x0,0x1000804 581b SUBWFB 0x1b,0x0,0x0000806 6e03 MOVWF 0x3,0x0000808 80d8 BSF 0xd8,0x0,0x000080a 0e05 MOVLW 0x500080c 5400 SUBFWB 0x0,0x0,0x000080e 0e00 MOVLW 0x0000810 5401 SUBFWB 0x1,0x0,0x0000812 0e00 MOVLW 0x0000814 5402 SUBFWB 0x2,0x0,0x0000816 0e00 MOVLW 0x0000818 5403 SUBFWB 0x3,0x0,0x000081a e201 BC 0x81e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00081c 6b6e CLRF 0x6e,0x1 waitingMessage=FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00081e 056e DECF 0x6e,0x0,0x1 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canToSerial\Source\Main.c000820 e001 BZ 0x824000822 d0a5 BRA 0x96e{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000824 ecc3 CALL 0xb86,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000826 f005000828 c018 MOVFF 0x18,0x6f00082a f06f00082c c019 MOVFF 0x19,0x7000082e f070000830 c01a MOVFF 0x1a,0x71000832 f071000834 c01b MOVFF 0x1b,0x72000836 f072F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// UART END F:\MCP\projects\CAN\canToSerial\Source\Main.c000838 0e0f MOVLW 0xf if(count>=15) F:\MCP\projects\CAN\canToSerial\Source\Main.c00083a 0100 MOVLB 0x000083c 5d73 SUBWF 0x73,0x0,0x100083e e33b BNC 0x8b6{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000840 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canToSerial\Source\Main.c000842 50db MOVF 0xdb,0x0,0x0000844 6e00 MOVWF 0x0,0x0000846 6a01 CLRF 0x1,0x0000848 0efa MOVLW 0xfa00084a 1800 XORWF 0x0,0x0,0x000084c e101 BNZ 0x85000084e 5001 MOVF 0x1,0x0,0x0000850 e12f BNZ 0x8b0{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000852 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canToSerial\Source\Main.c//canParse(cm); F:\MCP\projects\CAN\canToSerial\Source\Main.c000854 0e03 MOVLW 0x3 while(!canSendMessage(cm,PRIO_HIGEST)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000856 6ee6 MOVWF 0xe6,0x0000858 50d9 MOVF 0xd9,0x0,0x000085a 0f03 ADDLW 0x300085c 6ee9 MOVWF 0xe9,0x000085e cfda MOVFF 0xfda,0xfea000860 ffea000862 cfee MOVFF 0xfee,0xfe6000864 ffe6000866 cfee MOVFF 0xfee,0xfe6000868 ffe600086a cfee MOVFF 0xfee,0xfe600086c ffe600086e cfee MOVFF 0xfee,0xfe6000870 ffe6000872 cfee MOVFF 0xfee,0xfe6000874 ffe6000876 cfee MOVFF 0xfee,0xfe6000878 ffe600087a cfee MOVFF 0xfee,0xfe600087c ffe600087e cfee MOVFF 0xfee,0xfe6000880 ffe6000882 cfee MOVFF 0xfee,0xfe6000884 ffe6000886 cfee MOVFF 0xfee,0xfe6000888 ffe600088a cfee MOVFF 0xfee,0xfe600088c ffe600088e cfee MOVFF 0xfee,0xfe6000890 ffe6000892 cfee MOVFF 0xfee,0xfe6000894 ffe6000896 cfee MOVFF 0xfee,0xfe6000898 ffe600089a cfee MOVFF 0xfee,0xfe600089c ffe600089e ecc6 CALL 0x38c,0x00008a0 f0010008a2 6e00 MOVWF 0x0,0x00008a4 0e10 MOVLW 0x100008a6 5ee1 SUBWF 0xe1,0x1,0x00008a8 5000 MOVF 0x0,0x0,0x00008aa 0900 IORLW 0x00008ac e101 BNZ 0x8b00008ae d7d2 BRA 0x854} F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b0 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b2 6b6e CLRF 0x6e,0x10008b4 d07e BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// data F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b6 0e07 MOVLW 0x7 if(count>=7) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b8 5d73 SUBWF 0x73,0x0,0x10008ba e313 BNC 0x8e2{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008bc 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-7]=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008be 0f0a ADDLW 0xa0008c0 6e00 MOVWF 0x0,0x00008c2 cfda MOVFF 0xfda,0x10008c4 f0010008c6 0e07 MOVLW 0x70008c8 5d73 SUBWF 0x73,0x0,0x10008ca 010f MOVLB 0xf0008cc 2400 ADDWF 0x0,0x0,0x00008ce 6ee9 MOVWF 0xe9,0x00008d0 0e00 MOVLW 0x00008d2 2001 ADDWFC 0x1,0x0,0x00008d4 6eea MOVWF 0xea,0x00008d6 0efe MOVLW 0xfe0008d8 cfdb MOVFF 0xfdb,0xfef0008da ffef0008dc 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008de 2b73 INCF 0x73,0x1,0x10008e0 d068 BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// data length F:\MCP\projects\CAN\canToSerial\Source\Main.c0008e2 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008e4 5d73 SUBWF 0x73,0x0,0x10008e6 e308 BNC 0x8f8{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008e8 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008ea 50db MOVF 0xdb,0x0,0x00008ec 6ee7 MOVWF 0xe7,0x00008ee 0e09 MOVLW 0x90008f0 cfe7 MOVFF 0xfe7,0xfdb0008f2 ffdb0008f4 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008f6 d05d BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// remote request F:\MCP\projects\CAN\canToSerial\Source\Main.c0008f8 0e05 MOVLW 0x5 if(count>=5) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008fa 5d73 SUBWF 0x73,0x0,0x10008fc e308 BNC 0x90e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008fe 0efe MOVLW 0xfe cm.remote_request=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000900 50db MOVF 0xdb,0x0,0x0000902 6ee7 MOVWF 0xe7,0x0000904 0e08 MOVLW 0x8000906 cfe7 MOVFF 0xfe7,0xfdb000908 ffdb00090a 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c00090c d052 BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// extended F:\MCP\projects\CAN\canToSerial\Source\Main.c00090e 0e04 MOVLW 0x4 if(count>=4) F:\MCP\projects\CAN\canToSerial\Source\Main.c000910 5d73 SUBWF 0x73,0x0,0x1000912 e308 BNC 0x924{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000914 0efe MOVLW 0xfe cm.extended=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000916 50db MOVF 0xdb,0x0,0x0000918 6ee7 MOVWF 0xe7,0x000091a 0e07 MOVLW 0x700091c cfe7 MOVFF 0xfe7,0xfdb00091e ffdb000920 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000922 d047 BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// ident F:\MCP\projects\CAN\canToSerial\Source\Main.c000924 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canToSerial\Source\Main.c000926 5d73 SUBWF 0x73,0x0,0x1000928 e322 BNC 0x96e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00092a 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00092c cfdb MOVFF 0xfdb,0x000092e f000000930 6a01 CLRF 0x1,0x0000932 6a02 CLRF 0x2,0x0000934 6a03 CLRF 0x3,0x0000936 0e08 MOVLW 0x8000938 0373 MULWF 0x73,0x100093a 50f3 MOVF 0xf3,0x0,0x000093c 0b1f ANDLW 0x1f00093e e007 BZ 0x94e000940 90d8 BCF 0xd8,0x0,0x0000942 3600 RLCF 0x0,0x1,0x0000944 3601 RLCF 0x1,0x1,0x0000946 3602 RLCF 0x2,0x1,0x0000948 3603 RLCF 0x3,0x1,0x000094a 06e8 DECF 0xe8,0x1,0x000094c e1f9 BNZ 0x94000094e 50d9 MOVF 0xd9,0x0,0x0000950 0f03 ADDLW 0x3000952 6ee9 MOVWF 0xe9,0x0000954 cfda MOVFF 0xfda,0xfea000956 ffea000958 5000 MOVF 0x0,0x0,0x000095a 26ee ADDWF 0xee,0x1,0x000095c 5001 MOVF 0x1,0x0,0x000095e 22ee ADDWFC 0xee,0x1,0x0000960 5002 MOVF 0x2,0x0,0x0000962 22ee ADDWFC 0xee,0x1,0x0000964 5003 MOVF 0x3,0x0,0x0000966 22ee ADDWFC 0xee,0x1,0x0000968 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c00096a 2b73 INCF 0x73,0x1,0x100096c d022 BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00096e 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canToSerial\Source\Main.c000970 50db MOVF 0xdb,0x0,0x0000972 6e00 MOVWF 0x0,0x0000974 6a01 CLRF 0x1,0x0000976 0efd MOVLW 0xfd000978 1800 XORWF 0x0,0x0,0x000097a e101 BNZ 0x97e00097c 5001 MOVF 0x1,0x0,0x000097e e119 BNZ 0x9b2000980 516e MOVF 0x6e,0x0,0x1000982 e117 BNZ 0x9b2{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000984 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canToSerial\Source\Main.c000986 6f6e MOVWF 0x6e,0x1000988 ecc3 CALL 0xb86,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00098a f00500098c c018 MOVFF 0x18,0x6f00098e f06f000990 c019 MOVFF 0x19,0x70000992 f070000994 c01a MOVFF 0x1a,0x71000996 f071000998 c01b MOVFF 0x1b,0x7200099a f07200099c 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c00099e 6b73 CLRF 0x73,0x10009a0 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c0009a2 6adb CLRF 0xdb,0x00009a4 0e04 MOVLW 0x40009a6 6adb CLRF 0xdb,0x00009a8 0e05 MOVLW 0x50009aa 6adb CLRF 0xdb,0x00009ac 0e06 MOVLW 0x60009ae 6adb CLRF 0xdb,0x00009b0 d000 BRA 0x9b2 return; F:\MCP\projects\CAN\canToSerial\Source\Main.c} F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0009b2 0e12 MOVLW 0x12 } F:\MCP\projects\CAN\canToSerial\Source\Main.c0009b4 5ce1 SUBWF 0xe1,0x0,0x00009b6 e202 BC 0x9bc0009b8 6ae1 CLRF 0xe1,0x00009ba 52e5 MOVF 0xe5,0x1,0x00009bc 6ee1 MOVWF 0xe1,0x00009be 52e5 MOVF 0xe5,0x1,0x00009c0 cfe7 MOVFF 0xfe7,0xfd90009c2 ffd90009c4 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canToSerial\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Ticker service F:\MCP\projects\CAN\canToSerial\Source\Tick.c* F:\MCP\projects\CAN\canToSerial\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* FileName: Tick.c F:\MCP\projects\CAN\canToSerial\Source\Tick.c* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Author Date Comment F:\MCP\projects\CAN\canToSerial\Source\Tick.c*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Johan Böhlin 21-10-06 Original (Rev 1.0) F:\MCP\projects\CAN\canToSerial\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canToSerial\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canToSerial\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canToSerial\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canToSerial\Source\Tick.c#endif F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canToSerial\Source\Tick.c#else F:\MCP\projects\CAN\canToSerial\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canToSerial\Source\Tick.c#endif F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c/* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canToSerial\Source\Tick.c* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c*/ F:\MCP\projects\CAN\canToSerial\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canToSerial\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canToSerial\Source\Tick.c{ F:\MCP\projects\CAN\canToSerial\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b72 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b74 6ed6 MOVWF 0xd6,0x0000b76 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b78 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b7a 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b7c 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b7e 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c000b80 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b82 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b84 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c/* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canToSerial\Source\Tick.c* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c*/ F:\MCP\projects\CAN\canToSerial\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canToSerial\Source\Tick.c{ F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b86 c074 MOVFF 0x74,0x18 return TickCount; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b88 f018000b8a c075 MOVFF 0x75,0x19000b8c f019000b8e c076 MOVFF 0x76,0x1a000b90 f01a000b92 c077 MOVFF 0x77,0x1b000b94 f01b000b96 d000 BRA 0xb98000b98 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c/* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canToSerial\Source\Tick.c* F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Input: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Output: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canToSerial\Source\Tick.c*/ F:\MCP\projects\CAN\canToSerial\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canToSerial\Source\Tick.c{ F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b9a a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b9c d00b BRA 0xbb4{ F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b9e 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000ba0 6ed7 MOVWF 0xd7,0x0000ba2 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000ba4 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c000ba6 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000ba8 2b74 INCF 0x74,0x1,0x1000baa 0e00 MOVLW 0x0000bac 2375 ADDWFC 0x75,0x1,0x1000bae 2376 ADDWFC 0x76,0x1,0x1000bb0 2377 ADDWFC 0x77,0x1,0x1F:\MCP\projects\CAN\canToSerial\Source\Tick.c000bb2 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canToSerial\Source\Tick.c} F:\MCP\projects\CAN\canToSerial\Source\Tick.c000bb4 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Tick.c