Rev 73 | Rev 260 | 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: Tue Nov 14 21:20:45 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: $HeadURL$ F:\MCP\projects\CAN\canToSerial\Source\uart.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canToSerial\Source\uart.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canToSerial\Source\uart.c* Revision: $Revision$ 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.c000964 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c000966 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c000968 0e20 MOVLW 0x20 TXSTA=0b00100000; F:\MCP\projects\CAN\canToSerial\Source\uart.c00096a 6eac MOVWF 0xac,0x0#ifdef HIGH_BRG F:\MCP\projects\CAN\canToSerial\Source\uart.c00096c 84ac BSF 0xac,0x2,0x0 TXSTAbits.BRGH=1; // High BRG speed F:\MCP\projects\CAN\canToSerial\Source\uart.c00096e 86b8 BSF 0xb8,0x3,0x0 BAUDCONbits.BRG16=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c000970 6ab0 CLRF 0xb0,0x0 SPBRGH = SPBRGH_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c000972 0e55 MOVLW 0x55 SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c000974 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.c000976 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canToSerial\Source\uart.c000978 6eab MOVWF 0xab,0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c// USART RX interrupt F:\MCP\projects\CAN\canToSerial\Source\uart.c00097a 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c00097c 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.c00097e 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c000980 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.c000982 cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\uart.c000984 ffe6000986 cfe1 MOVFF 0xfe1,0xfd9000988 ffd9{ F:\MCP\projects\CAN\canToSerial\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canToSerial\Source\uart.c00098a 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canToSerial\Source\uart.c00098c 50db MOVF 0xdb,0x0,0x000098e 6ead MOVWF 0xad,0x0000990 d84b RCALL 0xa28 while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000992 0900 IORLW 0x0000994 e001 BZ 0x998000996 d7fc BRA 0x990000998 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c00099a cfe7 MOVFF 0xfe7,0xfd900099c ffd900099e 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.c0009a0 cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canToSerial\Source\uart.c0009a2 ffe60009a4 cfe1 MOVFF 0xfe1,0xfd90009a6 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.c0009a8 d83f RCALL 0xa28 while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009aa 0900 IORLW 0x00009ac e001 BZ 0x9b00009ae d7fc BRA 0x9a80009b0 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009b2 cfdb MOVFF 0xfdb,0xfe90009b4 ffe90009b6 0efe MOVLW 0xfe0009b8 cfdb MOVFF 0xfdb,0xfea0009ba ffea0009bc 50ef MOVF 0xef,0x0,0x00009be 6ee6 MOVWF 0xe6,0x00009c0 dfe0 RCALL 0x9820009c2 52e5 MOVF 0xe5,0x1,0x00009c4 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009c6 cfdb MOVFF 0xfdb,0xfe90009c8 ffe90009ca 2adb INCF 0xdb,0x1,0x00009cc 0efe MOVLW 0xfe0009ce cfdb MOVFF 0xfdb,0xfea0009d0 ffea0009d2 e301 BNC 0x9d60009d4 2adb INCF 0xdb,0x1,0x00009d6 50ef MOVF 0xef,0x0,0x00009d8 e1e7 BNZ 0x9a80009da 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c0009dc cfe7 MOVFF 0xfe7,0xfd90009de ffd90009e0 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.c0009e2 cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canToSerial\Source\uart.c0009e4 ffe60009e6 cfe1 MOVFF 0xfe1,0xfd90009e8 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.c0009ea d81e RCALL 0xa28 while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009ec 0900 IORLW 0x00009ee e001 BZ 0x9f20009f0 d7fc BRA 0x9ea0009f2 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009f4 cfdb MOVFF 0xfdb,0xff60009f6 fff60009f8 0efe MOVLW 0xfe0009fa cfdb MOVFF 0xfdb,0xff70009fc fff70009fe 0008 TBLRD000a00 50f5 MOVF 0xf5,0x0,0x0000a02 6ee6 MOVWF 0xe6,0x0000a04 dfbe RCALL 0x982000a06 52e5 MOVF 0xe5,0x1,0x0000a08 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a0a cfdb MOVFF 0xfdb,0xff6000a0c fff6000a0e 2adb INCF 0xdb,0x1,0x0000a10 0efe MOVLW 0xfe000a12 cfdb MOVFF 0xfdb,0xff7000a14 fff7000a16 e301 BNC 0xa1a000a18 2adb INCF 0xdb,0x1,0x0000a1a 0008 TBLRD000a1c 50f5 MOVF 0xf5,0x0,0x0000a1e e1e5 BNZ 0x9ea000a20 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c000a22 cfe7 MOVFF 0xfe7,0xfd9000a24 ffd9000a26 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.c000a28 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a2a 0b02 ANDLW 0x2000a2c 0a02 XORLW 0x2000a2e e001 BZ 0xa32000a30 0e01 MOVLW 0x1000a32 d000 BRA 0xa34000a34 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.c000a36 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a38 d000 BRA 0xa3a000a3a 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.c000a3c 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canToSerial\Source\uart.c000a3e 0b20 ANDLW 0x20000a40 e00d BZ 0xa5c000a42 509d MOVF 0x9d,0x0,0x0000a44 0b20 ANDLW 0x20000a46 e00a BZ 0xa5c{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a48 a2ab BTFSS 0xab,0x1,0x0 if (RCSTAbits.OERR) { RCSTAbits.CREN=0; RCSTAbits.CREN=1; } F:\MCP\projects\CAN\canToSerial\Source\uart.c000a4a d002 BRA 0xa50000a4c 98ab BCF 0xab,0x4,0x0000a4e 88ab BSF 0xab,0x4,0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c000a50 dff2 RCALL 0xa36 uartParse(uartGet()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a52 6ee6 MOVWF 0xe6,0x0000a54 ecb7 CALL 0x76e,0x0000a56 f003000a58 52e5 MOVF 0xe5,0x1,0x0000a5a 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c} F:\MCP\projects\CAN\canToSerial\Source\uart.c000a5c 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.c000a5e a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\canToSerial\Source\uart.c000a60 d002 BRA 0xa66{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a62 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a64 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\canToSerial\Source\uart.c} F:\MCP\projects\CAN\canToSerial\Source\uart.c000a66 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a68 0b20 ANDLW 0x20000a6a e001 BZ 0xa6e000a6c 0e01 MOVLW 0x1000a6e d000 BRA 0xa70000a70 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: $HeadURL$ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Revision: $Revision$ 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 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00007a 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; 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.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 e016 BZ 0xd8{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ac 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ae 146f ANDWF 0x6f,0x0,0x00000b0 0910 IORLW 0x100000b2 6e00 MOVWF 0x0,0x00000b4 0e00 MOVLW 0x00000b6 1477 ANDWF 0x77,0x0,0x00000b8 1000 IORWF 0x0,0x0,0x00000ba 6e77 MOVWF 0x77,0x00000bc be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000be d80d RCALL 0xdaF:\MCP\projects\CAN\canToSerial\Source\CAN.c0000c0 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000c2 d002 BRA 0xc80000c4 92a4 BCF 0xa4,0x1,0x00000c6 d008 BRA 0xd80000c8 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ca d002 BRA 0xd00000cc 92a4 BCF 0xa4,0x1,0x00000ce d004 BRA 0xd80000d0 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000d2 d002 BRA 0xd80000d4 90a4 BCF 0xa4,0x0,0x00000d6 d000 BRA 0xd8} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000d8 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.c0000da cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000dc ffe60000de cfe1 MOVFF 0xfe1,0xfd90000e0 ffd90000e2 0e0f MOVLW 0xf0000e4 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.c0000e6 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000e8 0b08 ANDLW 0x80000ea e102 BNZ 0xf00000ec 0e00 MOVLW 0x00000ee d001 BRA 0xf20000f0 0e01 MOVLW 0x10000f2 6ee7 MOVWF 0xe7,0x00000f4 0e04 MOVLW 0x40000f6 cfe7 MOVFF 0xfe7,0xfdb0000f8 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Clear F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000fa 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000fc 6ade CLRF 0xde,0x00000fe 6ade CLRF 0xde,0x0000100 6add CLRF 0xdd,0x0000102 52dd MOVF 0xdd,0x1,0x0000104 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000106 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c000108 e16f BNZ 0x1e8{ 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.c00010a 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.c00010c 6e00 MOVWF 0x0,0x000010e 6a01 CLRF 0x1,0x0000110 6a02 CLRF 0x2,0x0000112 6a03 CLRF 0x3,0x0000114 0e15 MOVLW 0x15000116 0b1f ANDLW 0x1f000118 e007 BZ 0x12800011a 90d8 BCF 0xd8,0x0,0x000011c 3600 RLCF 0x0,0x1,0x000011e 3601 RLCF 0x1,0x1,0x0000120 3602 RLCF 0x2,0x1,0x0000122 3603 RLCF 0x3,0x1,0x0000124 06e8 DECF 0xe8,0x1,0x0000126 e1f9 BNZ 0x11a000128 0ee0 MOVLW 0xe000012a 1462 ANDWF 0x62,0x0,0x000012c 6e04 MOVWF 0x4,0x000012e 6a05 CLRF 0x5,0x0000130 6a06 CLRF 0x6,0x0000132 6a07 CLRF 0x7,0x0000134 0e0d MOVLW 0xd000136 0b1f ANDLW 0x1f000138 e007 BZ 0x14800013a 90d8 BCF 0xd8,0x0,0x000013c 3604 RLCF 0x4,0x1,0x000013e 3605 RLCF 0x5,0x1,0x0000140 3606 RLCF 0x6,0x1,0x0000142 3607 RLCF 0x7,0x1,0x0000144 06e8 DECF 0xe8,0x1,0x0000146 e1f9 BNZ 0x13a000148 5004 MOVF 0x4,0x0,0x000014a 2600 ADDWF 0x0,0x1,0x000014c 5005 MOVF 0x5,0x0,0x000014e 2201 ADDWFC 0x1,0x1,0x0000150 5006 MOVF 0x6,0x0,0x0000152 2202 ADDWFC 0x2,0x1,0x0000154 5007 MOVF 0x7,0x0,0x0000156 2203 ADDWFC 0x3,0x1,0x0000158 0e03 MOVLW 0x300015a 1462 ANDWF 0x62,0x0,0x000015c 6e08 MOVWF 0x8,0x000015e 6a09 CLRF 0x9,0x0000160 6a0a CLRF 0xa,0x0000162 6a0b CLRF 0xb,0x0000164 0e10 MOVLW 0x10000166 0b1f ANDLW 0x1f000168 e007 BZ 0x17800016a 90d8 BCF 0xd8,0x0,0x000016c 3608 RLCF 0x8,0x1,0x000016e 3609 RLCF 0x9,0x1,0x0000170 360a RLCF 0xa,0x1,0x0000172 360b RLCF 0xb,0x1,0x0000174 06e8 DECF 0xe8,0x1,0x0000176 e1f9 BNZ 0x16a000178 5008 MOVF 0x8,0x0,0x000017a 2600 ADDWF 0x0,0x1,0x000017c 5009 MOVF 0x9,0x0,0x000017e 2201 ADDWFC 0x1,0x1,0x0000180 500a MOVF 0xa,0x0,0x0000182 2202 ADDWFC 0x2,0x1,0x0000184 500b MOVF 0xb,0x0,0x0000186 2203 ADDWFC 0x3,0x1,0x0000188 5063 MOVF 0x63,0x0,0x000018a 6e0c MOVWF 0xc,0x000018c 6a0d CLRF 0xd,0x000018e 6a0e CLRF 0xe,0x0000190 6a0f CLRF 0xf,0x0000192 0e08 MOVLW 0x8000194 0b1f ANDLW 0x1f000196 e007 BZ 0x1a6000198 90d8 BCF 0xd8,0x0,0x000019a 360c RLCF 0xc,0x1,0x000019c 360d RLCF 0xd,0x1,0x000019e 360e RLCF 0xe,0x1,0x00001a0 360f RLCF 0xf,0x1,0x00001a2 06e8 DECF 0xe8,0x1,0x00001a4 e1f9 BNZ 0x1980001a6 500c MOVF 0xc,0x0,0x00001a8 2600 ADDWF 0x0,0x1,0x00001aa 500d MOVF 0xd,0x0,0x00001ac 2201 ADDWFC 0x1,0x1,0x00001ae 500e MOVF 0xe,0x0,0x00001b0 2202 ADDWFC 0x2,0x1,0x00001b2 500f MOVF 0xf,0x0,0x00001b4 2203 ADDWFC 0x3,0x1,0x00001b6 5064 MOVF 0x64,0x0,0x00001b8 6e10 MOVWF 0x10,0x00001ba 6a11 CLRF 0x11,0x00001bc 6a12 CLRF 0x12,0x00001be 6a13 CLRF 0x13,0x00001c0 5010 MOVF 0x10,0x0,0x00001c2 2600 ADDWF 0x0,0x1,0x00001c4 5011 MOVF 0x11,0x0,0x00001c6 2201 ADDWFC 0x1,0x1,0x00001c8 5012 MOVF 0x12,0x0,0x00001ca 2202 ADDWFC 0x2,0x1,0x00001cc 5013 MOVF 0x13,0x0,0x00001ce 2203 ADDWFC 0x3,0x1,0x00001d0 c000 MOVFF 0x0,0xfdf0001d2 ffdf0001d4 0e01 MOVLW 0x10001d6 c001 MOVFF 0x1,0xfdb0001d8 ffdb0001da 0e02 MOVLW 0x20001dc c002 MOVFF 0x2,0xfdb0001de ffdb0001e0 0e03 MOVLW 0x30001e2 c003 MOVFF 0x3,0xfdb0001e4 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0001e6 d02f BRA 0x246 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.c0001e8 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0001ea 6e00 MOVWF 0x0,0x00001ec 6a01 CLRF 0x1,0x00001ee 6a02 CLRF 0x2,0x00001f0 6a03 CLRF 0x3,0x00001f2 0e03 MOVLW 0x30001f4 0b1f ANDLW 0x1f0001f6 e007 BZ 0x2060001f8 90d8 BCF 0xd8,0x0,0x00001fa 3600 RLCF 0x0,0x1,0x00001fc 3601 RLCF 0x1,0x1,0x00001fe 3602 RLCF 0x2,0x1,0x0000200 3603 RLCF 0x3,0x1,0x0000202 06e8 DECF 0xe8,0x1,0x0000204 e1f9 BNZ 0x1f8000206 5062 MOVF 0x62,0x0,0x0000208 6e04 MOVWF 0x4,0x000020a 6a05 CLRF 0x5,0x000020c 6a06 CLRF 0x6,0x000020e 6a07 CLRF 0x7,0x0000210 0e05 MOVLW 0x5000212 90d8 BCF 0xd8,0x0,0x0000214 3207 RRCF 0x7,0x1,0x0000216 3206 RRCF 0x6,0x1,0x0000218 3205 RRCF 0x5,0x1,0x000021a 3204 RRCF 0x4,0x1,0x000021c 06e8 DECF 0xe8,0x1,0x000021e e1f9 BNZ 0x212000220 5004 MOVF 0x4,0x0,0x0000222 2600 ADDWF 0x0,0x1,0x0000224 5005 MOVF 0x5,0x0,0x0000226 2201 ADDWFC 0x1,0x1,0x0000228 5006 MOVF 0x6,0x0,0x000022a 2202 ADDWFC 0x2,0x1,0x000022c 5007 MOVF 0x7,0x0,0x000022e 2203 ADDWFC 0x3,0x1,0x0000230 c000 MOVFF 0x0,0xfdf000232 ffdf000234 0e01 MOVLW 0x1000236 c001 MOVFF 0x1,0xfdb000238 ffdb00023a 0e02 MOVLW 0x200023c c002 MOVFF 0x2,0xfdb00023e ffdb000240 0e03 MOVLW 0x3000242 c003 MOVFF 0x3,0xfdb000244 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.c000246 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.c000248 0b01 ANDLW 0x100024a 6e02 MOVWF 0x2,0x000024c 5065 MOVF 0x65,0x0,0x000024e 0b02 ANDLW 0x2000250 e001 BZ 0x254000252 0e01 MOVLW 0x1000254 24e8 ADDWF 0xe8,0x0,0x0000256 6e01 MOVWF 0x1,0x0000258 5065 MOVF 0x65,0x0,0x000025a 0b04 ANDLW 0x400025c e001 BZ 0x26000025e 0e01 MOVLW 0x1000260 0d04 MULLW 0x4000262 cff3 MOVFF 0xff3,0x0000264 f000000266 5065 MOVF 0x65,0x0,0x0000268 0b08 ANDLW 0x800026a e001 BZ 0x26e00026c 0e01 MOVLW 0x100026e 0d08 MULLW 0x8000270 50f3 MOVF 0xf3,0x0,0x0000272 2400 ADDWF 0x0,0x0,0x0000274 2401 ADDWF 0x1,0x0,0x0000276 2402 ADDWF 0x2,0x0,0x0000278 6ee7 MOVWF 0xe7,0x000027a 0e06 MOVLW 0x600027c cfe7 MOVFF 0xfe7,0xfdb00027e ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Remote request F:\MCP\projects\CAN\canToSerial\Source\CAN.c000280 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000282 0b40 ANDLW 0x40000284 e102 BNZ 0x28a000286 0e00 MOVLW 0x0000288 d001 BRA 0x28c00028a 0e01 MOVLW 0x100028c 6ee7 MOVWF 0xe7,0x000028e 0e05 MOVLW 0x5000290 cfe7 MOVFF 0xfe7,0xfdb000292 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canToSerial\Source\CAN.c000294 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000296 cf66 MOVFF 0xf66,0xfdb000298 ffdb00029a 0e08 MOVLW 0x800029c cf67 MOVFF 0xf67,0xfdb00029e ffdb0002a0 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002a2 cf68 MOVFF 0xf68,0xfdb0002a4 ffdb0002a6 0e0a MOVLW 0xa0002a8 cf69 MOVFF 0xf69,0xfdb0002aa ffdb0002ac 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002ae cf6a MOVFF 0xf6a,0xfdb0002b0 ffdb0002b2 0e0c MOVLW 0xc0002b4 cf6b MOVFF 0xf6b,0xfdb0002b6 ffdb0002b8 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002ba cf6c MOVFF 0xf6c,0xfdb0002bc ffdb0002be 0e0e MOVLW 0xe0002c0 cf6d MOVFF 0xf6d,0xfdb0002c2 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002c4 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.c0002c6 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002c8 ffe90002ca cfda MOVFF 0xfda,0xfea0002cc ffea0002ce cfee MOVFF 0xfee,0xfe60002d0 ffe60002d2 cfee MOVFF 0xfee,0xfe60002d4 ffe60002d6 cfee MOVFF 0xfee,0xfe60002d8 ffe60002da cfee MOVFF 0xfee,0xfe60002dc ffe60002de cfee MOVFF 0xfee,0xfe60002e0 ffe60002e2 cfee MOVFF 0xfee,0xfe60002e4 ffe60002e6 cfee MOVFF 0xfee,0xfe60002e8 ffe60002ea cfee MOVFF 0xfee,0xfe60002ec ffe60002ee cfee MOVFF 0xfee,0xfe60002f0 ffe60002f2 cfee MOVFF 0xfee,0xfe60002f4 ffe60002f6 cfee MOVFF 0xfee,0xfe60002f8 ffe60002fa cfee MOVFF 0xfee,0xfe60002fc ffe60002fe cfee MOVFF 0xfee,0xfe6000300 ffe6000302 cfee MOVFF 0xfee,0xfe6000304 ffe6000306 cfee MOVFF 0xfee,0xfe6000308 ffe600030a ec14 CALL 0x628,0x000030c f00300030e 6e00 MOVWF 0x0,0x0000310 0e0f MOVLW 0xf000312 5ee1 SUBWF 0xe1,0x1,0x0000314 5000 MOVF 0x0,0x0,0x0000316 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000318 5ce1 SUBWF 0xe1,0x0,0x000031a e202 BC 0x32000031c 6ae1 CLRF 0xe1,0x000031e 52e5 MOVF 0xe5,0x1,0x0000320 6ee1 MOVWF 0xe1,0x0000322 52e5 MOVF 0xe5,0x1,0x0000324 cfe7 MOVFF 0xfe7,0xfd9000326 ffd9000328 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.c00032a cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canToSerial\Source\CAN.c00032c ffe600032e cfe1 MOVFF 0xfe1,0xfd9000330 ffd9{ F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000332 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000334 b740 BTFSC 0x40,0x3,0x1000336 d004 BRA 0x340000338 0e00 MOVLW 0x000033a 1477 ANDWF 0x77,0x0,0x000033c 0903 IORLW 0x300033e 6e77 MOVWF 0x77,0x0000340 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000342 b730 BTFSC 0x30,0x3,0x1000344 d004 BRA 0x34e000346 0e00 MOVLW 0x0000348 1477 ANDWF 0x77,0x0,0x000034a 0904 IORLW 0x400034c 6e77 MOVWF 0x77,0x000034e 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000350 b720 BTFSC 0x20,0x3,0x1000352 d005 BRA 0x35e000354 0e00 MOVLW 0x0000356 1477 ANDWF 0x77,0x0,0x0000358 0905 IORLW 0x500035a 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canToSerial\Source\CAN.c00035c d002 BRA 0x362 else { return FALSE;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c00035e 0e00 MOVLW 0x0000360 d0e4 BRA 0x52aF:\MCP\projects\CAN\canToSerial\Source\CAN.c000362 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000364 cfdb MOVFF 0xfdb,0x0000366 f000000368 3400 RLCF 0x0,0x0,0x000036a e20e BC 0x38800036c 0eef MOVLW 0xef00036e cfdb MOVFF 0xfdb,0x1000370 f001000372 0e03 MOVLW 0x3000374 6ee7 MOVWF 0xe7,0x0000376 1801 XORWF 0x1,0x0,0x0000378 aee8 BTFSS 0xe8,0x7,0x000037a d002 BRA 0x38000037c 3401 RLCF 0x1,0x0,0x000037e d003 BRA 0x386000380 50e7 MOVF 0xe7,0x0,0x0000382 80d8 BSF 0xd8,0x0,0x0000384 5401 SUBFWB 0x1,0x0,0x0000386 e202 BC 0x38c000388 0eef MOVLW 0xef00038a 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00038c 0ef4 MOVLW 0xf4 if (cm.extended==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c00038e 04db DECF 0xdb,0x0,0x0000390 e15f BNZ 0x450{ 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.c000392 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000394 cfdb MOVFF 0xfdb,0x0000396 f000000398 0ef1 MOVLW 0xf100039a cfdb MOVFF 0xfdb,0x100039c f00100039e 0ef2 MOVLW 0xf20003a0 cfdb MOVFF 0xfdb,0x20003a2 f0020003a4 0ef3 MOVLW 0xf30003a6 cfdb MOVFF 0xfdb,0x30003a8 f0030003aa 0e15 MOVLW 0x150003ac 90d8 BCF 0xd8,0x0,0x00003ae 3203 RRCF 0x3,0x1,0x00003b0 3202 RRCF 0x2,0x1,0x00003b2 3201 RRCF 0x1,0x1,0x00003b4 3200 RRCF 0x0,0x1,0x00003b6 06e8 DECF 0xe8,0x1,0x00003b8 e1f9 BNZ 0x3ac0003ba 5000 MOVF 0x0,0x0,0x00003bc 6e61 MOVWF 0x61,0x00003be 0ef0 MOVLW 0xf0 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003c0 cfdb MOVFF 0xfdb,0x50003c2 f0050003c4 0ef1 MOVLW 0xf10003c6 cfdb MOVFF 0xfdb,0x60003c8 f0060003ca 0ef2 MOVLW 0xf20003cc cfdb MOVFF 0xfdb,0x70003ce f0070003d0 0ef3 MOVLW 0xf30003d2 cfdb MOVFF 0xfdb,0x80003d4 f0080003d6 0e0d MOVLW 0xd0003d8 90d8 BCF 0xd8,0x0,0x00003da 3208 RRCF 0x8,0x1,0x00003dc 3207 RRCF 0x7,0x1,0x00003de 3206 RRCF 0x6,0x1,0x00003e0 3205 RRCF 0x5,0x1,0x00003e2 06e8 DECF 0xe8,0x1,0x00003e4 e1f9 BNZ 0x3d80003e6 0ee0 MOVLW 0xe00003e8 1405 ANDWF 0x5,0x0,0x00003ea 6e04 MOVWF 0x4,0x00003ec 0ef0 MOVLW 0xf00003ee cfdb MOVFF 0xfdb,0x00003f0 f0000003f2 0ef1 MOVLW 0xf10003f4 cfdb MOVFF 0xfdb,0x10003f6 f0010003f8 0ef2 MOVLW 0xf20003fa cfdb MOVFF 0xfdb,0x20003fc f0020003fe 0ef3 MOVLW 0xf3000400 cfdb MOVFF 0xfdb,0x3000402 f003000404 0e10 MOVLW 0x10000406 90d8 BCF 0xd8,0x0,0x0000408 3203 RRCF 0x3,0x1,0x000040a 3202 RRCF 0x2,0x1,0x000040c 3201 RRCF 0x1,0x1,0x000040e 3200 RRCF 0x0,0x1,0x0000410 06e8 DECF 0xe8,0x1,0x0000412 e1f9 BNZ 0x406000414 0e03 MOVLW 0x3000416 1400 ANDWF 0x0,0x0,0x0000418 2404 ADDWF 0x4,0x0,0x000041a 6e62 MOVWF 0x62,0x000041c 0ef0 MOVLW 0xf0 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00041e cfdb MOVFF 0xfdb,0x0000420 f000000422 0ef1 MOVLW 0xf1000424 cfdb MOVFF 0xfdb,0x1000426 f001000428 0ef2 MOVLW 0xf200042a cfdb MOVFF 0xfdb,0x200042c f00200042e 0ef3 MOVLW 0xf3000430 cfdb MOVFF 0xfdb,0x3000432 f003000434 0e08 MOVLW 0x8000436 90d8 BCF 0xd8,0x0,0x0000438 3203 RRCF 0x3,0x1,0x000043a 3202 RRCF 0x2,0x1,0x000043c 3201 RRCF 0x1,0x1,0x000043e 3200 RRCF 0x0,0x1,0x0000440 06e8 DECF 0xe8,0x1,0x0000442 e1f9 BNZ 0x436000444 5000 MOVF 0x0,0x0,0x0000446 6e63 MOVWF 0x63,0x0000448 0ef0 MOVLW 0xf0 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00044a 50db MOVF 0xdb,0x0,0x000044c 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c00044e d02f BRA 0x4ae 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.c000450 0ef0 MOVLW 0xf0 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000452 cfdb MOVFF 0xfdb,0x0000454 f000000456 0ef1 MOVLW 0xf1000458 cfdb MOVFF 0xfdb,0x100045a f00100045c 0ef2 MOVLW 0xf200045e cfdb MOVFF 0xfdb,0x2000460 f002000462 0ef3 MOVLW 0xf3000464 cfdb MOVFF 0xfdb,0x3000466 f003000468 0e03 MOVLW 0x300046a 90d8 BCF 0xd8,0x0,0x000046c 3203 RRCF 0x3,0x1,0x000046e 3202 RRCF 0x2,0x1,0x0000470 3201 RRCF 0x1,0x1,0x0000472 3200 RRCF 0x0,0x1,0x0000474 06e8 DECF 0xe8,0x1,0x0000476 e1f9 BNZ 0x46a000478 5000 MOVF 0x0,0x0,0x000047a 6e61 MOVWF 0x61,0x000047c 0ef0 MOVLW 0xf0 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00047e cfdb MOVFF 0xfdb,0x0000480 f000000482 0ef1 MOVLW 0xf1000484 cfdb MOVFF 0xfdb,0x1000486 f001000488 0ef2 MOVLW 0xf200048a cfdb MOVFF 0xfdb,0x200048c f00200048e 0ef3 MOVLW 0xf3000490 cfdb MOVFF 0xfdb,0x3000492 f003000494 0e05 MOVLW 0x5000496 0b1f ANDLW 0x1f000498 e007 BZ 0x4a800049a 90d8 BCF 0xd8,0x0,0x000049c 3600 RLCF 0x0,0x1,0x000049e 3601 RLCF 0x1,0x1,0x00004a0 3602 RLCF 0x2,0x1,0x00004a2 3603 RLCF 0x3,0x1,0x00004a4 06e8 DECF 0xe8,0x1,0x00004a6 e1f9 BNZ 0x49a0004a8 0ee0 MOVLW 0xe00004aa 1400 ANDWF 0x0,0x0,0x00004ac 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.c0004ae 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b0 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b2 50db MOVF 0xdb,0x0,0x00004b4 0808 SUBLW 0x80004b6 e203 BC 0x4be0004b8 0e08 MOVLW 0x80004ba 6e65 MOVWF 0x65,0x00004bc d003 BRA 0x4c40004be 0ef6 MOVLW 0xf60004c0 50db MOVF 0xdb,0x0,0x00004c2 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Remote request F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004c4 0ef5 MOVLW 0xf5 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004c6 04db DECF 0xdb,0x0,0x00004c8 e102 BNZ 0x4ce{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c_asm F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004ca 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.c0004cc d001 BRA 0x4d0 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.c0004ce 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.c0004d0 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004d2 50db MOVF 0xdb,0x0,0x00004d4 6e66 MOVWF 0x66,0x00004d6 0ef8 MOVLW 0xf80004d8 50db MOVF 0xdb,0x0,0x00004da 6e67 MOVWF 0x67,0x00004dc 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004de 50db MOVF 0xdb,0x0,0x00004e0 6e68 MOVWF 0x68,0x00004e2 0efa MOVLW 0xfa0004e4 50db MOVF 0xdb,0x0,0x00004e6 6e69 MOVWF 0x69,0x00004e8 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004ea 50db MOVF 0xdb,0x0,0x00004ec 6e6a MOVWF 0x6a,0x00004ee 0efc MOVLW 0xfc0004f0 50db MOVF 0xdb,0x0,0x00004f2 6e6b MOVWF 0x6b,0x00004f4 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004f6 50db MOVF 0xdb,0x0,0x00004f8 6e6c MOVWF 0x6c,0x00004fa 0efe MOVLW 0xfe0004fc 50db MOVF 0xdb,0x0,0x00004fe 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canToSerial\Source\CAN.c000500 0ef4 MOVLW 0xf4 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000502 04db DECF 0xdb,0x0,0x0000504 e102 BNZ 0x50a000506 0e01 MOVLW 0x1000508 d001 BRA 0x50c00050a 0e00 MOVLW 0x000050c b0e8 BTFSC 0xe8,0x0,0x000050e 8662 BSF 0x62,0x3,0x0000510 a0e8 BTFSS 0xe8,0x0,0x0000512 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Priority F:\MCP\projects\CAN\canToSerial\Source\CAN.c000514 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000516 cfdb MOVFF 0xfdb,0xfe6000518 ffe600051a 0efc MOVLW 0xfc00051c 1460 ANDWF 0x60,0x0,0x000051e 52e5 MOVF 0xe5,0x1,0x0000520 10e7 IORWF 0xe7,0x0,0x0000522 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.c000524 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.c000526 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000528 d000 BRA 0x52aF:\MCP\projects\CAN\canToSerial\Source\CAN.c00052a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\CAN.c00052c cfe7 MOVFF 0xfe7,0xfd900052e ffd9000530 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: $HeadURL$ F:\MCP\projects\CAN\canToSerial\Source\Main.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canToSerial\Source\Main.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canToSerial\Source\Main.c* Revision: $Revision$ 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.c000532 d874 RCALL 0x61c 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.c000534 ec22 CALL 0x44,0x0 canInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000536 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.c000538 ecb2 CALL 0x964,0x0 uartInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00053a f004#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00053c ec88 CALL 0xb10,0x0 tickInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00053e f005F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000540 d7ff BRA 0x540 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.c000542 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.c000544 cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c000546 ffe4000548 cfe0 MOVFF 0xfe0,0xfe400054a ffe400054c 6ee4 MOVWF 0xe4,0x000054e cfda MOVFF 0xfda,0xfe4000550 ffe4000552 cfe2 MOVFF 0xfe2,0xfda000554 ffda000556 cfe9 MOVFF 0xfe9,0xfe4000558 ffe400055a cfea MOVFF 0xfea,0xfe400055c ffe400055e cff6 MOVFF 0xff6,0xfe4000560 ffe4000562 cff7 MOVFF 0xff7,0xfe4000564 ffe4000566 cff5 MOVFF 0xff5,0xfe4000568 ffe400056a cff3 MOVFF 0xff3,0xfe400056c ffe400056e cff4 MOVFF 0xff4,0xfe4000570 ffe4000572 cffa MOVFF 0xffa,0xfe4000574 ffe4000576 ee00 LFSR 0x0,0x14000578 f01400057a 0e0b MOVLW 0xb00057c 04e8 DECF 0xe8,0x0,0x000057e e303 BNC 0x586000580 cfee MOVFF 0xfee,0xfe4000582 ffe4000584 d7fb BRA 0x57c000586 ee00 LFSR 0x0,0x0000588 f00000058a 0e14 MOVLW 0x1400058c 04e8 DECF 0xe8,0x0,0x000058e e303 BNC 0x596000590 cfee MOVFF 0xfee,0xfe4000592 ffe4000594 d7fb BRA 0x58c000596 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.c000598 ec1e CALL 0xa3c,0x0 uartISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00059a 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.c00059c ec4d CALL 0x9a,0x0 canISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00059e f000#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0005a0 ec9c CALL 0xb38,0x0 tickUpdate(); F:\MCP\projects\CAN\canToSerial\Source\Main.c0005a2 f0050005a4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c0005a6 ee00 LFSR 0x0,0x130005a8 f0130005aa 0e14 MOVLW 0x140005ac 04e8 DECF 0xe8,0x0,0x00005ae e303 BNC 0x5b60005b0 cfe5 MOVFF 0xfe5,0xfed0005b2 ffed0005b4 d7fb BRA 0x5ac0005b6 ee00 LFSR 0x0,0x1e0005b8 f01e0005ba 0e0b MOVLW 0xb0005bc 04e8 DECF 0xe8,0x0,0x00005be e303 BNC 0x5c60005c0 cfe5 MOVFF 0xfe5,0xfed0005c2 ffed0005c4 d7fb BRA 0x5bc0005c6 cfe5 MOVFF 0xfe5,0xffa0005c8 fffa0005ca cfe5 MOVFF 0xfe5,0xff40005cc fff40005ce cfe5 MOVFF 0xfe5,0xff30005d0 fff30005d2 cfe5 MOVFF 0xfe5,0xff50005d4 fff50005d6 cfe5 MOVFF 0xfe5,0xff70005d8 fff70005da cfe5 MOVFF 0xfe5,0xff60005dc fff60005de cfe5 MOVFF 0xfe5,0xfea0005e0 ffea0005e2 cfe5 MOVFF 0xfe5,0xfe90005e4 ffe90005e6 cfe5 MOVFF 0xfe5,0xfda0005e8 ffda0005ea 50e5 MOVF 0xe5,0x0,0x00005ec cfe5 MOVFF 0xfe5,0xfe00005ee ffe00005f0 cfe5 MOVFF 0xfe5,0xfd80005f2 ffd80005f4 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 efa2 GOTO 0x544 _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.c0005f6 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c0005f8 ffe40005fa cfe0 MOVFF 0xfe0,0xfe40005fc ffe40005fe 6ee4 MOVWF 0xe4,0x0000600 cfda MOVFF 0xfda,0xfe4000602 ffe4000604 cfe2 MOVFF 0xfe2,0xfda000606 ffda000608 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00060a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c00060c cfe5 MOVFF 0xfe5,0xfda00060e ffda000610 50e5 MOVF 0xe5,0x0,0x0000612 cfe5 MOVFF 0xfe5,0xfe0000614 ffe0000616 cfe5 MOVFF 0xfe5,0xfd8000618 ffd800061a 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 effb GOTO 0x5f6 _asm goto LowISR _endasm F:\MCP\projects\CAN\canToSerial\Source\Main.c00001a f00200001c 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.c00061c 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.c00061e 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.c000620 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canToSerial\Source\Main.c000622 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.c000624 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.c000626 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.c000628 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canToSerial\Source\Main.c00062a ffe600062c cfe1 MOVFF 0xfe1,0xfd900062e ffd9000630 0e02 MOVLW 0x2000632 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000634 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000636 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c000638 0efd MOVLW 0xfd uartPutc(UART_START_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c00063a 6ee6 MOVWF 0xe6,0x000063c ecc1 CALL 0x982,0x000063e f004000640 52e5 MOVF 0xe5,0x1,0x0000642 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000644 cfdb MOVFF 0xfdb,0xfe6000646 ffe6000648 ecc1 CALL 0x982,0x000064a f00400064c 52e5 MOVF 0xe5,0x1,0x000064e 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000650 cfdb MOVFF 0xfdb,0x0000652 f000000654 0ef1 MOVLW 0xf1000656 cfdb MOVFF 0xfdb,0x1000658 f00100065a 0ef2 MOVLW 0xf200065c cfdb MOVFF 0xfdb,0x200065e f002000660 0ef3 MOVLW 0xf3000662 cfdb MOVFF 0xfdb,0x3000664 f003000666 0e08 MOVLW 0x8000668 90d8 BCF 0xd8,0x0,0x000066a 3203 RRCF 0x3,0x1,0x000066c 3202 RRCF 0x2,0x1,0x000066e 3201 RRCF 0x1,0x1,0x0000670 3200 RRCF 0x0,0x1,0x0000672 06e8 DECF 0xe8,0x1,0x0000674 e1f9 BNZ 0x668000676 5000 MOVF 0x0,0x0,0x0000678 6ee6 MOVWF 0xe6,0x000067a ecc1 CALL 0x982,0x000067c f00400067e 52e5 MOVF 0xe5,0x1,0x0000680 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canToSerial\Source\Main.c000682 cfdb MOVFF 0xfdb,0x0000684 f000000686 0ef1 MOVLW 0xf1000688 cfdb MOVFF 0xfdb,0x100068a f00100068c 0ef2 MOVLW 0xf200068e cfdb MOVFF 0xfdb,0x2000690 f002000692 0ef3 MOVLW 0xf3000694 cfdb MOVFF 0xfdb,0x3000696 f003000698 0e10 MOVLW 0x1000069a 90d8 BCF 0xd8,0x0,0x000069c 3203 RRCF 0x3,0x1,0x000069e 3202 RRCF 0x2,0x1,0x00006a0 3201 RRCF 0x1,0x1,0x00006a2 3200 RRCF 0x0,0x1,0x00006a4 06e8 DECF 0xe8,0x1,0x00006a6 e1f9 BNZ 0x69a0006a8 5000 MOVF 0x0,0x0,0x00006aa 6ee6 MOVWF 0xe6,0x00006ac ecc1 CALL 0x982,0x00006ae f0040006b0 52e5 MOVF 0xe5,0x1,0x00006b2 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006b4 cfdb MOVFF 0xfdb,0x00006b6 f0000006b8 0ef1 MOVLW 0xf10006ba cfdb MOVFF 0xfdb,0x10006bc f0010006be 0ef2 MOVLW 0xf20006c0 cfdb MOVFF 0xfdb,0x20006c2 f0020006c4 0ef3 MOVLW 0xf30006c6 cfdb MOVFF 0xfdb,0x30006c8 f0030006ca 0e18 MOVLW 0x180006cc 90d8 BCF 0xd8,0x0,0x00006ce 3203 RRCF 0x3,0x1,0x00006d0 3202 RRCF 0x2,0x1,0x00006d2 3201 RRCF 0x1,0x1,0x00006d4 3200 RRCF 0x0,0x1,0x00006d6 06e8 DECF 0xe8,0x1,0x00006d8 e1f9 BNZ 0x6cc0006da 5000 MOVF 0x0,0x0,0x00006dc 6ee6 MOVWF 0xe6,0x00006de ecc1 CALL 0x982,0x00006e0 f0040006e2 52e5 MOVF 0xe5,0x1,0x00006e4 0ef4 MOVLW 0xf4 uartPutc(cm.extended); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006e6 cfdb MOVFF 0xfdb,0xfe60006e8 ffe60006ea ecc1 CALL 0x982,0x00006ec f0040006ee 52e5 MOVF 0xe5,0x1,0x00006f0 0ef5 MOVLW 0xf5 uartPutc(cm.remote_request); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006f2 cfdb MOVFF 0xfdb,0xfe60006f4 ffe60006f6 ecc1 CALL 0x982,0x00006f8 f0040006fa 52e5 MOVF 0xe5,0x1,0x00006fc 0ef6 MOVLW 0xf6 uartPutc(cm.data_length); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006fe cfdb MOVFF 0xfdb,0xfe6000700 ffe6000702 ecc1 CALL 0x982,0x0000704 f004000706 52e5 MOVF 0xe5,0x1,0x0000708 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[i]); F:\MCP\projects\CAN\canToSerial\Source\Main.c00070a 6add CLRF 0xdd,0x000070c cfde MOVFF 0xfde,0x000070e f000000710 cfdd MOVFF 0xfdd,0x1000712 f001000714 90d8 BCF 0xd8,0x0,0x0000716 5001 MOVF 0x1,0x0,0x0000718 e604 BN 0x72200071a 0e08 MOVLW 0x800071c 5c00 SUBWF 0x0,0x0,0x000071e 0e00 MOVLW 0x0000720 5801 SUBWFB 0x1,0x0,0x0000722 e216 BC 0x750000724 50d9 MOVF 0xd9,0x0,0x0000726 0ff7 ADDLW 0xf7000728 6e00 MOVWF 0x0,0x000072a 0eff MOVLW 0xff00072c 20da ADDWFC 0xda,0x0,0x000072e 6e01 MOVWF 0x1,0x0000730 50de MOVF 0xde,0x0,0x0000732 2400 ADDWF 0x0,0x0,0x0000734 6ee9 MOVWF 0xe9,0x0000736 50dd MOVF 0xdd,0x0,0x0000738 2001 ADDWFC 0x1,0x0,0x000073a 6eea MOVWF 0xea,0x000073c 50ef MOVF 0xef,0x0,0x000073e 6ee6 MOVWF 0xe6,0x0000740 ecc1 CALL 0x982,0x0000742 f004000744 52e5 MOVF 0xe5,0x1,0x0000746 2adf INCF 0xdf,0x1,0x0000748 0e01 MOVLW 0x100074a e301 BNC 0x74e00074c 2adb INCF 0xdb,0x1,0x000074e d7de BRA 0x70c000750 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c000752 6ee6 MOVWF 0xe6,0x0000754 ecc1 CALL 0x982,0x0000756 f004000758 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c00075a 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canToSerial\Source\Main.c00075c 5ce1 SUBWF 0xe1,0x0,0x000075e e202 BC 0x764000760 6ae1 CLRF 0xe1,0x0000762 52e5 MOVF 0xe5,0x1,0x0000764 6ee1 MOVWF 0xe1,0x0000766 52e5 MOVF 0xe5,0x1,0x0000768 cfe7 MOVFF 0xfe7,0xfd900076a ffd900076c 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.c00076e cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\Main.c000770 ffe6000772 cfe1 MOVFF 0xfe1,0xfd9000774 ffd9000776 0e12 MOVLW 0x12000778 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cBYTE i; F:\MCP\projects\CAN\canToSerial\Source\Main.c00077a 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.c00077c 6adb CLRF 0xdb,0x000077e 0e02 MOVLW 0x2000780 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.c000782 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canToSerial\Source\Main.c000784 056e DECF 0x6e,0x0,0x1000786 e11a BNZ 0x7bc000788 ec92 CALL 0xb24,0x000078a f00500078c 0100 MOVLB 0x000078e 516f MOVF 0x6f,0x0,0x1000790 5c18 SUBWF 0x18,0x0,0x0000792 6e00 MOVWF 0x0,0x0000794 5170 MOVF 0x70,0x0,0x1000796 5819 SUBWFB 0x19,0x0,0x0000798 6e01 MOVWF 0x1,0x000079a 5171 MOVF 0x71,0x0,0x100079c 581a SUBWFB 0x1a,0x0,0x000079e 6e02 MOVWF 0x2,0x00007a0 5172 MOVF 0x72,0x0,0x10007a2 581b SUBWFB 0x1b,0x0,0x00007a4 6e03 MOVWF 0x3,0x00007a6 80d8 BSF 0xd8,0x0,0x00007a8 0e05 MOVLW 0x50007aa 5400 SUBFWB 0x0,0x0,0x00007ac 0e00 MOVLW 0x00007ae 5401 SUBFWB 0x1,0x0,0x00007b0 0e00 MOVLW 0x00007b2 5402 SUBFWB 0x2,0x0,0x00007b4 0e00 MOVLW 0x00007b6 5403 SUBFWB 0x3,0x0,0x00007b8 e201 BC 0x7bc{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007ba 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.c0007bc 056e DECF 0x6e,0x0,0x1 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007be e001 BZ 0x7c20007c0 d0a5 BRA 0x90c{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0007c2 ec92 CALL 0xb24,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c0007c4 f0050007c6 c018 MOVFF 0x18,0x6f0007c8 f06f0007ca c019 MOVFF 0x19,0x700007cc f0700007ce c01a MOVFF 0x1a,0x710007d0 f0710007d2 c01b MOVFF 0x1b,0x720007d4 f072F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// UART END F:\MCP\projects\CAN\canToSerial\Source\Main.c0007d6 0e0f MOVLW 0xf if(count>=15) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007d8 0100 MOVLB 0x00007da 5d73 SUBWF 0x73,0x0,0x10007dc e33b BNC 0x854{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007de 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007e0 50db MOVF 0xdb,0x0,0x00007e2 6e00 MOVWF 0x0,0x00007e4 6a01 CLRF 0x1,0x00007e6 0efa MOVLW 0xfa0007e8 1800 XORWF 0x0,0x0,0x00007ea e101 BNZ 0x7ee0007ec 5001 MOVF 0x1,0x0,0x00007ee e12f BNZ 0x84e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007f0 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.c0007f2 0e03 MOVLW 0x3 while(!canSendMessage(cm,PRIO_HIGEST)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0007f4 6ee6 MOVWF 0xe6,0x00007f6 50d9 MOVF 0xd9,0x0,0x00007f8 0f03 ADDLW 0x30007fa 6ee9 MOVWF 0xe9,0x00007fc cfda MOVFF 0xfda,0xfea0007fe ffea000800 cfee MOVFF 0xfee,0xfe6000802 ffe6000804 cfee MOVFF 0xfee,0xfe6000806 ffe6000808 cfee MOVFF 0xfee,0xfe600080a ffe600080c cfee MOVFF 0xfee,0xfe600080e ffe6000810 cfee MOVFF 0xfee,0xfe6000812 ffe6000814 cfee MOVFF 0xfee,0xfe6000816 ffe6000818 cfee MOVFF 0xfee,0xfe600081a ffe600081c cfee MOVFF 0xfee,0xfe600081e ffe6000820 cfee MOVFF 0xfee,0xfe6000822 ffe6000824 cfee MOVFF 0xfee,0xfe6000826 ffe6000828 cfee MOVFF 0xfee,0xfe600082a ffe600082c cfee MOVFF 0xfee,0xfe600082e ffe6000830 cfee MOVFF 0xfee,0xfe6000832 ffe6000834 cfee MOVFF 0xfee,0xfe6000836 ffe6000838 cfee MOVFF 0xfee,0xfe600083a ffe600083c ec95 CALL 0x32a,0x000083e f001000840 6e00 MOVWF 0x0,0x0000842 0e10 MOVLW 0x10000844 5ee1 SUBWF 0xe1,0x1,0x0000846 5000 MOVF 0x0,0x0,0x0000848 0900 IORLW 0x000084a e101 BNZ 0x84e00084c d7d2 BRA 0x7f2} F:\MCP\projects\CAN\canToSerial\Source\Main.c00084e 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.c000850 6b6e CLRF 0x6e,0x1000852 d07e BRA 0x950 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.c000854 0e07 MOVLW 0x7 if(count>=7) F:\MCP\projects\CAN\canToSerial\Source\Main.c000856 5d73 SUBWF 0x73,0x0,0x1000858 e313 BNC 0x880{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00085a 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-7]=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c00085c 0f0a ADDLW 0xa00085e 6e00 MOVWF 0x0,0x0000860 cfda MOVFF 0xfda,0x1000862 f001000864 0e07 MOVLW 0x7000866 5d73 SUBWF 0x73,0x0,0x1000868 010f MOVLB 0xf00086a 2400 ADDWF 0x0,0x0,0x000086c 6ee9 MOVWF 0xe9,0x000086e 0e00 MOVLW 0x0000870 2001 ADDWFC 0x1,0x0,0x0000872 6eea MOVWF 0xea,0x0000874 0efe MOVLW 0xfe000876 cfdb MOVFF 0xfdb,0xfef000878 ffef00087a 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c00087c 2b73 INCF 0x73,0x1,0x100087e d068 BRA 0x950 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.c000880 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canToSerial\Source\Main.c000882 5d73 SUBWF 0x73,0x0,0x1000884 e308 BNC 0x896{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000886 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000888 50db MOVF 0xdb,0x0,0x000088a 6ee7 MOVWF 0xe7,0x000088c 0e09 MOVLW 0x900088e cfe7 MOVFF 0xfe7,0xfdb000890 ffdb000892 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000894 d05d BRA 0x950 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.c000896 0e05 MOVLW 0x5 if(count>=5) F:\MCP\projects\CAN\canToSerial\Source\Main.c000898 5d73 SUBWF 0x73,0x0,0x100089a e308 BNC 0x8ac{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00089c 0efe MOVLW 0xfe cm.remote_request=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c00089e 50db MOVF 0xdb,0x0,0x00008a0 6ee7 MOVWF 0xe7,0x00008a2 0e08 MOVLW 0x80008a4 cfe7 MOVFF 0xfe7,0xfdb0008a6 ffdb0008a8 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008aa d052 BRA 0x950 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.c0008ac 0e04 MOVLW 0x4 if(count>=4) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008ae 5d73 SUBWF 0x73,0x0,0x10008b0 e308 BNC 0x8c2{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b2 0efe MOVLW 0xfe cm.extended=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b4 50db MOVF 0xdb,0x0,0x00008b6 6ee7 MOVWF 0xe7,0x00008b8 0e07 MOVLW 0x70008ba cfe7 MOVFF 0xfe7,0xfdb0008bc ffdb0008be 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008c0 d047 BRA 0x950 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.c0008c2 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008c4 5d73 SUBWF 0x73,0x0,0x10008c6 e322 BNC 0x90c{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008c8 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0008ca cfdb MOVFF 0xfdb,0x00008cc f0000008ce 6a01 CLRF 0x1,0x00008d0 6a02 CLRF 0x2,0x00008d2 6a03 CLRF 0x3,0x00008d4 0e08 MOVLW 0x80008d6 0373 MULWF 0x73,0x10008d8 50f3 MOVF 0xf3,0x0,0x00008da 0b1f ANDLW 0x1f0008dc e007 BZ 0x8ec0008de 90d8 BCF 0xd8,0x0,0x00008e0 3600 RLCF 0x0,0x1,0x00008e2 3601 RLCF 0x1,0x1,0x00008e4 3602 RLCF 0x2,0x1,0x00008e6 3603 RLCF 0x3,0x1,0x00008e8 06e8 DECF 0xe8,0x1,0x00008ea e1f9 BNZ 0x8de0008ec 50d9 MOVF 0xd9,0x0,0x00008ee 0f03 ADDLW 0x30008f0 6ee9 MOVWF 0xe9,0x00008f2 cfda MOVFF 0xfda,0xfea0008f4 ffea0008f6 5000 MOVF 0x0,0x0,0x00008f8 26ee ADDWF 0xee,0x1,0x00008fa 5001 MOVF 0x1,0x0,0x00008fc 22ee ADDWFC 0xee,0x1,0x00008fe 5002 MOVF 0x2,0x0,0x0000900 22ee ADDWFC 0xee,0x1,0x0000902 5003 MOVF 0x3,0x0,0x0000904 22ee ADDWFC 0xee,0x1,0x0000906 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000908 2b73 INCF 0x73,0x1,0x100090a d022 BRA 0x950 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.c00090c 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canToSerial\Source\Main.c00090e 50db MOVF 0xdb,0x0,0x0000910 6e00 MOVWF 0x0,0x0000912 6a01 CLRF 0x1,0x0000914 0efd MOVLW 0xfd000916 1800 XORWF 0x0,0x0,0x0000918 e101 BNZ 0x91c00091a 5001 MOVF 0x1,0x0,0x000091c e119 BNZ 0x95000091e 516e MOVF 0x6e,0x0,0x1000920 e117 BNZ 0x950{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000922 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canToSerial\Source\Main.c000924 6f6e MOVWF 0x6e,0x1000926 ec92 CALL 0xb24,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000928 f00500092a c018 MOVFF 0x18,0x6f00092c f06f00092e c019 MOVFF 0x19,0x70000930 f070000932 c01a MOVFF 0x1a,0x71000934 f071000936 c01b MOVFF 0x1b,0x72000938 f07200093a 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c00093c 6b73 CLRF 0x73,0x100093e 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000940 6adb CLRF 0xdb,0x0000942 0e04 MOVLW 0x4000944 6adb CLRF 0xdb,0x0000946 0e05 MOVLW 0x5000948 6adb CLRF 0xdb,0x000094a 0e06 MOVLW 0x600094c 6adb CLRF 0xdb,0x000094e d000 BRA 0x950 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.c000950 0e12 MOVLW 0x12 } F:\MCP\projects\CAN\canToSerial\Source\Main.c000952 5ce1 SUBWF 0xe1,0x0,0x0000954 e202 BC 0x95a000956 6ae1 CLRF 0xe1,0x0000958 52e5 MOVF 0xe5,0x1,0x000095a 6ee1 MOVWF 0xe1,0x000095c 52e5 MOVF 0xe5,0x1,0x000095e cfe7 MOVFF 0xfe7,0xfd9000960 ffd9000962 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: $HeadURL$ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Last changed: $LastChangedDate$ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* By: $LastChangedBy$ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Revision: $Revision$ 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.c000b10 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b12 6ed6 MOVWF 0xd6,0x0000b14 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b16 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.c000b18 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b1a 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b1c 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c000b1e 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b20 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b22 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.c000b24 c074 MOVFF 0x74,0x18 return TickCount; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b26 f018000b28 c075 MOVFF 0x75,0x19000b2a f019000b2c c076 MOVFF 0x76,0x1a000b2e f01a000b30 c077 MOVFF 0x77,0x1b000b32 f01b000b34 d000 BRA 0xb36000b36 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.c000b38 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b3a d00b BRA 0xb52{ F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b3c 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b3e 6ed7 MOVWF 0xd7,0x0000b40 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b42 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b44 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b46 2b74 INCF 0x74,0x1,0x1000b48 0e00 MOVLW 0x0000b4a 2375 ADDWFC 0x75,0x1,0x1000b4c 2376 ADDWFC 0x76,0x1,0x1000b4e 2377 ADDWFC 0x77,0x1,0x1F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b50 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canToSerial\Source\Tick.c} F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b52 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Tick.c