Rev 260 | 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 Jan 14 14:49:20 2007Address 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: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canToSerial/Source/uart.c $ F:\MCP\projects\CAN\canToSerial\Source\uart.c* Last changed: $LastChangedDate: 2006-11-14 21:22:17 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canToSerial\Source\uart.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canToSerial\Source\uart.c* Revision: $Revision: 97 $ 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.c00094e 8e94 BSF 0x94,0x7,0x0 TRISCbits.TRISC7=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c000950 9c94 BCF 0x94,0x6,0x0 TRISCbits.TRISC6=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c000952 0e20 MOVLW 0x20 TXSTA=0b00100000; F:\MCP\projects\CAN\canToSerial\Source\uart.c000954 6eac MOVWF 0xac,0x0#ifdef HIGH_BRG F:\MCP\projects\CAN\canToSerial\Source\uart.c000956 84ac BSF 0xac,0x2,0x0 TXSTAbits.BRGH=1; // High BRG speed F:\MCP\projects\CAN\canToSerial\Source\uart.c000958 86b8 BSF 0xb8,0x3,0x0 BAUDCONbits.BRG16=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c00095a 6ab0 CLRF 0xb0,0x0 SPBRGH = SPBRGH_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c00095c 0e55 MOVLW 0x55 SPBRG = SPBRG_VAL; F:\MCP\projects\CAN\canToSerial\Source\uart.c00095e 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.c000960 0e90 MOVLW 0x90 RCSTA=0b10010000; F:\MCP\projects\CAN\canToSerial\Source\uart.c000962 6eab MOVWF 0xab,0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c// USART RX interrupt F:\MCP\projects\CAN\canToSerial\Source\uart.c000964 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c000966 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.c000968 8a9f BSF 0x9f,0x5,0x0 IPR1bits.RCIP=1; F:\MCP\projects\CAN\canToSerial\Source\uart.c00096a 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.c00096c cfd9 MOVFF 0xfd9,0xfe6 void uartPutc(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\uart.c00096e ffe6000970 cfe1 MOVFF 0xfe1,0xfd9000972 ffd9{ F:\MCP\projects\CAN\canToSerial\Source\uart.c// Write the data byte to the USART F:\MCP\projects\CAN\canToSerial\Source\uart.c000974 0efe MOVLW 0xfe TXREG = c; F:\MCP\projects\CAN\canToSerial\Source\uart.c000976 50db MOVF 0xdb,0x0,0x0000978 6ead MOVWF 0xad,0x000097a d84b RCALL 0xa12 while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c00097c 0900 IORLW 0x000097e e001 BZ 0x982000980 d7fc BRA 0x97a000982 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c000984 cfe7 MOVFF 0xfe7,0xfd9000986 ffd9000988 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.c00098a cfd9 MOVFF 0xfd9,0xfe6 void uartPuts(BYTE c[]) F:\MCP\projects\CAN\canToSerial\Source\uart.c00098c ffe600098e cfe1 MOVFF 0xfe1,0xfd9000990 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.c000992 d83f RCALL 0xa12 while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000994 0900 IORLW 0x0000996 e001 BZ 0x99a000998 d7fc BRA 0x99200099a 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canToSerial\Source\uart.c00099c cfdb MOVFF 0xfdb,0xfe900099e ffe90009a0 0efe MOVLW 0xfe0009a2 cfdb MOVFF 0xfdb,0xfea0009a4 ffea0009a6 50ef MOVF 0xef,0x0,0x00009a8 6ee6 MOVWF 0xe6,0x00009aa dfe0 RCALL 0x96c0009ac 52e5 MOVF 0xe5,0x1,0x00009ae 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009b0 cfdb MOVFF 0xfdb,0xfe90009b2 ffe90009b4 2adb INCF 0xdb,0x1,0x00009b6 0efe MOVLW 0xfe0009b8 cfdb MOVFF 0xfdb,0xfea0009ba ffea0009bc e301 BNC 0x9c00009be 2adb INCF 0xdb,0x1,0x00009c0 50ef MOVF 0xef,0x0,0x00009c2 e1e7 BNZ 0x9920009c4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c0009c6 cfe7 MOVFF 0xfe7,0xfd90009c8 ffd90009ca 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.c0009cc cfd9 MOVFF 0xfd9,0xfe6 void uartPutrs(const rom char *c) F:\MCP\projects\CAN\canToSerial\Source\uart.c0009ce ffe60009d0 cfe1 MOVFF 0xfe1,0xfd90009d2 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.c0009d4 d81e RCALL 0xa12 while(uartBusy()); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009d6 0900 IORLW 0x00009d8 e001 BZ 0x9dc0009da d7fc BRA 0x9d40009dc 0efd MOVLW 0xfd uartPutc(*c); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009de cfdb MOVFF 0xfdb,0xff60009e0 fff60009e2 0efe MOVLW 0xfe0009e4 cfdb MOVFF 0xfdb,0xff70009e6 fff70009e8 0008 TBLRD0009ea 50f5 MOVF 0xf5,0x0,0x00009ec 6ee6 MOVWF 0xe6,0x00009ee dfbe RCALL 0x96c0009f0 52e5 MOVF 0xe5,0x1,0x00009f2 0efd MOVLW 0xfd } while( *c++ ); F:\MCP\projects\CAN\canToSerial\Source\uart.c0009f4 cfdb MOVFF 0xfdb,0xff60009f6 fff60009f8 2adb INCF 0xdb,0x1,0x00009fa 0efe MOVLW 0xfe0009fc cfdb MOVFF 0xfdb,0xff70009fe fff7000a00 e301 BNC 0xa04000a02 2adb INCF 0xdb,0x1,0x0000a04 0008 TBLRD000a06 50f5 MOVF 0xf5,0x0,0x0000a08 e1e5 BNZ 0x9d4000a0a 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\uart.c000a0c cfe7 MOVFF 0xfe7,0xfd9000a0e ffd9000a10 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.c000a12 50ac MOVF 0xac,0x0,0x0 return !TXSTAbits.TRMT; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a14 0b02 ANDLW 0x2000a16 0a02 XORLW 0x2000a18 e001 BZ 0xa1c000a1a 0e01 MOVLW 0x1000a1c d000 BRA 0xa1e000a1e 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.c000a20 50ae MOVF 0xae,0x0,0x0 return RCREG; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a22 d000 BRA 0xa24000a24 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.c000a26 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.RCIF==1 && PIE1bits.RCIE==1) F:\MCP\projects\CAN\canToSerial\Source\uart.c000a28 0b20 ANDLW 0x20000a2a e00d BZ 0xa46000a2c 509d MOVF 0x9d,0x0,0x0000a2e 0b20 ANDLW 0x20000a30 e00a BZ 0xa46{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a32 a2ab BTFSS 0xab,0x1,0x0 if (RCSTAbits.OERR) { RCSTAbits.CREN=0; RCSTAbits.CREN=1; } F:\MCP\projects\CAN\canToSerial\Source\uart.c000a34 d002 BRA 0xa3a000a36 98ab BCF 0xab,0x4,0x0000a38 88ab BSF 0xab,0x4,0x0F:\MCP\projects\CAN\canToSerial\Source\uart.c000a3a dff2 RCALL 0xa20 uartParse(uartGet()); F:\MCP\projects\CAN\canToSerial\Source\uart.c000a3c 6ee6 MOVWF 0xe6,0x0000a3e ecac CALL 0x758,0x0000a40 f003000a42 52e5 MOVF 0xe5,0x1,0x0000a44 9a9e BCF 0x9e,0x5,0x0 PIR1bits.RCIF=0; F:\MCP\projects\CAN\canToSerial\Source\uart.c} F:\MCP\projects\CAN\canToSerial\Source\uart.c000a46 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.c000a48 a2ab BTFSS 0xab,0x1,0x0 if(RCSTAbits.OERR) F:\MCP\projects\CAN\canToSerial\Source\uart.c000a4a d002 BRA 0xa50{ F:\MCP\projects\CAN\canToSerial\Source\uart.c000a4c 98ab BCF 0xab,0x4,0x0 RCSTAbits.CREN = 0; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a4e 88ab BSF 0xab,0x4,0x0 RCSTAbits.CREN = 1; F:\MCP\projects\CAN\canToSerial\Source\uart.c} F:\MCP\projects\CAN\canToSerial\Source\uart.c000a50 509e MOVF 0x9e,0x0,0x0 return PIR1bits.RCIF; F:\MCP\projects\CAN\canToSerial\Source\uart.c000a52 0b20 ANDLW 0x20000a54 e001 BZ 0xa58000a56 0e01 MOVLW 0x1000a58 d000 BRA 0xa5a000a5a 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: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canToSerial/Source/CAN.c $ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Last changed: $LastChangedDate: 2006-11-14 21:22:17 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canToSerial\Source\CAN.c* Revision: $Revision: 97 $ 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.c//BRGCON1 = 0x03; //500Kbit@40MHz 1TQ Sync, 2TQ Prop, 4TQ Phase1, 3TQ Phase2 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON2 = 0x99; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON3 = 0x02; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//75%, 250Kbps @40MHz F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON1 = 0x09; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON2 = 0xDB; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON3 = 0x01; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//75% ,1 , 500Kbps @40MHz F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON1 = 0x01; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON2 = (0xB6 | 0x80); F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON3 = 0x04; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//75% ,1 , 500Kbps @80MHz F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON1 = 0x03; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON2 = (0xB6 | 0x80); F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON3 = 0x04; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// 500Khz@40Mhz (new by the book) F:\MCP\projects\CAN\canToSerial\Source\CAN.c000052 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000054 6e70 MOVWF 0x70,0x0000056 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000058 6e71 MOVWF 0x71,0x000005a 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00005c 6e72 MOVWF 0x72,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c//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.c//BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//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.c//BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canToSerial\Source\CAN.c//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.c//BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//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.c//BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//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.c//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.c//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.c//BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c//BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00005e 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000060 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000062 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.c000064 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000066 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Set ressesive VDD F:\MCP\projects\CAN\canToSerial\Source\CAN.c000068 8a73 BSF 0x73,0x5,0x0 CIOCONbits.ENDRHI = 1; F:\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.c00006a 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00006c 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canToSerial\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canToSerial\Source\CAN.c00006e 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000070 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000072 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canToSerial\Source\CAN.c000074 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.c000076 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.c000078 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canToSerial\Source\CAN.c00007a 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canToSerial\Source\CAN.c00007c 146e ANDWF 0x6e,0x0,0x000007e e001 BZ 0x82000080 d7fc BRA 0x7a#endif F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000082 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.c000084 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canToSerial\Source\CAN.c000086 0b02 ANDLW 0x2000088 e106 BNZ 0x9600008a 50a4 MOVF 0xa4,0x0,0x000008c 0b02 ANDLW 0x200008e e103 BNZ 0x96000090 50a4 MOVF 0xa4,0x0,0x0000092 0b01 ANDLW 0x1000094 e016 BZ 0xc2{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c000096 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000098 146f ANDWF 0x6f,0x0,0x000009a 0910 IORLW 0x1000009c 6e00 MOVWF 0x0,0x000009e 0e00 MOVLW 0x00000a0 1477 ANDWF 0x77,0x0,0x00000a2 1000 IORWF 0x0,0x0,0x00000a4 6e77 MOVWF 0x77,0x00000a6 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000a8 d80d RCALL 0xc4F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000aa a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000ac d002 BRA 0xb20000ae 92a4 BCF 0xa4,0x1,0x00000b0 d008 BRA 0xc20000b2 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000b4 d002 BRA 0xba0000b6 92a4 BCF 0xa4,0x1,0x00000b8 d004 BRA 0xc20000ba a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000bc d002 BRA 0xc20000be 90a4 BCF 0xa4,0x0,0x00000c0 d000 BRA 0xc2} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000c2 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.c0000c4 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000c6 ffe60000c8 cfe1 MOVFF 0xfe1,0xfd90000ca ffd90000cc 0e0f MOVLW 0xf0000ce 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.c0000d0 5062 MOVF 0x62,0x0,0x0 cm.extended=(RXB0SIDLbits.EXID==0?FALSE:TRUE); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000d2 0b08 ANDLW 0x80000d4 e102 BNZ 0xda0000d6 0e00 MOVLW 0x00000d8 d001 BRA 0xdc0000da 0e01 MOVLW 0x10000dc 6ee7 MOVWF 0xe7,0x00000de 0e04 MOVLW 0x40000e0 cfe7 MOVFF 0xfe7,0xfdb0000e2 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Clear F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000e4 6ade CLRF 0xde,0x0 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000e6 6ade CLRF 0xde,0x00000e8 6ade CLRF 0xde,0x00000ea 6add CLRF 0xdd,0x00000ec 52dd MOVF 0xdd,0x1,0x00000ee 52dd MOVF 0xdd,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c0000f0 04db DECF 0xdb,0x0,0x0 if (cm.extended==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c0000f2 e16f BNZ 0x1d2{ 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.c0000f4 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.c0000f6 6e00 MOVWF 0x0,0x00000f8 6a01 CLRF 0x1,0x00000fa 6a02 CLRF 0x2,0x00000fc 6a03 CLRF 0x3,0x00000fe 0e15 MOVLW 0x15000100 0b1f ANDLW 0x1f000102 e007 BZ 0x112000104 90d8 BCF 0xd8,0x0,0x0000106 3600 RLCF 0x0,0x1,0x0000108 3601 RLCF 0x1,0x1,0x000010a 3602 RLCF 0x2,0x1,0x000010c 3603 RLCF 0x3,0x1,0x000010e 06e8 DECF 0xe8,0x1,0x0000110 e1f9 BNZ 0x104000112 0ee0 MOVLW 0xe0000114 1462 ANDWF 0x62,0x0,0x0000116 6e04 MOVWF 0x4,0x0000118 6a05 CLRF 0x5,0x000011a 6a06 CLRF 0x6,0x000011c 6a07 CLRF 0x7,0x000011e 0e0d MOVLW 0xd000120 0b1f ANDLW 0x1f000122 e007 BZ 0x132000124 90d8 BCF 0xd8,0x0,0x0000126 3604 RLCF 0x4,0x1,0x0000128 3605 RLCF 0x5,0x1,0x000012a 3606 RLCF 0x6,0x1,0x000012c 3607 RLCF 0x7,0x1,0x000012e 06e8 DECF 0xe8,0x1,0x0000130 e1f9 BNZ 0x124000132 5004 MOVF 0x4,0x0,0x0000134 2600 ADDWF 0x0,0x1,0x0000136 5005 MOVF 0x5,0x0,0x0000138 2201 ADDWFC 0x1,0x1,0x000013a 5006 MOVF 0x6,0x0,0x000013c 2202 ADDWFC 0x2,0x1,0x000013e 5007 MOVF 0x7,0x0,0x0000140 2203 ADDWFC 0x3,0x1,0x0000142 0e03 MOVLW 0x3000144 1462 ANDWF 0x62,0x0,0x0000146 6e08 MOVWF 0x8,0x0000148 6a09 CLRF 0x9,0x000014a 6a0a CLRF 0xa,0x000014c 6a0b CLRF 0xb,0x000014e 0e10 MOVLW 0x10000150 0b1f ANDLW 0x1f000152 e007 BZ 0x162000154 90d8 BCF 0xd8,0x0,0x0000156 3608 RLCF 0x8,0x1,0x0000158 3609 RLCF 0x9,0x1,0x000015a 360a RLCF 0xa,0x1,0x000015c 360b RLCF 0xb,0x1,0x000015e 06e8 DECF 0xe8,0x1,0x0000160 e1f9 BNZ 0x154000162 5008 MOVF 0x8,0x0,0x0000164 2600 ADDWF 0x0,0x1,0x0000166 5009 MOVF 0x9,0x0,0x0000168 2201 ADDWFC 0x1,0x1,0x000016a 500a MOVF 0xa,0x0,0x000016c 2202 ADDWFC 0x2,0x1,0x000016e 500b MOVF 0xb,0x0,0x0000170 2203 ADDWFC 0x3,0x1,0x0000172 5063 MOVF 0x63,0x0,0x0000174 6e0c MOVWF 0xc,0x0000176 6a0d CLRF 0xd,0x0000178 6a0e CLRF 0xe,0x000017a 6a0f CLRF 0xf,0x000017c 0e08 MOVLW 0x800017e 0b1f ANDLW 0x1f000180 e007 BZ 0x190000182 90d8 BCF 0xd8,0x0,0x0000184 360c RLCF 0xc,0x1,0x0000186 360d RLCF 0xd,0x1,0x0000188 360e RLCF 0xe,0x1,0x000018a 360f RLCF 0xf,0x1,0x000018c 06e8 DECF 0xe8,0x1,0x000018e e1f9 BNZ 0x182000190 500c MOVF 0xc,0x0,0x0000192 2600 ADDWF 0x0,0x1,0x0000194 500d MOVF 0xd,0x0,0x0000196 2201 ADDWFC 0x1,0x1,0x0000198 500e MOVF 0xe,0x0,0x000019a 2202 ADDWFC 0x2,0x1,0x000019c 500f MOVF 0xf,0x0,0x000019e 2203 ADDWFC 0x3,0x1,0x00001a0 5064 MOVF 0x64,0x0,0x00001a2 6e10 MOVWF 0x10,0x00001a4 6a11 CLRF 0x11,0x00001a6 6a12 CLRF 0x12,0x00001a8 6a13 CLRF 0x13,0x00001aa 5010 MOVF 0x10,0x0,0x00001ac 2600 ADDWF 0x0,0x1,0x00001ae 5011 MOVF 0x11,0x0,0x00001b0 2201 ADDWFC 0x1,0x1,0x00001b2 5012 MOVF 0x12,0x0,0x00001b4 2202 ADDWFC 0x2,0x1,0x00001b6 5013 MOVF 0x13,0x0,0x00001b8 2203 ADDWFC 0x3,0x1,0x00001ba c000 MOVFF 0x0,0xfdf0001bc ffdf0001be 0e01 MOVLW 0x10001c0 c001 MOVFF 0x1,0xfdb0001c2 ffdb0001c4 0e02 MOVLW 0x20001c6 c002 MOVFF 0x2,0xfdb0001c8 ffdb0001ca 0e03 MOVLW 0x30001cc c003 MOVFF 0x3,0xfdb0001ce ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c0001d0 d02f BRA 0x230 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.c0001d2 5061 MOVF 0x61,0x0,0x0 cm.ident = (((DWORD)RXB0SIDH)<<3) + (((DWORD)RXB0SIDL)>>5); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0001d4 6e00 MOVWF 0x0,0x00001d6 6a01 CLRF 0x1,0x00001d8 6a02 CLRF 0x2,0x00001da 6a03 CLRF 0x3,0x00001dc 0e03 MOVLW 0x30001de 0b1f ANDLW 0x1f0001e0 e007 BZ 0x1f00001e2 90d8 BCF 0xd8,0x0,0x00001e4 3600 RLCF 0x0,0x1,0x00001e6 3601 RLCF 0x1,0x1,0x00001e8 3602 RLCF 0x2,0x1,0x00001ea 3603 RLCF 0x3,0x1,0x00001ec 06e8 DECF 0xe8,0x1,0x00001ee e1f9 BNZ 0x1e20001f0 5062 MOVF 0x62,0x0,0x00001f2 6e04 MOVWF 0x4,0x00001f4 6a05 CLRF 0x5,0x00001f6 6a06 CLRF 0x6,0x00001f8 6a07 CLRF 0x7,0x00001fa 0e05 MOVLW 0x50001fc 90d8 BCF 0xd8,0x0,0x00001fe 3207 RRCF 0x7,0x1,0x0000200 3206 RRCF 0x6,0x1,0x0000202 3205 RRCF 0x5,0x1,0x0000204 3204 RRCF 0x4,0x1,0x0000206 06e8 DECF 0xe8,0x1,0x0000208 e1f9 BNZ 0x1fc00020a 5004 MOVF 0x4,0x0,0x000020c 2600 ADDWF 0x0,0x1,0x000020e 5005 MOVF 0x5,0x0,0x0000210 2201 ADDWFC 0x1,0x1,0x0000212 5006 MOVF 0x6,0x0,0x0000214 2202 ADDWFC 0x2,0x1,0x0000216 5007 MOVF 0x7,0x0,0x0000218 2203 ADDWFC 0x3,0x1,0x000021a c000 MOVFF 0x0,0xfdf00021c ffdf00021e 0e01 MOVLW 0x1000220 c001 MOVFF 0x1,0xfdb000222 ffdb000224 0e02 MOVLW 0x2000226 c002 MOVFF 0x2,0xfdb000228 ffdb00022a 0e03 MOVLW 0x300022c c003 MOVFF 0x3,0xfdb00022e 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.c000230 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.c000232 0b01 ANDLW 0x1000234 6e02 MOVWF 0x2,0x0000236 5065 MOVF 0x65,0x0,0x0000238 0b02 ANDLW 0x200023a e001 BZ 0x23e00023c 0e01 MOVLW 0x100023e 24e8 ADDWF 0xe8,0x0,0x0000240 6e01 MOVWF 0x1,0x0000242 5065 MOVF 0x65,0x0,0x0000244 0b04 ANDLW 0x4000246 e001 BZ 0x24a000248 0e01 MOVLW 0x100024a 0d04 MULLW 0x400024c cff3 MOVFF 0xff3,0x000024e f000000250 5065 MOVF 0x65,0x0,0x0000252 0b08 ANDLW 0x8000254 e001 BZ 0x258000256 0e01 MOVLW 0x1000258 0d08 MULLW 0x800025a 50f3 MOVF 0xf3,0x0,0x000025c 2400 ADDWF 0x0,0x0,0x000025e 2401 ADDWF 0x1,0x0,0x0000260 2402 ADDWF 0x2,0x0,0x0000262 6ee7 MOVWF 0xe7,0x0000264 0e06 MOVLW 0x6000266 cfe7 MOVFF 0xfe7,0xfdb000268 ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Remote request F:\MCP\projects\CAN\canToSerial\Source\CAN.c00026a 5065 MOVF 0x65,0x0,0x0 cm.remote_request=(RXB0DLCbits.RXRTR==0?FALSE:TRUE); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00026c 0b40 ANDLW 0x4000026e e102 BNZ 0x274000270 0e00 MOVLW 0x0000272 d001 BRA 0x276000274 0e01 MOVLW 0x1000276 6ee7 MOVWF 0xe7,0x0000278 0e05 MOVLW 0x500027a cfe7 MOVFF 0xfe7,0xfdb00027c ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canToSerial\Source\CAN.c00027e 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000280 cf66 MOVFF 0xf66,0xfdb000282 ffdb000284 0e08 MOVLW 0x8000286 cf67 MOVFF 0xf67,0xfdb000288 ffdb00028a 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00028c cf68 MOVFF 0xf68,0xfdb00028e ffdb000290 0e0a MOVLW 0xa000292 cf69 MOVFF 0xf69,0xfdb000294 ffdb000296 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000298 cf6a MOVFF 0xf6a,0xfdb00029a ffdb00029c 0e0c MOVLW 0xc00029e cf6b MOVFF 0xf6b,0xfdb0002a0 ffdb0002a2 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002a4 cf6c MOVFF 0xf6c,0xfdb0002a6 ffdb0002a8 0e0e MOVLW 0xe0002aa cf6d MOVFF 0xf6d,0xfdb0002ac ffdbF:\MCP\projects\CAN\canToSerial\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002ae 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.c0002b0 cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0002b2 ffe90002b4 cfda MOVFF 0xfda,0xfea0002b6 ffea0002b8 cfee MOVFF 0xfee,0xfe60002ba ffe60002bc cfee MOVFF 0xfee,0xfe60002be ffe60002c0 cfee MOVFF 0xfee,0xfe60002c2 ffe60002c4 cfee MOVFF 0xfee,0xfe60002c6 ffe60002c8 cfee MOVFF 0xfee,0xfe60002ca ffe60002cc cfee MOVFF 0xfee,0xfe60002ce ffe60002d0 cfee MOVFF 0xfee,0xfe60002d2 ffe60002d4 cfee MOVFF 0xfee,0xfe60002d6 ffe60002d8 cfee MOVFF 0xfee,0xfe60002da ffe60002dc cfee MOVFF 0xfee,0xfe60002de ffe60002e0 cfee MOVFF 0xfee,0xfe60002e2 ffe60002e4 cfee MOVFF 0xfee,0xfe60002e6 ffe60002e8 cfee MOVFF 0xfee,0xfe60002ea ffe60002ec cfee MOVFF 0xfee,0xfe60002ee ffe60002f0 cfee MOVFF 0xfee,0xfe60002f2 ffe60002f4 ec09 CALL 0x612,0x00002f6 f0030002f8 6e00 MOVWF 0x0,0x00002fa 0e0f MOVLW 0xf0002fc 5ee1 SUBWF 0xe1,0x1,0x00002fe 5000 MOVF 0x0,0x0,0x0000300 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000302 5ce1 SUBWF 0xe1,0x0,0x0000304 e202 BC 0x30a000306 6ae1 CLRF 0xe1,0x0000308 52e5 MOVF 0xe5,0x1,0x000030a 6ee1 MOVWF 0xe1,0x000030c 52e5 MOVF 0xe5,0x1,0x000030e cfe7 MOVFF 0xfe7,0xfd9000310 ffd9000312 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.c000314 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canToSerial\Source\CAN.c000316 ffe6000318 cfe1 MOVFF 0xfe1,0xfd900031a ffd9{ F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c00031c 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c00031e b740 BTFSC 0x40,0x3,0x1000320 d004 BRA 0x32a000322 0e00 MOVLW 0x0000324 1477 ANDWF 0x77,0x0,0x0000326 0903 IORLW 0x3000328 6e77 MOVWF 0x77,0x000032a 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c00032c b730 BTFSC 0x30,0x3,0x100032e d004 BRA 0x338000330 0e00 MOVLW 0x0000332 1477 ANDWF 0x77,0x0,0x0000334 0904 IORLW 0x4000336 6e77 MOVWF 0x77,0x0000338 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canToSerial\Source\CAN.c00033a b720 BTFSC 0x20,0x3,0x100033c d005 BRA 0x34800033e 0e00 MOVLW 0x0000340 1477 ANDWF 0x77,0x0,0x0000342 0905 IORLW 0x5000344 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canToSerial\Source\CAN.c000346 d002 BRA 0x34c else { return FALSE;} F:\MCP\projects\CAN\canToSerial\Source\CAN.c000348 0e00 MOVLW 0x000034a d0e4 BRA 0x514F:\MCP\projects\CAN\canToSerial\Source\CAN.c00034c 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00034e cfdb MOVFF 0xfdb,0x0000350 f000000352 3400 RLCF 0x0,0x0,0x0000354 e20e BC 0x372000356 0eef MOVLW 0xef000358 cfdb MOVFF 0xfdb,0x100035a f00100035c 0e03 MOVLW 0x300035e 6ee7 MOVWF 0xe7,0x0000360 1801 XORWF 0x1,0x0,0x0000362 aee8 BTFSS 0xe8,0x7,0x0000364 d002 BRA 0x36a000366 3401 RLCF 0x1,0x0,0x0000368 d003 BRA 0x37000036a 50e7 MOVF 0xe7,0x0,0x000036c 80d8 BSF 0xd8,0x0,0x000036e 5401 SUBFWB 0x1,0x0,0x0000370 e202 BC 0x376000372 0eef MOVLW 0xef000374 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.cF:\MCP\projects\CAN\canToSerial\Source\CAN.c000376 0ef4 MOVLW 0xf4 if (cm.extended==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c000378 04db DECF 0xdb,0x0,0x000037a e15f BNZ 0x43a{ 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.c00037c 0ef0 MOVLW 0xf0 RXB0SIDH = (BYTE)((cm.ident>>21)); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00037e cfdb MOVFF 0xfdb,0x0000380 f000000382 0ef1 MOVLW 0xf1000384 cfdb MOVFF 0xfdb,0x1000386 f001000388 0ef2 MOVLW 0xf200038a cfdb MOVFF 0xfdb,0x200038c f00200038e 0ef3 MOVLW 0xf3000390 cfdb MOVFF 0xfdb,0x3000392 f003000394 0e15 MOVLW 0x15000396 90d8 BCF 0xd8,0x0,0x0000398 3203 RRCF 0x3,0x1,0x000039a 3202 RRCF 0x2,0x1,0x000039c 3201 RRCF 0x1,0x1,0x000039e 3200 RRCF 0x0,0x1,0x00003a0 06e8 DECF 0xe8,0x1,0x00003a2 e1f9 BNZ 0x3960003a4 5000 MOVF 0x0,0x0,0x00003a6 6e61 MOVWF 0x61,0x00003a8 0ef0 MOVLW 0xf0 RXB0SIDL = ((BYTE)(cm.ident>>16) & 0x03) + ((BYTE)(cm.ident>>13) & 0xE0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0003aa cfdb MOVFF 0xfdb,0x50003ac f0050003ae 0ef1 MOVLW 0xf10003b0 cfdb MOVFF 0xfdb,0x60003b2 f0060003b4 0ef2 MOVLW 0xf20003b6 cfdb MOVFF 0xfdb,0x70003b8 f0070003ba 0ef3 MOVLW 0xf30003bc cfdb MOVFF 0xfdb,0x80003be f0080003c0 0e0d MOVLW 0xd0003c2 90d8 BCF 0xd8,0x0,0x00003c4 3208 RRCF 0x8,0x1,0x00003c6 3207 RRCF 0x7,0x1,0x00003c8 3206 RRCF 0x6,0x1,0x00003ca 3205 RRCF 0x5,0x1,0x00003cc 06e8 DECF 0xe8,0x1,0x00003ce e1f9 BNZ 0x3c20003d0 0ee0 MOVLW 0xe00003d2 1405 ANDWF 0x5,0x0,0x00003d4 6e04 MOVWF 0x4,0x00003d6 0ef0 MOVLW 0xf00003d8 cfdb MOVFF 0xfdb,0x00003da f0000003dc 0ef1 MOVLW 0xf10003de cfdb MOVFF 0xfdb,0x10003e0 f0010003e2 0ef2 MOVLW 0xf20003e4 cfdb MOVFF 0xfdb,0x20003e6 f0020003e8 0ef3 MOVLW 0xf30003ea cfdb MOVFF 0xfdb,0x30003ec f0030003ee 0e10 MOVLW 0x100003f0 90d8 BCF 0xd8,0x0,0x00003f2 3203 RRCF 0x3,0x1,0x00003f4 3202 RRCF 0x2,0x1,0x00003f6 3201 RRCF 0x1,0x1,0x00003f8 3200 RRCF 0x0,0x1,0x00003fa 06e8 DECF 0xe8,0x1,0x00003fc e1f9 BNZ 0x3f00003fe 0e03 MOVLW 0x3000400 1400 ANDWF 0x0,0x0,0x0000402 2404 ADDWF 0x4,0x0,0x0000404 6e62 MOVWF 0x62,0x0000406 0ef0 MOVLW 0xf0 RXB0EIDH = (BYTE)(cm.ident>>8); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000408 cfdb MOVFF 0xfdb,0x000040a f00000040c 0ef1 MOVLW 0xf100040e cfdb MOVFF 0xfdb,0x1000410 f001000412 0ef2 MOVLW 0xf2000414 cfdb MOVFF 0xfdb,0x2000416 f002000418 0ef3 MOVLW 0xf300041a cfdb MOVFF 0xfdb,0x300041c f00300041e 0e08 MOVLW 0x8000420 90d8 BCF 0xd8,0x0,0x0000422 3203 RRCF 0x3,0x1,0x0000424 3202 RRCF 0x2,0x1,0x0000426 3201 RRCF 0x1,0x1,0x0000428 3200 RRCF 0x0,0x1,0x000042a 06e8 DECF 0xe8,0x1,0x000042c e1f9 BNZ 0x42000042e 5000 MOVF 0x0,0x0,0x0000430 6e63 MOVWF 0x63,0x0000432 0ef0 MOVLW 0xf0 RXB0EIDL = (BYTE)cm.ident; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000434 50db MOVF 0xdb,0x0,0x0000436 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c} F:\MCP\projects\CAN\canToSerial\Source\CAN.c000438 d02f BRA 0x498 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.c00043a 0ef0 MOVLW 0xf0 RXB0SIDH= (BYTE)(cm.ident>>3); F:\MCP\projects\CAN\canToSerial\Source\CAN.c00043c cfdb MOVFF 0xfdb,0x000043e f000000440 0ef1 MOVLW 0xf1000442 cfdb MOVFF 0xfdb,0x1000444 f001000446 0ef2 MOVLW 0xf2000448 cfdb MOVFF 0xfdb,0x200044a f00200044c 0ef3 MOVLW 0xf300044e cfdb MOVFF 0xfdb,0x3000450 f003000452 0e03 MOVLW 0x3000454 90d8 BCF 0xd8,0x0,0x0000456 3203 RRCF 0x3,0x1,0x0000458 3202 RRCF 0x2,0x1,0x000045a 3201 RRCF 0x1,0x1,0x000045c 3200 RRCF 0x0,0x1,0x000045e 06e8 DECF 0xe8,0x1,0x0000460 e1f9 BNZ 0x454000462 5000 MOVF 0x0,0x0,0x0000464 6e61 MOVWF 0x61,0x0000466 0ef0 MOVLW 0xf0 RXB0SIDL= ((BYTE)(cm.ident<<5) & 0xE0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c000468 cfdb MOVFF 0xfdb,0x000046a f00000046c 0ef1 MOVLW 0xf100046e cfdb MOVFF 0xfdb,0x1000470 f001000472 0ef2 MOVLW 0xf2000474 cfdb MOVFF 0xfdb,0x2000476 f002000478 0ef3 MOVLW 0xf300047a cfdb MOVFF 0xfdb,0x300047c f00300047e 0e05 MOVLW 0x5000480 0b1f ANDLW 0x1f000482 e007 BZ 0x492000484 90d8 BCF 0xd8,0x0,0x0000486 3600 RLCF 0x0,0x1,0x0000488 3601 RLCF 0x1,0x1,0x000048a 3602 RLCF 0x2,0x1,0x000048c 3603 RLCF 0x3,0x1,0x000048e 06e8 DECF 0xe8,0x1,0x0000490 e1f9 BNZ 0x484000492 0ee0 MOVLW 0xe0000494 1400 ANDWF 0x0,0x0,0x0000496 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.c000498 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00049a 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canToSerial\Source\CAN.c00049c 50db MOVF 0xdb,0x0,0x000049e 0808 SUBLW 0x80004a0 e203 BC 0x4a80004a2 0e08 MOVLW 0x80004a4 6e65 MOVWF 0x65,0x00004a6 d003 BRA 0x4ae0004a8 0ef6 MOVLW 0xf60004aa 50db MOVF 0xdb,0x0,0x00004ac 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Remote request F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004ae 0ef5 MOVLW 0xf5 if (cm.remote_request==TRUE) F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b0 04db DECF 0xdb,0x0,0x00004b2 e102 BNZ 0x4b8{ F:\MCP\projects\CAN\canToSerial\Source\CAN.c_asm F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004b4 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.c0004b6 d001 BRA 0x4ba 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.c0004b8 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.c0004ba 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004bc 50db MOVF 0xdb,0x0,0x00004be 6e66 MOVWF 0x66,0x00004c0 0ef8 MOVLW 0xf80004c2 50db MOVF 0xdb,0x0,0x00004c4 6e67 MOVWF 0x67,0x00004c6 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004c8 50db MOVF 0xdb,0x0,0x00004ca 6e68 MOVWF 0x68,0x00004cc 0efa MOVLW 0xfa0004ce 50db MOVF 0xdb,0x0,0x00004d0 6e69 MOVWF 0x69,0x00004d2 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004d4 50db MOVF 0xdb,0x0,0x00004d6 6e6a MOVWF 0x6a,0x00004d8 0efc MOVLW 0xfc0004da 50db MOVF 0xdb,0x0,0x00004dc 6e6b MOVWF 0x6b,0x00004de 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004e0 50db MOVF 0xdb,0x0,0x00004e2 6e6c MOVWF 0x6c,0x00004e4 0efe MOVLW 0xfe0004e6 50db MOVF 0xdb,0x0,0x00004e8 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// set extended or not F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004ea 0ef4 MOVLW 0xf4 RXB0SIDLbits.EXID=(cm.extended==TRUE?1:0); F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004ec 04db DECF 0xdb,0x0,0x00004ee e102 BNZ 0x4f40004f0 0e01 MOVLW 0x10004f2 d001 BRA 0x4f60004f4 0e00 MOVLW 0x00004f6 b0e8 BTFSC 0xe8,0x0,0x00004f8 8662 BSF 0x62,0x3,0x00004fa a0e8 BTFSS 0xe8,0x0,0x00004fc 9662 BCF 0x62,0x3,0x0F:\MCP\projects\CAN\canToSerial\Source\CAN.c// Priority F:\MCP\projects\CAN\canToSerial\Source\CAN.c0004fe 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000500 cfdb MOVFF 0xfdb,0xfe6000502 ffe6000504 0efc MOVLW 0xfc000506 1460 ANDWF 0x60,0x0,0x0000508 52e5 MOVF 0xe5,0x1,0x000050a 10e7 IORWF 0xe7,0x0,0x000050c 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.c00050e 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.c000510 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canToSerial\Source\CAN.c000512 d000 BRA 0x514F:\MCP\projects\CAN\canToSerial\Source\CAN.c000514 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\CAN.c000516 cfe7 MOVFF 0xfe7,0xfd9000518 ffd900051a 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: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canToSerial/Source/Main.c $ F:\MCP\projects\CAN\canToSerial\Source\Main.c* Last changed: $LastChangedDate: 2006-11-14 21:22:17 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canToSerial\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canToSerial\Source\Main.c* Revision: $Revision: 97 $ 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.c00051c d874 RCALL 0x606 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.c00051e ec22 CALL 0x44,0x0 canInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000520 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.c000522 eca7 CALL 0x94e,0x0 uartInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000524 f004#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c000526 ec7d CALL 0xafa,0x0 tickInit(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000528 f005F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00052a d7ff BRA 0x52a 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.c00052c 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.c00052e cfd8 MOVFF 0xfd8,0xfe4 void HighISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c000530 ffe4000532 cfe0 MOVFF 0xfe0,0xfe4000534 ffe4000536 6ee4 MOVWF 0xe4,0x0000538 cfda MOVFF 0xfda,0xfe400053a ffe400053c cfe2 MOVFF 0xfe2,0xfda00053e ffda000540 cfe9 MOVFF 0xfe9,0xfe4000542 ffe4000544 cfea MOVFF 0xfea,0xfe4000546 ffe4000548 cff6 MOVFF 0xff6,0xfe400054a ffe400054c cff7 MOVFF 0xff7,0xfe400054e ffe4000550 cff5 MOVFF 0xff5,0xfe4000552 ffe4000554 cff3 MOVFF 0xff3,0xfe4000556 ffe4000558 cff4 MOVFF 0xff4,0xfe400055a ffe400055c cffa MOVFF 0xffa,0xfe400055e ffe4000560 ee00 LFSR 0x0,0x14000562 f014000564 0e0b MOVLW 0xb000566 04e8 DECF 0xe8,0x0,0x0000568 e303 BNC 0x57000056a cfee MOVFF 0xfee,0xfe400056c ffe400056e d7fb BRA 0x566000570 ee00 LFSR 0x0,0x0000572 f000000574 0e14 MOVLW 0x14000576 04e8 DECF 0xe8,0x0,0x0000578 e303 BNC 0x58000057a cfee MOVFF 0xfee,0xfe400057c ffe400057e d7fb BRA 0x576000580 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.c000582 ec13 CALL 0xa26,0x0 uartISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000584 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.c000586 ec42 CALL 0x84,0x0 canISR(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000588 f000#endif F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c00058a ec91 CALL 0xb22,0x0 tickUpdate(); F:\MCP\projects\CAN\canToSerial\Source\Main.c00058c f00500058e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c000590 ee00 LFSR 0x0,0x13000592 f013000594 0e14 MOVLW 0x14000596 04e8 DECF 0xe8,0x0,0x0000598 e303 BNC 0x5a000059a cfe5 MOVFF 0xfe5,0xfed00059c ffed00059e d7fb BRA 0x5960005a0 ee00 LFSR 0x0,0x1e0005a2 f01e0005a4 0e0b MOVLW 0xb0005a6 04e8 DECF 0xe8,0x0,0x00005a8 e303 BNC 0x5b00005aa cfe5 MOVFF 0xfe5,0xfed0005ac ffed0005ae d7fb BRA 0x5a60005b0 cfe5 MOVFF 0xfe5,0xffa0005b2 fffa0005b4 cfe5 MOVFF 0xfe5,0xff40005b6 fff40005b8 cfe5 MOVFF 0xfe5,0xff30005ba fff30005bc cfe5 MOVFF 0xfe5,0xff50005be fff50005c0 cfe5 MOVFF 0xfe5,0xff70005c2 fff70005c4 cfe5 MOVFF 0xfe5,0xff60005c6 fff60005c8 cfe5 MOVFF 0xfe5,0xfea0005ca ffea0005cc cfe5 MOVFF 0xfe5,0xfe90005ce ffe90005d0 cfe5 MOVFF 0xfe5,0xfda0005d2 ffda0005d4 50e5 MOVF 0xe5,0x0,0x00005d6 cfe5 MOVFF 0xfe5,0xfe00005d8 ffe00005da cfe5 MOVFF 0xfe5,0xfd80005dc ffd80005de 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 ef97 GOTO 0x52e _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.c0005e0 cfd8 MOVFF 0xfd8,0xfe4 void LowISR(void) F:\MCP\projects\CAN\canToSerial\Source\Main.c0005e2 ffe40005e4 cfe0 MOVFF 0xfe0,0xfe40005e6 ffe40005e8 6ee4 MOVWF 0xe4,0x00005ea cfda MOVFF 0xfda,0xfe40005ec ffe40005ee cfe2 MOVFF 0xfe2,0xfda0005f0 ffda0005f2 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0005f4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canToSerial\Source\Main.c0005f6 cfe5 MOVFF 0xfe5,0xfda0005f8 ffda0005fa 50e5 MOVF 0xe5,0x0,0x00005fc cfe5 MOVFF 0xfe5,0xfe00005fe ffe0000600 cfe5 MOVFF 0xfe5,0xfd8000602 ffd8000604 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 eff0 GOTO 0x5e0 _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.c000606 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.c000608 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.c00060a 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canToSerial\Source\Main.c00060c 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.c00060e 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.c000610 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.c000612 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canToSerial\Source\Main.c000614 ffe6000616 cfe1 MOVFF 0xfe1,0xfd9000618 ffd900061a 0e02 MOVLW 0x200061c 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00061e 6ade CLRF 0xde,0x0 int i=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000620 6add CLRF 0xdd,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c000622 0efd MOVLW 0xfd uartPutc(UART_START_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c000624 6ee6 MOVWF 0xe6,0x0000626 ecb6 CALL 0x96c,0x0000628 f00400062a 52e5 MOVF 0xe5,0x1,0x000062c 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00062e cfdb MOVFF 0xfdb,0xfe6000630 ffe6000632 ecb6 CALL 0x96c,0x0000634 f004000636 52e5 MOVF 0xe5,0x1,0x0000638 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00063a cfdb MOVFF 0xfdb,0x000063c f00000063e 0ef1 MOVLW 0xf1000640 cfdb MOVFF 0xfdb,0x1000642 f001000644 0ef2 MOVLW 0xf2000646 cfdb MOVFF 0xfdb,0x2000648 f00200064a 0ef3 MOVLW 0xf300064c cfdb MOVFF 0xfdb,0x300064e f003000650 0e08 MOVLW 0x8000652 90d8 BCF 0xd8,0x0,0x0000654 3203 RRCF 0x3,0x1,0x0000656 3202 RRCF 0x2,0x1,0x0000658 3201 RRCF 0x1,0x1,0x000065a 3200 RRCF 0x0,0x1,0x000065c 06e8 DECF 0xe8,0x1,0x000065e e1f9 BNZ 0x652000660 5000 MOVF 0x0,0x0,0x0000662 6ee6 MOVWF 0xe6,0x0000664 ecb6 CALL 0x96c,0x0000666 f004000668 52e5 MOVF 0xe5,0x1,0x000066a 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>16)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00066c cfdb MOVFF 0xfdb,0x000066e f000000670 0ef1 MOVLW 0xf1000672 cfdb MOVFF 0xfdb,0x1000674 f001000676 0ef2 MOVLW 0xf2000678 cfdb MOVFF 0xfdb,0x200067a f00200067c 0ef3 MOVLW 0xf300067e cfdb MOVFF 0xfdb,0x3000680 f003000682 0e10 MOVLW 0x10000684 90d8 BCF 0xd8,0x0,0x0000686 3203 RRCF 0x3,0x1,0x0000688 3202 RRCF 0x2,0x1,0x000068a 3201 RRCF 0x1,0x1,0x000068c 3200 RRCF 0x0,0x1,0x000068e 06e8 DECF 0xe8,0x1,0x0000690 e1f9 BNZ 0x684000692 5000 MOVF 0x0,0x0,0x0000694 6ee6 MOVWF 0xe6,0x0000696 ecb6 CALL 0x96c,0x0000698 f00400069a 52e5 MOVF 0xe5,0x1,0x000069c 0ef0 MOVLW 0xf0 uartPutc((BYTE)(cm.ident>>24)); F:\MCP\projects\CAN\canToSerial\Source\Main.c00069e cfdb MOVFF 0xfdb,0x00006a0 f0000006a2 0ef1 MOVLW 0xf10006a4 cfdb MOVFF 0xfdb,0x10006a6 f0010006a8 0ef2 MOVLW 0xf20006aa cfdb MOVFF 0xfdb,0x20006ac f0020006ae 0ef3 MOVLW 0xf30006b0 cfdb MOVFF 0xfdb,0x30006b2 f0030006b4 0e18 MOVLW 0x180006b6 90d8 BCF 0xd8,0x0,0x00006b8 3203 RRCF 0x3,0x1,0x00006ba 3202 RRCF 0x2,0x1,0x00006bc 3201 RRCF 0x1,0x1,0x00006be 3200 RRCF 0x0,0x1,0x00006c0 06e8 DECF 0xe8,0x1,0x00006c2 e1f9 BNZ 0x6b60006c4 5000 MOVF 0x0,0x0,0x00006c6 6ee6 MOVWF 0xe6,0x00006c8 ecb6 CALL 0x96c,0x00006ca f0040006cc 52e5 MOVF 0xe5,0x1,0x00006ce 0ef4 MOVLW 0xf4 uartPutc(cm.extended); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006d0 cfdb MOVFF 0xfdb,0xfe60006d2 ffe60006d4 ecb6 CALL 0x96c,0x00006d6 f0040006d8 52e5 MOVF 0xe5,0x1,0x00006da 0ef5 MOVLW 0xf5 uartPutc(cm.remote_request); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006dc cfdb MOVFF 0xfdb,0xfe60006de ffe60006e0 ecb6 CALL 0x96c,0x00006e2 f0040006e4 52e5 MOVF 0xe5,0x1,0x00006e6 0ef6 MOVLW 0xf6 uartPutc(cm.data_length); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006e8 cfdb MOVFF 0xfdb,0xfe60006ea ffe60006ec ecb6 CALL 0x96c,0x00006ee f0040006f0 52e5 MOVF 0xe5,0x1,0x00006f2 6ade CLRF 0xde,0x0 for(i=0;i<8;i++) uartPutc(cm.data[i]); F:\MCP\projects\CAN\canToSerial\Source\Main.c0006f4 6add CLRF 0xdd,0x00006f6 cfde MOVFF 0xfde,0x00006f8 f0000006fa cfdd MOVFF 0xfdd,0x10006fc f0010006fe 90d8 BCF 0xd8,0x0,0x0000700 5001 MOVF 0x1,0x0,0x0000702 e604 BN 0x70c000704 0e08 MOVLW 0x8000706 5c00 SUBWF 0x0,0x0,0x0000708 0e00 MOVLW 0x000070a 5801 SUBWFB 0x1,0x0,0x000070c e216 BC 0x73a00070e 50d9 MOVF 0xd9,0x0,0x0000710 0ff7 ADDLW 0xf7000712 6e00 MOVWF 0x0,0x0000714 0eff MOVLW 0xff000716 20da ADDWFC 0xda,0x0,0x0000718 6e01 MOVWF 0x1,0x000071a 50de MOVF 0xde,0x0,0x000071c 2400 ADDWF 0x0,0x0,0x000071e 6ee9 MOVWF 0xe9,0x0000720 50dd MOVF 0xdd,0x0,0x0000722 2001 ADDWFC 0x1,0x0,0x0000724 6eea MOVWF 0xea,0x0000726 50ef MOVF 0xef,0x0,0x0000728 6ee6 MOVWF 0xe6,0x000072a ecb6 CALL 0x96c,0x000072c f00400072e 52e5 MOVF 0xe5,0x1,0x0000730 2adf INCF 0xdf,0x1,0x0000732 0e01 MOVLW 0x1000734 e301 BNC 0x738000736 2adb INCF 0xdb,0x1,0x0000738 d7de BRA 0x6f600073a 0efa MOVLW 0xfa uartPutc(UART_END_BYTE); F:\MCP\projects\CAN\canToSerial\Source\Main.c00073c 6ee6 MOVWF 0xe6,0x000073e ecb6 CALL 0x96c,0x0000740 f004000742 52e5 MOVF 0xe5,0x1,0x0F:\MCP\projects\CAN\canToSerial\Source\Main.c000744 0e02 MOVLW 0x2 } F:\MCP\projects\CAN\canToSerial\Source\Main.c000746 5ce1 SUBWF 0xe1,0x0,0x0000748 e202 BC 0x74e00074a 6ae1 CLRF 0xe1,0x000074c 52e5 MOVF 0xe5,0x1,0x000074e 6ee1 MOVWF 0xe1,0x0000750 52e5 MOVF 0xe5,0x1,0x0000752 cfe7 MOVFF 0xfe7,0xfd9000754 ffd9000756 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.c000758 cfd9 MOVFF 0xfd9,0xfe6 void uartParse(BYTE c) F:\MCP\projects\CAN\canToSerial\Source\Main.c00075a ffe600075c cfe1 MOVFF 0xfe1,0xfd900075e ffd9000760 0e12 MOVLW 0x12000762 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canToSerial\Source\Main.cBYTE i; F:\MCP\projects\CAN\canToSerial\Source\Main.c000764 0e01 MOVLW 0x1 unsigned int wait = 0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000766 6adb CLRF 0xdb,0x0000768 0e02 MOVLW 0x200076a 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.c00076c 0100 MOVLB 0x0 if (waitingMessage==TRUE && (tickGet()-timeout)>TICK_SECOND/20) F:\MCP\projects\CAN\canToSerial\Source\Main.c00076e 056e DECF 0x6e,0x0,0x1000770 e11a BNZ 0x7a6000772 ec87 CALL 0xb0e,0x0000774 f005000776 0100 MOVLB 0x0000778 516f MOVF 0x6f,0x0,0x100077a 5c18 SUBWF 0x18,0x0,0x000077c 6e00 MOVWF 0x0,0x000077e 5170 MOVF 0x70,0x0,0x1000780 5819 SUBWFB 0x19,0x0,0x0000782 6e01 MOVWF 0x1,0x0000784 5171 MOVF 0x71,0x0,0x1000786 581a SUBWFB 0x1a,0x0,0x0000788 6e02 MOVWF 0x2,0x000078a 5172 MOVF 0x72,0x0,0x100078c 581b SUBWFB 0x1b,0x0,0x000078e 6e03 MOVWF 0x3,0x0000790 80d8 BSF 0xd8,0x0,0x0000792 0e05 MOVLW 0x5000794 5400 SUBFWB 0x0,0x0,0x0000796 0e00 MOVLW 0x0000798 5401 SUBFWB 0x1,0x0,0x000079a 0e00 MOVLW 0x000079c 5402 SUBFWB 0x2,0x0,0x000079e 0e00 MOVLW 0x00007a0 5403 SUBFWB 0x3,0x0,0x00007a2 e201 BC 0x7a6{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007a4 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.c0007a6 056e DECF 0x6e,0x0,0x1 if (waitingMessage==TRUE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007a8 e001 BZ 0x7ac0007aa d0a5 BRA 0x8f6{ F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c0007ac ec87 CALL 0xb0e,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c0007ae f0050007b0 c018 MOVFF 0x18,0x6f0007b2 f06f0007b4 c019 MOVFF 0x19,0x700007b6 f0700007b8 c01a MOVFF 0x1a,0x710007ba f0710007bc c01b MOVFF 0x1b,0x720007be f072F:\MCP\projects\CAN\canToSerial\Source\Main.cF:\MCP\projects\CAN\canToSerial\Source\Main.c// UART END F:\MCP\projects\CAN\canToSerial\Source\Main.c0007c0 0e0f MOVLW 0xf if(count>=15) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007c2 0100 MOVLB 0x00007c4 5d73 SUBWF 0x73,0x0,0x10007c6 e33b BNC 0x83e{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007c8 0efe MOVLW 0xfe if (c==UART_END_BYTE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0007ca 50db MOVF 0xdb,0x0,0x00007cc 6e00 MOVWF 0x0,0x00007ce 6a01 CLRF 0x1,0x00007d0 0efa MOVLW 0xfa0007d2 1800 XORWF 0x0,0x0,0x00007d4 e101 BNZ 0x7d80007d6 5001 MOVF 0x1,0x0,0x00007d8 e12f BNZ 0x838{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0007da 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.c0007dc 0e03 MOVLW 0x3 while(!canSendMessage(cm,PRIO_HIGEST)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0007de 6ee6 MOVWF 0xe6,0x00007e0 50d9 MOVF 0xd9,0x0,0x00007e2 0f03 ADDLW 0x30007e4 6ee9 MOVWF 0xe9,0x00007e6 cfda MOVFF 0xfda,0xfea0007e8 ffea0007ea cfee MOVFF 0xfee,0xfe60007ec ffe60007ee cfee MOVFF 0xfee,0xfe60007f0 ffe60007f2 cfee MOVFF 0xfee,0xfe60007f4 ffe60007f6 cfee MOVFF 0xfee,0xfe60007f8 ffe60007fa cfee MOVFF 0xfee,0xfe60007fc ffe60007fe cfee MOVFF 0xfee,0xfe6000800 ffe6000802 cfee MOVFF 0xfee,0xfe6000804 ffe6000806 cfee MOVFF 0xfee,0xfe6000808 ffe600080a cfee MOVFF 0xfee,0xfe600080c ffe600080e cfee MOVFF 0xfee,0xfe6000810 ffe6000812 cfee MOVFF 0xfee,0xfe6000814 ffe6000816 cfee MOVFF 0xfee,0xfe6000818 ffe600081a cfee MOVFF 0xfee,0xfe600081c ffe600081e cfee MOVFF 0xfee,0xfe6000820 ffe6000822 cfee MOVFF 0xfee,0xfe6000824 ffe6000826 ec8a CALL 0x314,0x0000828 f00100082a 6e00 MOVWF 0x0,0x000082c 0e10 MOVLW 0x1000082e 5ee1 SUBWF 0xe1,0x1,0x0000830 5000 MOVF 0x0,0x0,0x0000832 0900 IORLW 0x0000834 e101 BNZ 0x838000836 d7d2 BRA 0x7dc} F:\MCP\projects\CAN\canToSerial\Source\Main.c000838 0100 MOVLB 0x0 waitingMessage=FALSE; F:\MCP\projects\CAN\canToSerial\Source\Main.c00083a 6b6e CLRF 0x6e,0x100083c d07e BRA 0x93a 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.c00083e 0e07 MOVLW 0x7 if(count>=7) F:\MCP\projects\CAN\canToSerial\Source\Main.c000840 5d73 SUBWF 0x73,0x0,0x1000842 e313 BNC 0x86a{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000844 50d9 MOVF 0xd9,0x0,0x0 cm.data[count-7]=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000846 0f0a ADDLW 0xa000848 6e00 MOVWF 0x0,0x000084a cfda MOVFF 0xfda,0x100084c f00100084e 0e07 MOVLW 0x7000850 5d73 SUBWF 0x73,0x0,0x1000852 010f MOVLB 0xf000854 2400 ADDWF 0x0,0x0,0x0000856 6ee9 MOVWF 0xe9,0x0000858 0e00 MOVLW 0x000085a 2001 ADDWFC 0x1,0x0,0x000085c 6eea MOVWF 0xea,0x000085e 0efe MOVLW 0xfe000860 cfdb MOVFF 0xfdb,0xfef000862 ffef000864 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000866 2b73 INCF 0x73,0x1,0x1000868 d068 BRA 0x93a 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.c00086a 0e06 MOVLW 0x6 if(count>=6) F:\MCP\projects\CAN\canToSerial\Source\Main.c00086c 5d73 SUBWF 0x73,0x0,0x100086e e308 BNC 0x880{ F:\MCP\projects\CAN\canToSerial\Source\Main.c000870 0efe MOVLW 0xfe cm.data_length=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000872 50db MOVF 0xdb,0x0,0x0000874 6ee7 MOVWF 0xe7,0x0000876 0e09 MOVLW 0x9000878 cfe7 MOVFF 0xfe7,0xfdb00087a ffdb00087c 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c00087e d05d BRA 0x93a 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.c000880 0e05 MOVLW 0x5 if(count>=5) 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.remote_request=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c000888 50db MOVF 0xdb,0x0,0x000088a 6ee7 MOVWF 0xe7,0x000088c 0e08 MOVLW 0x800088e cfe7 MOVFF 0xfe7,0xfdb000890 ffdb000892 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c000894 d052 BRA 0x93a 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.c000896 0e04 MOVLW 0x4 if(count>=4) 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.extended=c; F:\MCP\projects\CAN\canToSerial\Source\Main.c00089e 50db MOVF 0xdb,0x0,0x00008a0 6ee7 MOVWF 0xe7,0x00008a2 0e07 MOVLW 0x70008a4 cfe7 MOVFF 0xfe7,0xfdb0008a6 ffdb0008a8 2b73 INCF 0x73,0x1,0x1 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008aa d047 BRA 0x93a 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.c0008ac 0e00 MOVLW 0x0 if(count>=0) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008ae 5d73 SUBWF 0x73,0x0,0x10008b0 e322 BNC 0x8f6{ F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b2 0efe MOVLW 0xfe cm.ident+=((DWORD)c<<(count*8)); F:\MCP\projects\CAN\canToSerial\Source\Main.c0008b4 cfdb MOVFF 0xfdb,0x00008b6 f0000008b8 6a01 CLRF 0x1,0x00008ba 6a02 CLRF 0x2,0x00008bc 6a03 CLRF 0x3,0x00008be 0e08 MOVLW 0x80008c0 0373 MULWF 0x73,0x10008c2 50f3 MOVF 0xf3,0x0,0x00008c4 0b1f ANDLW 0x1f0008c6 e007 BZ 0x8d60008c8 90d8 BCF 0xd8,0x0,0x00008ca 3600 RLCF 0x0,0x1,0x00008cc 3601 RLCF 0x1,0x1,0x00008ce 3602 RLCF 0x2,0x1,0x00008d0 3603 RLCF 0x3,0x1,0x00008d2 06e8 DECF 0xe8,0x1,0x00008d4 e1f9 BNZ 0x8c80008d6 50d9 MOVF 0xd9,0x0,0x00008d8 0f03 ADDLW 0x30008da 6ee9 MOVWF 0xe9,0x00008dc cfda MOVFF 0xfda,0xfea0008de ffea0008e0 5000 MOVF 0x0,0x0,0x00008e2 26ee ADDWF 0xee,0x1,0x00008e4 5001 MOVF 0x1,0x0,0x00008e6 22ee ADDWFC 0xee,0x1,0x00008e8 5002 MOVF 0x2,0x0,0x00008ea 22ee ADDWFC 0xee,0x1,0x00008ec 5003 MOVF 0x3,0x0,0x00008ee 22ee ADDWFC 0xee,0x1,0x00008f0 0100 MOVLB 0x0 count++; F:\MCP\projects\CAN\canToSerial\Source\Main.c0008f2 2b73 INCF 0x73,0x1,0x10008f4 d022 BRA 0x93a 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.c0008f6 0efe MOVLW 0xfe if (c==UART_START_BYTE && waitingMessage==FALSE) F:\MCP\projects\CAN\canToSerial\Source\Main.c0008f8 50db MOVF 0xdb,0x0,0x00008fa 6e00 MOVWF 0x0,0x00008fc 6a01 CLRF 0x1,0x00008fe 0efd MOVLW 0xfd000900 1800 XORWF 0x0,0x0,0x0000902 e101 BNZ 0x906000904 5001 MOVF 0x1,0x0,0x0000906 e119 BNZ 0x93a000908 516e MOVF 0x6e,0x0,0x100090a e117 BNZ 0x93a{ F:\MCP\projects\CAN\canToSerial\Source\Main.c00090c 0e01 MOVLW 0x1 waitingMessage=TRUE; F:\MCP\projects\CAN\canToSerial\Source\Main.c00090e 6f6e MOVWF 0x6e,0x1000910 ec87 CALL 0xb0e,0x0 timeout=tickGet(); F:\MCP\projects\CAN\canToSerial\Source\Main.c000912 f005000914 c018 MOVFF 0x18,0x6f000916 f06f000918 c019 MOVFF 0x19,0x7000091a f07000091c c01a MOVFF 0x1a,0x7100091e f071000920 c01b MOVFF 0x1b,0x72000922 f072000924 0100 MOVLB 0x0 count=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c000926 6b73 CLRF 0x73,0x1000928 0e03 MOVLW 0x3 cm.ident=0; F:\MCP\projects\CAN\canToSerial\Source\Main.c00092a 6adb CLRF 0xdb,0x000092c 0e04 MOVLW 0x400092e 6adb CLRF 0xdb,0x0000930 0e05 MOVLW 0x5000932 6adb CLRF 0xdb,0x0000934 0e06 MOVLW 0x6000936 6adb CLRF 0xdb,0x0000938 d000 BRA 0x93a 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.c00093a 0e12 MOVLW 0x12 } F:\MCP\projects\CAN\canToSerial\Source\Main.c00093c 5ce1 SUBWF 0xe1,0x0,0x000093e e202 BC 0x944000940 6ae1 CLRF 0xe1,0x0000942 52e5 MOVF 0xe5,0x1,0x0000944 6ee1 MOVWF 0xe1,0x0000946 52e5 MOVF 0xe5,0x1,0x0000948 cfe7 MOVFF 0xfe7,0xfd900094a ffd900094c 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: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canToSerial/Source/Tick.c $ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Last changed: $LastChangedDate: 2006-11-14 21:22:17 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canToSerial\Source\Tick.c* Revision: $Revision: 97 $ 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.c000afa 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000afc 6ed6 MOVWF 0xd6,0x0000afe 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b00 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.c000b02 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b04 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b06 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.cF:\MCP\projects\CAN\canToSerial\Source\Tick.c000b08 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b0a 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b0c 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.c000b0e c074 MOVFF 0x74,0x18 return TickCount; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b10 f018000b12 c075 MOVFF 0x75,0x19000b14 f019000b16 c076 MOVFF 0x76,0x1a000b18 f01a000b1a c077 MOVFF 0x77,0x1b000b1c f01b000b1e d000 BRA 0xb20000b20 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.c000b22 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b24 d00b BRA 0xb3c{ F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b26 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b28 6ed7 MOVWF 0xd7,0x0000b2a 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b2c 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b2e 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b30 2b74 INCF 0x74,0x1,0x1000b32 0e00 MOVLW 0x0000b34 2375 ADDWFC 0x75,0x1,0x1000b36 2376 ADDWFC 0x76,0x1,0x1000b38 2377 ADDWFC 0x77,0x1,0x1F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b3a 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canToSerial\Source\Tick.c} F:\MCP\projects\CAN\canToSerial\Source\Tick.c000b3c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canToSerial\Source\Tick.c