Rev 137 | Blame | 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 21 10:26:09 2006Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* CAN module F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/CAN.c $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Last changed: $LastChangedDate: 2006-11-14 21:11:28 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 95 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#ifdef USE_CAN F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c0014e4 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c0014e6 6e6f MOVWF 0x6f,0x00014e8 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c0014ea 146e ANDWF 0x6e,0x0,0x00014ec 0880 SUBLW 0x800014ee e001 BZ 0x14f20014f0 d7fb BRA 0x14e8F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0014f2 6a70 CLRF 0x70,0x0 BRGCON1=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c0014f4 9e70 BCF 0x70,0x7,0x0 BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c0014f6 8c70 BSF 0x70,0x6,0x0 BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canBase\Source\CAN.c0014f8 0e04 MOVLW 0x4 BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.c0014fa 1070 IORWF 0x70,0x0,0x00014fc 6e70 MOVWF 0x70,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c0014fe 8e71 BSF 0x71,0x7,0x0 BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001500 9a71 BCF 0x71,0x5,0x0 BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001502 9871 BCF 0x71,0x4,0x0 BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001504 8671 BSF 0x71,0x3,0x0 BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001506 9471 BCF 0x71,0x2,0x0 BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001508 9271 BCF 0x71,0x1,0x0 BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00150a 8071 BSF 0x71,0x0,0x0 BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canBase\Source\CAN.c00150c 9e72 BCF 0x72,0x7,0x0 BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canBase\Source\CAN.c00150e 9c72 BCF 0x72,0x6,0x0 BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c001510 9472 BCF 0x72,0x2,0x0 BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001512 9272 BCF 0x72,0x1,0x0 BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001514 8072 BSF 0x72,0x0,0x0 BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001516 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001518 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00151a 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; // 1 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBase\Source\CAN.c00151c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00151e 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001520 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001522 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001524 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001526 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001528 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00152a 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00152c 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canBase\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canBase\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.c#else F:\MCP\projects\CAN\canBase\Source\CAN.c00152e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001530 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001532 146e ANDWF 0x6e,0x0,0x0001534 e001 BZ 0x1538001536 d7fc BRA 0x1530#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001538 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c00153a 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c00153c 0b02 ANDLW 0x200153e e106 BNZ 0x154c001540 50a4 MOVF 0xa4,0x0,0x0001542 0b02 ANDLW 0x2001544 e103 BNZ 0x154c001546 50a4 MOVF 0xa4,0x0,0x0001548 0b01 ANDLW 0x100154a e016 BZ 0x1578{ F:\MCP\projects\CAN\canBase\Source\CAN.c00154c 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c00154e 146f ANDWF 0x6f,0x0,0x0001550 0910 IORLW 0x10001552 6e00 MOVWF 0x0,0x0001554 0e00 MOVLW 0x0001556 1477 ANDWF 0x77,0x0,0x0001558 1000 IORWF 0x0,0x0,0x000155a 6e77 MOVWF 0x77,0x000155c be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c00155e d80d RCALL 0x157aF:\MCP\projects\CAN\canBase\Source\CAN.c001560 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001562 d002 BRA 0x1568001564 92a4 BCF 0xa4,0x1,0x0001566 d008 BRA 0x1578001568 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c00156a d002 BRA 0x157000156c 92a4 BCF 0xa4,0x1,0x000156e d004 BRA 0x1578001570 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001572 d002 BRA 0x1578001574 90a4 BCF 0xa4,0x0,0x0001576 d000 BRA 0x1578} F:\MCP\projects\CAN\canBase\Source\CAN.c001578 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c00157a cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c00157c ffe600157e cfe1 MOVFF 0xfe1,0xfd9001580 ffd9001582 0e0f MOVLW 0xf001584 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001586 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c001588 1461 ANDWF 0x61,0x0,0x000158a 38e8 SWAPF 0xe8,0x0,0x000158c 0b0f ANDLW 0xf00158e 6edf MOVWF 0xdf,0x0001590 0e0f MOVLW 0xf cm.funcc=(((WORD)(RXB0SIDH & 0x0F))<<6)+(((WORD)(RXB0SIDL & 0xE0))>>2)+(((WORD)(RXB0SIDL & 0x03))<<1)+(((WORD)(RXB0EIDH & 0x80))>>7); F:\MCP\projects\CAN\canBase\Source\CAN.c001592 1461 ANDWF 0x61,0x0,0x0001594 6e06 MOVWF 0x6,0x0001596 6a07 CLRF 0x7,0x0001598 0e06 MOVLW 0x600159a 90d8 BCF 0xd8,0x0,0x000159c 3606 RLCF 0x6,0x1,0x000159e 3607 RLCF 0x7,0x1,0x00015a0 04e8 DECF 0xe8,0x0,0x00015a2 e1fb BNZ 0x159a0015a4 0ee0 MOVLW 0xe00015a6 1462 ANDWF 0x62,0x0,0x00015a8 6e08 MOVWF 0x8,0x00015aa 6a09 CLRF 0x9,0x00015ac 90d8 BCF 0xd8,0x0,0x00015ae 3209 RRCF 0x9,0x1,0x00015b0 3208 RRCF 0x8,0x1,0x00015b2 90d8 BCF 0xd8,0x0,0x00015b4 3209 RRCF 0x9,0x1,0x00015b6 3208 RRCF 0x8,0x1,0x00015b8 5006 MOVF 0x6,0x0,0x00015ba 2408 ADDWF 0x8,0x0,0x00015bc 6e04 MOVWF 0x4,0x00015be 5007 MOVF 0x7,0x0,0x00015c0 2009 ADDWFC 0x9,0x0,0x00015c2 6e05 MOVWF 0x5,0x00015c4 0e03 MOVLW 0x30015c6 1462 ANDWF 0x62,0x0,0x00015c8 6e0a MOVWF 0xa,0x00015ca 6a0b CLRF 0xb,0x00015cc 90d8 BCF 0xd8,0x0,0x00015ce 360a RLCF 0xa,0x1,0x00015d0 360b RLCF 0xb,0x1,0x00015d2 5004 MOVF 0x4,0x0,0x00015d4 240a ADDWF 0xa,0x0,0x00015d6 6e02 MOVWF 0x2,0x00015d8 5005 MOVF 0x5,0x0,0x00015da 200b ADDWFC 0xb,0x0,0x00015dc 6e03 MOVWF 0x3,0x00015de 0e80 MOVLW 0x800015e0 1463 ANDWF 0x63,0x0,0x00015e2 6e0c MOVWF 0xc,0x00015e4 6a0d CLRF 0xd,0x00015e6 0e07 MOVLW 0x70015e8 90d8 BCF 0xd8,0x0,0x00015ea 320d RRCF 0xd,0x1,0x00015ec 320c RRCF 0xc,0x1,0x00015ee 04e8 DECF 0xe8,0x0,0x00015f0 e1fb BNZ 0x15e80015f2 5002 MOVF 0x2,0x0,0x00015f4 240c ADDWF 0xc,0x0,0x00015f6 6e00 MOVWF 0x0,0x00015f8 5003 MOVF 0x3,0x0,0x00015fa 200d ADDWFC 0xd,0x0,0x00015fc 6e01 MOVWF 0x1,0x00015fe 0e01 MOVLW 0x1001600 c000 MOVFF 0x0,0xfdb001602 ffdb001604 0e02 MOVLW 0x2001606 c001 MOVFF 0x1,0xfdb001608 ffdb00160a 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c00160c 1463 ANDWF 0x63,0x0,0x000160e 40e8 RRNCF 0xe8,0x0,0x0001610 0b7f ANDLW 0x7f001612 6ee7 MOVWF 0xe7,0x0001614 0e03 MOVLW 0x3001616 cfe7 MOVFF 0xfe7,0xfdb001618 ffdb00161a 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c00161c 1463 ANDWF 0x63,0x0,0x000161e 6e02 MOVWF 0x2,0x0001620 c002 MOVFF 0x2,0x3001622 f003001624 6a02 CLRF 0x2,0x0001626 5064 MOVF 0x64,0x0,0x0001628 0100 MOVLB 0x000162a 2402 ADDWF 0x2,0x0,0x000162c 6e00 MOVWF 0x0,0x000162e 0e00 MOVLW 0x0001630 2003 ADDWFC 0x3,0x0,0x0001632 6e01 MOVWF 0x1,0x0001634 0e04 MOVLW 0x4001636 c000 MOVFF 0x0,0xfdb001638 ffdb00163a 0e05 MOVLW 0x500163c c001 MOVFF 0x1,0xfdb00163e ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001640 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBase\Source\CAN.c001642 0b01 ANDLW 0x1001644 6e02 MOVWF 0x2,0x0001646 5065 MOVF 0x65,0x0,0x0001648 0b02 ANDLW 0x200164a e001 BZ 0x164e00164c 0e01 MOVLW 0x100164e 24e8 ADDWF 0xe8,0x0,0x0001650 6e01 MOVWF 0x1,0x0001652 5065 MOVF 0x65,0x0,0x0001654 0b04 ANDLW 0x4001656 e001 BZ 0x165a001658 0e01 MOVLW 0x100165a 0d04 MULLW 0x400165c cff3 MOVFF 0xff3,0x000165e f000001660 5065 MOVF 0x65,0x0,0x0001662 0b08 ANDLW 0x8001664 e001 BZ 0x1668001666 0e01 MOVLW 0x1001668 0d08 MULLW 0x800166a 50f3 MOVF 0xf3,0x0,0x000166c 2400 ADDWF 0x0,0x0,0x000166e 2401 ADDWF 0x1,0x0,0x0001670 2402 ADDWF 0x2,0x0,0x0001672 6ee7 MOVWF 0xe7,0x0001674 0e06 MOVLW 0x6001676 cfe7 MOVFF 0xfe7,0xfdb001678 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c00167a 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c00167c cf66 MOVFF 0xf66,0xfdb00167e ffdb001680 0e08 MOVLW 0x8001682 cf67 MOVFF 0xf67,0xfdb001684 ffdb001686 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c001688 cf68 MOVFF 0xf68,0xfdb00168a ffdb00168c 0e0a MOVLW 0xa00168e cf69 MOVFF 0xf69,0xfdb001690 ffdb001692 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c001694 cf6a MOVFF 0xf6a,0xfdb001696 ffdb001698 0e0c MOVLW 0xc00169a cf6b MOVFF 0xf6b,0xfdb00169c ffdb00169e 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c0016a0 cf6c MOVFF 0xf6c,0xfdb0016a2 ffdb0016a4 0e0e MOVLW 0xe0016a6 cf6d MOVFF 0xf6d,0xfdb0016a8 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c0016aa 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0016ae ffe90016b0 cfda MOVFF 0xfda,0xfea0016b2 ffea0016b4 cfee MOVFF 0xfee,0xfe60016b6 ffe60016b8 cfee MOVFF 0xfee,0xfe60016ba ffe60016bc cfee MOVFF 0xfee,0xfe60016be ffe60016c0 cfee MOVFF 0xfee,0xfe60016c2 ffe60016c4 cfee MOVFF 0xfee,0xfe60016c6 ffe60016c8 cfee MOVFF 0xfee,0xfe60016ca ffe60016cc cfee MOVFF 0xfee,0xfe60016ce ffe60016d0 cfee MOVFF 0xfee,0xfe60016d2 ffe60016d4 cfee MOVFF 0xfee,0xfe60016d6 ffe60016d8 cfee MOVFF 0xfee,0xfe60016da ffe60016dc cfee MOVFF 0xfee,0xfe60016de ffe60016e0 cfee MOVFF 0xfee,0xfe60016e2 ffe60016e4 cfee MOVFF 0xfee,0xfe60016e6 ffe60016e8 cfee MOVFF 0xfee,0xfe60016ea ffe60016ec cfee MOVFF 0xfee,0xfe60016ee ffe60016f0 ecab CALL 0x1356,0x00016f2 f0090016f4 6e00 MOVWF 0x0,0x00016f6 0e0f MOVLW 0xf0016f8 5ee1 SUBWF 0xe1,0x1,0x00016fa 5000 MOVF 0x0,0x0,0x00016fc 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c0016fe 5ce1 SUBWF 0xe1,0x0,0x0001700 e202 BC 0x1706001702 6ae1 CLRF 0xe1,0x0001704 52e5 MOVF 0xe5,0x1,0x0001706 6ee1 MOVWF 0xe1,0x0001708 52e5 MOVF 0xe5,0x1,0x000170a cfe7 MOVFF 0xfe7,0xfd900170c ffd900170e 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c001710 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c001712 ffe6001714 cfe1 MOVFF 0xfe1,0xfd9001716 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001718 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c00171a b740 BTFSC 0x40,0x3,0x100171c d004 BRA 0x172600171e 0e00 MOVLW 0x0001720 1477 ANDWF 0x77,0x0,0x0001722 0903 IORLW 0x3001724 6e77 MOVWF 0x77,0x0001726 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001728 b730 BTFSC 0x30,0x3,0x100172a d004 BRA 0x173400172c 0e00 MOVLW 0x000172e 1477 ANDWF 0x77,0x0,0x0001730 0904 IORLW 0x4001732 6e77 MOVWF 0x77,0x0001734 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001736 b720 BTFSC 0x20,0x3,0x1001738 d005 BRA 0x174400173a 0e00 MOVLW 0x000173c 1477 ANDWF 0x77,0x0,0x000173e 0905 IORLW 0x5001740 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001742 d002 BRA 0x1748 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001744 0e00 MOVLW 0x0001746 d0b0 BRA 0x18a8F:\MCP\projects\CAN\canBase\Source\CAN.c001748 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00174a cfdb MOVFF 0xfdb,0x000174c f00000174e 3400 RLCF 0x0,0x0,0x0001750 e20e BC 0x176e001752 0eef MOVLW 0xef001754 cfdb MOVFF 0xfdb,0x1001756 f001001758 0e03 MOVLW 0x300175a 6ee7 MOVWF 0xe7,0x000175c 1801 XORWF 0x1,0x0,0x000175e aee8 BTFSS 0xe8,0x7,0x0001760 d002 BRA 0x1766001762 3401 RLCF 0x1,0x0,0x0001764 d003 BRA 0x176c001766 50e7 MOVF 0xe7,0x0,0x0001768 80d8 BSF 0xd8,0x0,0x000176a 5401 SUBFWB 0x1,0x0,0x000176c e202 BC 0x177200176e 0eef MOVLW 0xef001770 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001772 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c001774 cfdb MOVFF 0xfdb,0x0001776 f000001778 0ef2 MOVLW 0xf200177a cfdb MOVFF 0xfdb,0x100177c f00100177e 0ec0 MOVLW 0xc0001780 1600 ANDWF 0x0,0x1,0x0001782 0e03 MOVLW 0x3001784 1601 ANDWF 0x1,0x1,0x0001786 0e06 MOVLW 0x6001788 90d8 BCF 0xd8,0x0,0x000178a 3201 RRCF 0x1,0x1,0x000178c 3200 RRCF 0x0,0x1,0x000178e 04e8 DECF 0xe8,0x0,0x0001790 e1fb BNZ 0x1788001792 0ef0 MOVLW 0xf0001794 50db MOVF 0xdb,0x0,0x0001796 0b0f ANDLW 0xf001798 0d10 MULLW 0x1000179a 50f3 MOVF 0xf3,0x0,0x000179c 2400 ADDWF 0x0,0x0,0x000179e 6e61 MOVWF 0x61,0x00017a0 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0017a2 6ee7 MOVWF 0xe7,0x00017a4 0ef1 MOVLW 0xf10017a6 cfdb MOVFF 0xfdb,0x20017a8 f0020017aa 0ef2 MOVLW 0xf20017ac cfdb MOVFF 0xfdb,0x30017ae f0030017b0 50e7 MOVF 0xe7,0x0,0x00017b2 1602 ANDWF 0x2,0x1,0x00017b4 6a03 CLRF 0x3,0x00017b6 90d8 BCF 0xd8,0x0,0x00017b8 3203 RRCF 0x3,0x1,0x00017ba 3202 RRCF 0x2,0x1,0x00017bc 0e3f MOVLW 0x3f0017be 6ee7 MOVWF 0xe7,0x00017c0 0ef1 MOVLW 0xf10017c2 cfdb MOVFF 0xfdb,0x00017c4 f0000017c6 0ef2 MOVLW 0xf20017c8 cfdb MOVFF 0xfdb,0x10017ca f0010017cc 50e7 MOVF 0xe7,0x0,0x00017ce 1600 ANDWF 0x0,0x1,0x00017d0 6a01 CLRF 0x1,0x00017d2 90d8 BCF 0xd8,0x0,0x00017d4 3600 RLCF 0x0,0x1,0x00017d6 3601 RLCF 0x1,0x1,0x00017d8 90d8 BCF 0xd8,0x0,0x00017da 3600 RLCF 0x0,0x1,0x00017dc 3601 RLCF 0x1,0x1,0x00017de 5000 MOVF 0x0,0x0,0x00017e0 2402 ADDWF 0x2,0x0,0x00017e2 6e62 MOVWF 0x62,0x00017e4 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c0017e6 cfdb MOVFF 0xfdb,0x20017e8 f0020017ea 0ef5 MOVLW 0xf50017ec cfdb MOVFF 0xfdb,0x30017ee f0030017f0 0e00 MOVLW 0x00017f2 1602 ANDWF 0x2,0x1,0x00017f4 0e01 MOVLW 0x10017f6 1603 ANDWF 0x3,0x1,0x00017f8 c003 MOVFF 0x3,0x20017fa f0020017fc 6a03 CLRF 0x3,0x00017fe 0e01 MOVLW 0x1001800 6ee7 MOVWF 0xe7,0x0001802 0ef1 MOVLW 0xf1001804 cfdb MOVFF 0xfdb,0x0001806 f000001808 0ef2 MOVLW 0xf200180a cfdb MOVFF 0xfdb,0x100180c f00100180e 50e7 MOVF 0xe7,0x0,0x0001810 1600 ANDWF 0x0,0x1,0x0001812 6a01 CLRF 0x1,0x0001814 0e07 MOVLW 0x7001816 90d8 BCF 0xd8,0x0,0x0001818 3600 RLCF 0x0,0x1,0x000181a 3601 RLCF 0x1,0x1,0x000181c 04e8 DECF 0xe8,0x0,0x000181e e1fb BNZ 0x1816001820 0ef3 MOVLW 0xf3001822 50db MOVF 0xdb,0x0,0x0001824 0b3f ANDLW 0x3f001826 24e8 ADDWF 0xe8,0x0,0x0001828 2400 ADDWF 0x0,0x0,0x000182a 2402 ADDWF 0x2,0x0,0x000182c 6e63 MOVWF 0x63,0x000182e 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001830 6ee7 MOVWF 0xe7,0x0001832 0ef4 MOVLW 0xf4001834 cfdb MOVFF 0xfdb,0x0001836 f000001838 0ef5 MOVLW 0xf500183a cfdb MOVFF 0xfdb,0x100183c f00100183e 50e7 MOVF 0xe7,0x0,0x0001840 1600 ANDWF 0x0,0x1,0x0001842 6a01 CLRF 0x1,0x0001844 5000 MOVF 0x0,0x0,0x0001846 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c001848 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00184a 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00184c 50db MOVF 0xdb,0x0,0x000184e 0808 SUBLW 0x8001850 e203 BC 0x1858001852 0e08 MOVLW 0x8001854 6e65 MOVWF 0x65,0x0001856 d003 BRA 0x185e001858 0ef6 MOVLW 0xf600185a 50db MOVF 0xdb,0x0,0x000185c 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// NOT Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c00185e 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001860 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001862 50db MOVF 0xdb,0x0,0x0001864 6e66 MOVWF 0x66,0x0001866 0ef8 MOVLW 0xf8001868 50db MOVF 0xdb,0x0,0x000186a 6e67 MOVWF 0x67,0x000186c 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c00186e 50db MOVF 0xdb,0x0,0x0001870 6e68 MOVWF 0x68,0x0001872 0efa MOVLW 0xfa001874 50db MOVF 0xdb,0x0,0x0001876 6e69 MOVWF 0x69,0x0001878 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c00187a 50db MOVF 0xdb,0x0,0x000187c 6e6a MOVWF 0x6a,0x000187e 0efc MOVLW 0xfc001880 50db MOVF 0xdb,0x0,0x0001882 6e6b MOVWF 0x6b,0x0001884 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c001886 50db MOVF 0xdb,0x0,0x0001888 6e6c MOVWF 0x6c,0x000188a 0efe MOVLW 0xfe00188c 50db MOVF 0xdb,0x0,0x000188e 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c001890 8662 BSF 0x62,0x3,0x0 RXB0SIDLbits.EXID=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Priority F:\MCP\projects\CAN\canBase\Source\CAN.c001892 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c001894 cfdb MOVFF 0xfdb,0xfe6001896 ffe6001898 0efc MOVLW 0xfc00189a 1460 ANDWF 0x60,0x0,0x000189c 52e5 MOVF 0xe5,0x1,0x000189e 10e7 IORWF 0xe7,0x0,0x00018a0 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c0018a2 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0018a4 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0018a6 d000 BRA 0x18a8F:\MCP\projects\CAN\canBase\Source\CAN.c0018a8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0018aa cfe7 MOVFF 0xfe7,0xfd90018ac ffd90018ae 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#endif //USE_CAN F:\MCP\projects\CAN\canBase\Source\CAN.c/********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Ticker module service F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Tick.c $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Last changed: $LastChangedDate: 2006-11-14 10:55:38 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Tick.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Revision: $Revision: 86 $ F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canBase\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canBase\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canBase\Source\Tick.c#else F:\MCP\projects\CAN\canBase\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001c1c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001c1e 6ed6 MOVWF 0xd6,0x0001c20 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001c22 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canBase\Source\Tick.c001c24 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001c26 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001c28 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001c2a 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001c2c 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001c2e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001c30 c079 MOVFF 0x79,0x12 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001c32 f012001c34 c07a MOVFF 0x7a,0x13001c36 f013001c38 c07b MOVFF 0x7b,0x14001c3a f014001c3c c07c MOVFF 0x7c,0x15001c3e f015001c40 d000 BRA 0x1c42001c42 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001c44 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001c46 d00b BRA 0x1c5e{ F:\MCP\projects\CAN\canBase\Source\Tick.c001c48 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001c4a 6ed7 MOVWF 0xd7,0x0001c4c 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001c4e 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001c50 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001c52 2b79 INCF 0x79,0x1,0x1001c54 0e00 MOVLW 0x0001c56 237a ADDWFC 0x7a,0x1,0x1001c58 237b ADDWFC 0x7b,0x1,0x1001c5a 237c ADDWFC 0x7c,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001c5c 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001c5e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canLCD\Source\Main.c* F:\MCP\projects\CAN\canLCD\Source\Main.c* Main application F:\MCP\projects\CAN\canLCD\Source\Main.c* F:\MCP\projects\CAN\canLCD\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canLCD\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canLCD/Source/Main.c $ F:\MCP\projects\CAN\canLCD\Source\Main.c* Last changed: $LastChangedDate: 2006-11-20 17:54:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\canLCD\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canLCD\Source\Main.c* Revision: $Revision: 129 $ F:\MCP\projects\CAN\canLCD\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canLCD\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canLCD\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canLCD\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canLCD\Source\Main.c#include <EEaccess.h> F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#ifdef USE_LCD F:\MCP\projects\CAN\canLCD\Source\Main.c#include "lcd.h" F:\MCP\projects\CAN\canLCD\Source\Main.c#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canLCD\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canLCD\Source\Main.c#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canLCD\Source\Main.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001044 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canLCD\Source\Main.c001046 ffe6001048 cfe1 MOVFF 0xfe1,0xfd900104a ffd900104c 0e0f MOVLW 0xf00104e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canLCD\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canLCD\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c// Inits F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001050 d97d RCALL 0x134c mainInit(); F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canLCD\Source\Main.c001052 ec72 CALL 0x14e4,0x0 canInit(); F:\MCP\projects\CAN\canLCD\Source\Main.c001054 f00a#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#ifdef USE_LCD F:\MCP\projects\CAN\canLCD\Source\Main.c001056 ec2c CALL 0x1a58,0x0 lcdInit(); F:\MCP\projects\CAN\canLCD\Source\Main.c001058 f00d00105a ecbb CALL 0x1976,0x0 lcdClear(); F:\MCP\projects\CAN\canLCD\Source\Main.c00105c f00c00105e 0ec2 MOVLW 0xc2 lcdPutrs("Welcome!"); F:\MCP\projects\CAN\canLCD\Source\Main.c001060 6ee6 MOVWF 0xe6,0x0001062 0e1c MOVLW 0x1c001064 6ee6 MOVWF 0xe6,0x0001066 ecee CALL 0x19dc,0x0001068 f00c00106a 52e5 MOVF 0xe5,0x1,0x000106c 52e5 MOVF 0xe5,0x1,0x0#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c00106e ec0e CALL 0x1c1c,0x0 tickInit(); F:\MCP\projects\CAN\canLCD\Source\Main.c001070 f00eF:\MCP\projects\CAN\canLCD\Source\Main.c// Read ID and NID if exist. F:\MCP\projects\CAN\canLCD\Source\Main.c001072 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canLCD\Source\Main.c001074 6ee6 MOVWF 0xe6,0x0001076 6ae6 CLRF 0xe6,0x0001078 ec69 CALL 0x1ad2,0x000107a f00d00107c 52e5 MOVF 0xe5,0x1,0x000107e 52e5 MOVF 0xe5,0x1,0x0001080 082a SUBLW 0x2a001082 e12b BNZ 0x10da{ F:\MCP\projects\CAN\canLCD\Source\Main.c001084 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canLCD\Source\Main.c001086 6ee6 MOVWF 0xe6,0x0001088 6ae6 CLRF 0xe6,0x000108a ec69 CALL 0x1ad2,0x000108c f00d00108e 52e5 MOVF 0xe5,0x1,0x0001090 52e5 MOVF 0xe5,0x1,0x0001092 6e00 MOVWF 0x0,0x0001094 c000 MOVFF 0x0,0x1001096 f001001098 6a00 CLRF 0x0,0x000109a c000 MOVFF 0x0,0xfe600109c ffe600109e c001 MOVFF 0x1,0xfe60010a0 ffe60010a2 0e02 MOVLW 0x20010a4 6ee6 MOVWF 0xe6,0x00010a6 6ae6 CLRF 0xe6,0x00010a8 ec69 CALL 0x1ad2,0x00010aa f00d0010ac 52e5 MOVF 0xe5,0x1,0x00010ae 52e5 MOVF 0xe5,0x1,0x00010b0 52e5 MOVF 0xe5,0x1,0x00010b2 cfe7 MOVFF 0xfe7,0x10010b4 f0010010b6 52e5 MOVF 0xe5,0x1,0x00010b8 cfe7 MOVFF 0xfe7,0x00010ba f0000010bc 0100 MOVLB 0x00010be 2400 ADDWF 0x0,0x0,0x00010c0 6f60 MOVWF 0x60,0x10010c2 0e00 MOVLW 0x00010c4 2001 ADDWFC 0x1,0x0,0x00010c6 6f61 MOVWF 0x61,0x10010c8 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canLCD\Source\Main.c0010ca 6ee6 MOVWF 0xe6,0x00010cc 6ae6 CLRF 0xe6,0x00010ce ec69 CALL 0x1ad2,0x00010d0 f00d0010d2 52e5 MOVF 0xe5,0x1,0x00010d4 52e5 MOVF 0xe5,0x1,0x00010d6 0100 MOVLB 0x00010d8 6f62 MOVWF 0x62,0x1} F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c// Send user program startup heatbeat F:\MCP\projects\CAN\canLCD\Source\Main.c0010da 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canLCD\Source\Main.c0010dc 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canLCD\Source\Main.c0010de 6ef3 MOVWF 0xf3,0x00010e0 0e01 MOVLW 0x10010e2 cff3 MOVFF 0xff3,0xfdb0010e4 ffdb0010e6 0e02 MOVLW 0x20010e8 6adb CLRF 0xdb,0x00010ea 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canLCD\Source\Main.c0010ec c062 MOVFF 0x62,0xfdb0010ee ffdb0010f0 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canLCD\Source\Main.c0010f2 c060 MOVFF 0x60,0xfdb0010f4 ffdb0010f6 0e05 MOVLW 0x50010f8 c061 MOVFF 0x61,0xfdb0010fa ffdb0010fc 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canLCD\Source\Main.c0010fe 6ef3 MOVWF 0xf3,0x0001100 0e06 MOVLW 0x6001102 cff3 MOVFF 0xff3,0xfdb001104 ffdb001106 0e01 MOVLW 0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canLCD\Source\Main.c001108 6ef3 MOVWF 0xf3,0x000110a 0e07 MOVLW 0x700110c cff3 MOVFF 0xff3,0xfdb00110e ffdb001110 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canLCD\Source\Main.c001112 6ee6 MOVWF 0xe6,0x0001114 cfd9 MOVFF 0xfd9,0xfe9001116 ffe9001118 cfda MOVFF 0xfda,0xfea00111a ffea00111c cfee MOVFF 0xfee,0xfe600111e ffe6001120 cfee MOVFF 0xfee,0xfe6001122 ffe6001124 cfee MOVFF 0xfee,0xfe6001126 ffe6001128 cfee MOVFF 0xfee,0xfe600112a ffe600112c cfee MOVFF 0xfee,0xfe600112e ffe6001130 cfee MOVFF 0xfee,0xfe6001132 ffe6001134 cfee MOVFF 0xfee,0xfe6001136 ffe6001138 cfee MOVFF 0xfee,0xfe600113a ffe600113c cfee MOVFF 0xfee,0xfe600113e ffe6001140 cfee MOVFF 0xfee,0xfe6001142 ffe6001144 cfee MOVFF 0xfee,0xfe6001146 ffe6001148 cfee MOVFF 0xfee,0xfe600114a ffe600114c cfee MOVFF 0xfee,0xfe600114e ffe6001150 cfee MOVFF 0xfee,0xfe6001152 ffe6001154 cfee MOVFF 0xfee,0xfe6001156 ffe6001158 ec88 CALL 0x1710,0x000115a f00b00115c 6e00 MOVWF 0x0,0x000115e 0e10 MOVLW 0x10001160 5ee1 SUBWF 0xe1,0x1,0x0001162 5000 MOVF 0x0,0x0,0x0001164 0900 IORLW 0x0001166 e101 BNZ 0x116a001168 d7d3 BRA 0x1110F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001288 d770 BRA 0x116a while(1) F:\MCP\projects\CAN\canLCD\Source\Main.c{ F:\MCP\projects\CAN\canLCD\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canLCD\Source\Main.cstatic TICK heartbeat = 0; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c00116a ec18 CALL 0x1c30,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canLCD\Source\Main.c00116c f00e00116e 0100 MOVLB 0x0001170 516b MOVF 0x6b,0x0,0x1001172 5c12 SUBWF 0x12,0x0,0x0001174 6e00 MOVWF 0x0,0x0001176 516c MOVF 0x6c,0x0,0x1001178 5813 SUBWFB 0x13,0x0,0x000117a 6e01 MOVWF 0x1,0x000117c 516d MOVF 0x6d,0x0,0x100117e 5814 SUBWFB 0x14,0x0,0x0001180 6e02 MOVWF 0x2,0x0001182 516e MOVF 0x6e,0x0,0x1001184 5815 SUBWFB 0x15,0x0,0x0001186 6e03 MOVWF 0x3,0x0001188 80d8 BSF 0xd8,0x0,0x000118a 0ef4 MOVLW 0xf400118c 5400 SUBFWB 0x0,0x0,0x000118e 0e01 MOVLW 0x1001190 5401 SUBFWB 0x1,0x0,0x0001192 0e00 MOVLW 0x0001194 5402 SUBFWB 0x2,0x0,0x0001196 0e00 MOVLW 0x0001198 5403 SUBFWB 0x3,0x0,0x000119a e252 BC 0x1240{ F:\MCP\projects\CAN\canLCD\Source\Main.c// Send alive heartbeat F:\MCP\projects\CAN\canLCD\Source\Main.c00119c 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canLCD\Source\Main.c00119e 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canLCD\Source\Main.c0011a0 6ef3 MOVWF 0xf3,0x00011a2 0e01 MOVLW 0x10011a4 cff3 MOVFF 0xff3,0xfdb0011a6 ffdb0011a8 0e02 MOVLW 0x20011aa 6adb CLRF 0xdb,0x00011ac 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canLCD\Source\Main.c0011ae c062 MOVFF 0x62,0xfdb0011b0 ffdb0011b2 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canLCD\Source\Main.c0011b4 c060 MOVFF 0x60,0xfdb0011b6 ffdb0011b8 0e05 MOVLW 0x50011ba c061 MOVFF 0x61,0xfdb0011bc ffdb0011be 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canLCD\Source\Main.c0011c0 6ef3 MOVWF 0xf3,0x00011c2 0e06 MOVLW 0x60011c4 cff3 MOVFF 0xff3,0xfdb0011c6 ffdb0011c8 0e02 MOVLW 0x2 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canLCD\Source\Main.c0011ca 6ef3 MOVWF 0xf3,0x00011cc 0e07 MOVLW 0x70011ce cff3 MOVFF 0xff3,0xfdb0011d0 ffdb0011d2 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canLCD\Source\Main.c0011d4 6ee6 MOVWF 0xe6,0x00011d6 cfd9 MOVFF 0xfd9,0xfe90011d8 ffe90011da cfda MOVFF 0xfda,0xfea0011dc ffea0011de cfee MOVFF 0xfee,0xfe60011e0 ffe60011e2 cfee MOVFF 0xfee,0xfe60011e4 ffe60011e6 cfee MOVFF 0xfee,0xfe60011e8 ffe60011ea cfee MOVFF 0xfee,0xfe60011ec ffe60011ee cfee MOVFF 0xfee,0xfe60011f0 ffe60011f2 cfee MOVFF 0xfee,0xfe60011f4 ffe60011f6 cfee MOVFF 0xfee,0xfe60011f8 ffe60011fa cfee MOVFF 0xfee,0xfe60011fc ffe60011fe cfee MOVFF 0xfee,0xfe6001200 ffe6001202 cfee MOVFF 0xfee,0xfe6001204 ffe6001206 cfee MOVFF 0xfee,0xfe6001208 ffe600120a cfee MOVFF 0xfee,0xfe600120c ffe600120e cfee MOVFF 0xfee,0xfe6001210 ffe6001212 cfee MOVFF 0xfee,0xfe6001214 ffe6001216 cfee MOVFF 0xfee,0xfe6001218 ffe600121a ec88 CALL 0x1710,0x000121c f00b00121e 6e00 MOVWF 0x0,0x0001220 0e10 MOVLW 0x10001222 5ee1 SUBWF 0xe1,0x1,0x0001224 5000 MOVF 0x0,0x0,0x0001226 0900 IORLW 0x0001228 e101 BNZ 0x122c00122a d7d3 BRA 0x11d2F:\MCP\projects\CAN\canLCD\Source\Main.c00122c ec18 CALL 0x1c30,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canLCD\Source\Main.c00122e f00e001230 c012 MOVFF 0x12,0x6b001232 f06b001234 c013 MOVFF 0x13,0x6c001236 f06c001238 c014 MOVFF 0x14,0x6d00123a f06d00123c c015 MOVFF 0x15,0x6e00123e f06e} F:\MCP\projects\CAN\canLCD\Source\Main.c001240 ec18 CALL 0x1c30,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canLCD\Source\Main.c001242 f00e001244 0100 MOVLB 0x0001246 5167 MOVF 0x67,0x0,0x1001248 5c12 SUBWF 0x12,0x0,0x000124a 6e00 MOVWF 0x0,0x000124c 5168 MOVF 0x68,0x0,0x100124e 5813 SUBWFB 0x13,0x0,0x0001250 6e01 MOVWF 0x1,0x0001252 5169 MOVF 0x69,0x0,0x1001254 5814 SUBWFB 0x14,0x0,0x0001256 6e02 MOVWF 0x2,0x0001258 516a MOVF 0x6a,0x0,0x100125a 5815 SUBWFB 0x15,0x0,0x000125c 6e03 MOVWF 0x3,0x000125e 80d8 BSF 0xd8,0x0,0x0001260 0e64 MOVLW 0x64001262 5400 SUBFWB 0x0,0x0,0x0001264 0e00 MOVLW 0x0001266 5401 SUBFWB 0x1,0x0,0x0001268 0e00 MOVLW 0x000126a 5402 SUBFWB 0x2,0x0,0x000126c 0e00 MOVLW 0x000126e 5403 SUBFWB 0x3,0x0,0x0001270 e20b BC 0x1288{ F:\MCP\projects\CAN\canLCD\Source\Main.c001272 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canLCD\Source\Main.c001274 ec18 CALL 0x1c30,0x0 t = tickGet(); F:\MCP\projects\CAN\canLCD\Source\Main.c001276 f00e001278 c012 MOVFF 0x12,0x6700127a f06700127c c013 MOVFF 0x13,0x6800127e f068001280 c014 MOVFF 0x14,0x69001282 f069001284 c015 MOVFF 0x15,0x6a001286 f06a} F:\MCP\projects\CAN\canLCD\Source\Main.c} F:\MCP\projects\CAN\canLCD\Source\Main.c00128a 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canLCD\Source\Main.c00128c 5ce1 SUBWF 0xe1,0x0,0x000128e e202 BC 0x1294001290 6ae1 CLRF 0xe1,0x0001292 52e5 MOVF 0xe5,0x1,0x0001294 6ee1 MOVWF 0xe1,0x0001296 52e5 MOVF 0xe5,0x1,0x0001298 cfe7 MOVFF 0xfe7,0xfd900129a ffd900129c 0012 RETURN 0x0F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canLCD\Source\Main.c00129e cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canLCD\Source\Main.c0012a0 ffe40012a2 cfe2 MOVFF 0xfe2,0xfda0012a4 ffda0012a6 cfe9 MOVFF 0xfe9,0xfe40012a8 ffe40012aa cfea MOVFF 0xfea,0xfe40012ac ffe40012ae cff6 MOVFF 0xff6,0xfe40012b0 ffe40012b2 cff7 MOVFF 0xff7,0xfe40012b4 ffe40012b6 cff5 MOVFF 0xff5,0xfe40012b8 ffe40012ba cff3 MOVFF 0xff3,0xfe40012bc ffe40012be cff4 MOVFF 0xff4,0xfe40012c0 ffe40012c2 cffa MOVFF 0xffa,0xfe40012c4 ffe40012c6 ee00 LFSR 0x0,0xe0012c8 f00e0012ca 0e0b MOVLW 0xb0012cc 04e8 DECF 0xe8,0x0,0x00012ce e303 BNC 0x12d60012d0 cfee MOVFF 0xfee,0xfe40012d2 ffe40012d4 d7fb BRA 0x12cc0012d6 ee00 LFSR 0x0,0x00012d8 f0000012da 0e0e MOVLW 0xe0012dc 04e8 DECF 0xe8,0x0,0x00012de e303 BNC 0x12e60012e0 cfee MOVFF 0xfee,0xfe40012e2 ffe40012e4 d7fb BRA 0x12dc0012e6 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canLCD\Source\Main.c0012e8 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canLCD\Source\Main.c0012ea ec9d CALL 0x153a,0x0 canISR(); F:\MCP\projects\CAN\canLCD\Source\Main.c0012ec f00a#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c0012ee ec22 CALL 0x1c44,0x0 tickUpdate(); F:\MCP\projects\CAN\canLCD\Source\Main.c0012f0 f00eF:\MCP\projects\CAN\canLCD\Source\Main.c0012f2 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\Main.c0012f4 ee00 LFSR 0x0,0xd0012f6 f00d0012f8 0e0e MOVLW 0xe0012fa 04e8 DECF 0xe8,0x0,0x00012fc e303 BNC 0x13040012fe cfe5 MOVFF 0xfe5,0xfed001300 ffed001302 d7fb BRA 0x12fa001304 ee00 LFSR 0x0,0x18001306 f018001308 0e0b MOVLW 0xb00130a 04e8 DECF 0xe8,0x0,0x000130c e303 BNC 0x131400130e cfe5 MOVFF 0xfe5,0xfed001310 ffed001312 d7fb BRA 0x130a001314 cfe5 MOVFF 0xfe5,0xffa001316 fffa001318 cfe5 MOVFF 0xfe5,0xff400131a fff400131c cfe5 MOVFF 0xfe5,0xff300131e fff3001320 cfe5 MOVFF 0xfe5,0xff5001322 fff5001324 cfe5 MOVFF 0xfe5,0xff7001326 fff7001328 cfe5 MOVFF 0xfe5,0xff600132a fff600132c cfe5 MOVFF 0xfe5,0xfea00132e ffea001330 cfe5 MOVFF 0xfe5,0xfe9001332 ffe9001334 cfe5 MOVFF 0xfe5,0xfda001336 ffda001338 0011 RETFIE 0x1F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canLCD\Source\Main.c00133a cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canLCD\Source\Main.c00133c ffe400133e cfe2 MOVFF 0xfe2,0xfda001340 ffda001342 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001344 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\Main.c001346 cfe5 MOVFF 0xfe5,0xfda001348 ffda00134a 0011 RETFIE 0x1F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c/* F:\MCP\projects\CAN\canLCD\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canLCD\Source\Main.c* F:\MCP\projects\CAN\canLCD\Source\Main.c* Input: none F:\MCP\projects\CAN\canLCD\Source\Main.c* Output: none F:\MCP\projects\CAN\canLCD\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canLCD\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\Main.c*/ F:\MCP\projects\CAN\canLCD\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canLCD\Source\Main.c{ F:\MCP\projects\CAN\canLCD\Source\Main.c00134c 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canLCD\Source\Main.c00134e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canLCD\Source\Main.c001350 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canLCD\Source\Main.c001352 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001354 0012 RETURN 0x0 } F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c/* F:\MCP\projects\CAN\canLCD\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canLCD\Source\Main.c* F:\MCP\projects\CAN\canLCD\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canLCD\Source\Main.c* Output: none F:\MCP\projects\CAN\canLCD\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canLCD\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canLCD\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\Main.c*/ F:\MCP\projects\CAN\canLCD\Source\Main.c#ifdef USE_CAN F:\MCP\projects\CAN\canLCD\Source\Main.c001356 cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canLCD\Source\Main.c001358 ffe600135a cfe1 MOVFF 0xfe1,0xfd900135c ffd900135e 0e0f MOVLW 0xf001360 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canLCD\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001362 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c001364 0ef0 MOVLW 0xf0 switch(cm.funct) F:\MCP\projects\CAN\canLCD\Source\Main.c001366 50db MOVF 0xdb,0x0,0x0001368 e001 BZ 0x136c00136a d0b2 BRA 0x14d0{ F:\MCP\projects\CAN\canLCD\Source\Main.ccase FUNCT_BOOTLOADER: F:\MCP\projects\CAN\canLCD\Source\Main.c00136c 0ef3 MOVLW 0xf3 if (cm.nid==MY_NID && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID) F:\MCP\projects\CAN\canLCD\Source\Main.c00136e 50db MOVF 0xdb,0x0,0x0001370 0100 MOVLB 0x0001372 5d62 SUBWF 0x62,0x0,0x1001374 e001 BZ 0x1378001376 d0ab BRA 0x14ce001378 0efc MOVLW 0xfc00137a cfdb MOVFF 0xfdb,0x200137c f00200137e c002 MOVFF 0x2,0x3001380 f003001382 6a02 CLRF 0x2,0x0001384 0efb MOVLW 0xfb001386 50db MOVF 0xdb,0x0,0x0001388 0100 MOVLB 0x000138a 2402 ADDWF 0x2,0x0,0x000138c 6e00 MOVWF 0x0,0x000138e 0e00 MOVLW 0x0001390 2003 ADDWFC 0x3,0x0,0x0001392 6e01 MOVWF 0x1,0x0001394 0100 MOVLB 0x0001396 5160 MOVF 0x60,0x0,0x1001398 1800 XORWF 0x0,0x0,0x000139a e102 BNZ 0x13a000139c 5161 MOVF 0x61,0x0,0x100139e 1801 XORWF 0x1,0x0,0x00013a0 e001 BZ 0x13a40013a2 d095 BRA 0x14ce{ F:\MCP\projects\CAN\canLCD\Source\Main.c0013a4 0ef1 MOVLW 0xf1 switch(cm.funcc) F:\MCP\projects\CAN\canLCD\Source\Main.c0013a6 cfdb MOVFF 0xfdb,0x140013a8 f0140013aa 0ef2 MOVLW 0xf20013ac cfdb MOVFF 0xfdb,0x150013ae f0150013b0 0e06 MOVLW 0x60013b2 1814 XORWF 0x14,0x0,0x00013b4 e101 BNZ 0x13b80013b6 5015 MOVF 0x15,0x0,0x00013b8 e008 BZ 0x13ca0013ba 0e01 MOVLW 0x10013bc 1814 XORWF 0x14,0x0,0x00013be e101 BNZ 0x13c20013c0 5015 MOVF 0x15,0x0,0x00013c2 e001 BZ 0x13c60013c4 d084 BRA 0x14ce{ F:\MCP\projects\CAN\canLCD\Source\Main.c0013c6 00ff RESET case FUNCC_BOOT_INIT: Reset(); break; //User whant to program me, reset me. F:\MCP\projects\CAN\canLCD\Source\Main.c0013c8 d082 BRA 0x14cecase FUNCC_BOOT_SET_ID: F:\MCP\projects\CAN\canLCD\Source\Main.c// Change my ID and NID F:\MCP\projects\CAN\canLCD\Source\Main.c0013ca 0ef8 MOVLW 0xf8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; F:\MCP\projects\CAN\canLCD\Source\Main.c0013cc cfdb MOVFF 0xfdb,0x00013ce f0000013d0 c000 MOVFF 0x0,0x10013d2 f0010013d4 6a00 CLRF 0x0,0x00013d6 0ef7 MOVLW 0xf70013d8 50db MOVF 0xdb,0x0,0x00013da 0100 MOVLB 0x00013dc 2400 ADDWF 0x0,0x0,0x00013de 6f60 MOVWF 0x60,0x10013e0 0e00 MOVLW 0x00013e2 2001 ADDWFC 0x1,0x0,0x00013e4 6f61 MOVWF 0x61,0x10013e6 0ef9 MOVLW 0xf9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canLCD\Source\Main.c0013e8 cfdb MOVFF 0xfdb,0x620013ea f0620013ec 0ef8 MOVLW 0xf8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canLCD\Source\Main.c0013ee cfdb MOVFF 0xfdb,0xfe60013f0 ffe60013f2 0e01 MOVLW 0x10013f4 6ee6 MOVWF 0xe6,0x00013f6 6ae6 CLRF 0xe6,0x00013f8 ec8e CALL 0x1b1c,0x00013fa f00d0013fc 52e5 MOVF 0xe5,0x1,0x00013fe 52e5 MOVF 0xe5,0x1,0x0001400 52e5 MOVF 0xe5,0x1,0x0001402 0ef7 MOVLW 0xf7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canLCD\Source\Main.c001404 cfdb MOVFF 0xfdb,0xfe6001406 ffe6001408 0e02 MOVLW 0x200140a 6ee6 MOVWF 0xe6,0x000140c 6ae6 CLRF 0xe6,0x000140e ec8e CALL 0x1b1c,0x0001410 f00d001412 52e5 MOVF 0xe5,0x1,0x0001414 52e5 MOVF 0xe5,0x1,0x0001416 52e5 MOVF 0xe5,0x1,0x0001418 0ef9 MOVLW 0xf9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canLCD\Source\Main.c00141a cfdb MOVFF 0xfdb,0xfe600141c ffe600141e 0e03 MOVLW 0x3001420 6ee6 MOVWF 0xe6,0x0001422 6ae6 CLRF 0xe6,0x0001424 ec8e CALL 0x1b1c,0x0001426 f00d001428 52e5 MOVF 0xe5,0x1,0x000142a 52e5 MOVF 0xe5,0x1,0x000142c 52e5 MOVF 0xe5,0x1,0x000142e 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canLCD\Source\Main.c001430 6ee6 MOVWF 0xe6,0x0001432 0e00 MOVLW 0x0001434 6ee6 MOVWF 0xe6,0x0001436 6ae6 CLRF 0xe6,0x0001438 ec8e CALL 0x1b1c,0x000143a f00d00143c 52e5 MOVF 0xe5,0x1,0x000143e 52e5 MOVF 0xe5,0x1,0x0001440 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canLCD\Source\Main.c001442 6adf CLRF 0xdf,0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canLCD\Source\Main.c001444 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canLCD\Source\Main.c001446 6ef3 MOVWF 0xf3,0x0001448 0e01 MOVLW 0x100144a cff3 MOVFF 0xff3,0xfdb00144c ffdb00144e 0e02 MOVLW 0x2001450 6adb CLRF 0xdb,0x0001452 0e03 MOVLW 0x3 outCm.nid = MY_NID; F:\MCP\projects\CAN\canLCD\Source\Main.c001454 c062 MOVFF 0x62,0xfdb001456 ffdb001458 0e04 MOVLW 0x4 outCm.sid = MY_ID; F:\MCP\projects\CAN\canLCD\Source\Main.c00145a c060 MOVFF 0x60,0xfdb00145c ffdb00145e 0e05 MOVLW 0x5001460 c061 MOVFF 0x61,0xfdb001462 ffdb001464 0e08 MOVLW 0x8 outCm.data_length = 8; F:\MCP\projects\CAN\canLCD\Source\Main.c001466 6ef3 MOVWF 0xf3,0x0001468 0e06 MOVLW 0x600146a cff3 MOVFF 0xff3,0xfdb00146c ffdb00146e 0e0b MOVLW 0xb outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canLCD\Source\Main.c001470 6adb CLRF 0xdb,0x0001472 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canLCD\Source\Main.c001474 6ee6 MOVWF 0xe6,0x0001476 cfd9 MOVFF 0xfd9,0xfe9001478 ffe900147a cfda MOVFF 0xfda,0xfea00147c ffea00147e cfee MOVFF 0xfee,0xfe6001480 ffe6001482 cfee MOVFF 0xfee,0xfe6001484 ffe6001486 cfee MOVFF 0xfee,0xfe6001488 ffe600148a cfee MOVFF 0xfee,0xfe600148c ffe600148e cfee MOVFF 0xfee,0xfe6001490 ffe6001492 cfee MOVFF 0xfee,0xfe6001494 ffe6001496 cfee MOVFF 0xfee,0xfe6001498 ffe600149a cfee MOVFF 0xfee,0xfe600149c ffe600149e cfee MOVFF 0xfee,0xfe60014a0 ffe60014a2 cfee MOVFF 0xfee,0xfe60014a4 ffe60014a6 cfee MOVFF 0xfee,0xfe60014a8 ffe60014aa cfee MOVFF 0xfee,0xfe60014ac ffe60014ae cfee MOVFF 0xfee,0xfe60014b0 ffe60014b2 cfee MOVFF 0xfee,0xfe60014b4 ffe60014b6 cfee MOVFF 0xfee,0xfe60014b8 ffe60014ba ec88 CALL 0x1710,0x00014bc f00b0014be 6e00 MOVWF 0x0,0x00014c0 0e10 MOVLW 0x100014c2 5ee1 SUBWF 0xe1,0x1,0x00014c4 5000 MOVF 0x0,0x0,0x00014c6 0900 IORLW 0x00014c8 e101 BNZ 0x14cc0014ca d7d3 BRA 0x14720014cc d000 BRA 0x14ce break; F:\MCP\projects\CAN\canLCD\Source\Main.c} F:\MCP\projects\CAN\canLCD\Source\Main.c} F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c0014ce d000 BRA 0x14d0 break; F:\MCP\projects\CAN\canLCD\Source\Main.c} F:\MCP\projects\CAN\canLCD\Source\Main.c0014d0 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canLCD\Source\Main.c0014d2 5ce1 SUBWF 0xe1,0x0,0x00014d4 e202 BC 0x14da0014d6 6ae1 CLRF 0xe1,0x00014d8 52e5 MOVF 0xe5,0x1,0x00014da 6ee1 MOVWF 0xe1,0x00014dc 52e5 MOVF 0xe5,0x1,0x00014de cfe7 MOVFF 0xfe7,0xfd90014e0 ffd90014e2 0012 RETURN 0x0#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canLCD\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canLCD\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canLCD\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canLCD\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canLCD\Source\Main.c{ F:\MCP\projects\CAN\canLCD\Source\Main.c001000 ef55 GOTO 0x1caa _asm goto _startup _endasm F:\MCP\projects\CAN\canLCD\Source\Main.c001002 f00e001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canLCD\Source\Main.c#pragma code F:\MCP\projects\CAN\canLCD\Source\Main.c#endif F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canLCD\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canLCD\Source\Main.c{ F:\MCP\projects\CAN\canLCD\Source\Main.c001008 ef4f GOTO 0x129e _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canLCD\Source\Main.c00100a f00900100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canLCD\Source\Main.c#pragma code F:\MCP\projects\CAN\canLCD\Source\Main.cF:\MCP\projects\CAN\canLCD\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canLCD\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canLCD\Source\Main.c{ F:\MCP\projects\CAN\canLCD\Source\Main.c001018 ef9d GOTO 0x133a _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canLCD\Source\Main.c00101a f00900101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canLCD\Source\Main.c#pragma code F:\MCP\projects\CAN\canLCD\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Functions for reading and writing to EEPROM. F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\EEAccess.c* Last changed: $LastChangedDate: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 139 $ F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************/ F:\MCP\projects\CAN\Include\EEAccess.c#include <p18cxxx.h> F:\MCP\projects\CAN\Include\EEAccess.c#include <EEaccess.h> F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EERead F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to read from. F:\MCP\projects\CAN\Include\EEAccess.c* Output: Byte read. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c001ad2 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001ad4 ffe6001ad6 cfe1 MOVFF 0xfe1,0xfd9001ad8 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001ada 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001adc cfdb MOVFF 0xfdb,0x0001ade f000001ae0 0efe MOVLW 0xfe001ae2 cfdb MOVFF 0xfdb,0x1001ae4 f001001ae6 c001 MOVFF 0x1,0x0001ae8 f000001aea 6a01 CLRF 0x1,0x0001aec 5000 MOVF 0x0,0x0,0x0001aee 6eaa MOVWF 0xaa,0x0001af0 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001af2 6ee7 MOVWF 0xe7,0x0001af4 0efd MOVLW 0xfd001af6 cfdb MOVFF 0xfdb,0x0001af8 f000001afa 0efe MOVLW 0xfe001afc cfdb MOVFF 0xfdb,0x1001afe f001001b00 50e7 MOVF 0xe7,0x0,0x0001b02 1600 ANDWF 0x0,0x1,0x0001b04 6a01 CLRF 0x1,0x0001b06 5000 MOVF 0x0,0x0,0x0001b08 6ea9 MOVWF 0xa9,0x0001b0a 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001b0c 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001b0e 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001b10 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001b12 d000 BRA 0x1b14001b14 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001b16 cfe7 MOVFF 0xfe7,0xfd9001b18 ffd9001b1a 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EEWrite F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to write to and BYTE data to write. F:\MCP\projects\CAN\Include\EEAccess.c* Output: none. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c001b1c cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001b1e ffe6001b20 cfe1 MOVFF 0xfe1,0xfd9001b22 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001b24 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001b26 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001b28 cfdb MOVFF 0xfdb,0x0001b2a f000001b2c 0efe MOVLW 0xfe001b2e cfdb MOVFF 0xfdb,0x1001b30 f001001b32 c001 MOVFF 0x1,0x0001b34 f000001b36 6a01 CLRF 0x1,0x0001b38 5000 MOVF 0x0,0x0,0x0001b3a 6eaa MOVWF 0xaa,0x0001b3c 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001b3e 6ee7 MOVWF 0xe7,0x0001b40 0efd MOVLW 0xfd001b42 cfdb MOVFF 0xfdb,0x0001b44 f000001b46 0efe MOVLW 0xfe001b48 cfdb MOVFF 0xfdb,0x1001b4a f001001b4c 50e7 MOVF 0xe7,0x0,0x0001b4e 1600 ANDWF 0x0,0x1,0x0001b50 6a01 CLRF 0x1,0x0001b52 5000 MOVF 0x0,0x0,0x0001b54 6ea9 MOVWF 0xa9,0x0001b56 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001b58 50db MOVF 0xdb,0x0,0x0001b5a 6ea8 MOVWF 0xa8,0x0001b5c 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001b5e 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001b60 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001b62 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001b64 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001b66 6ea7 MOVWF 0xa7,0x0001b68 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001b6a 6ea7 MOVWF 0xa7,0x0001b6c 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001b6e 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001b70 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001b72 d7fe BRA 0x1b70001b74 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001b76 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001b78 cfe7 MOVFF 0xfe7,0xfd9001b7a ffd9001b7c 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* LCD routines (HD44780) F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c********************************************************************* F:\MCP\projects\CAN\canLCD\Source\lcd.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canLCD/Include/compiler.h $ F:\MCP\projects\CAN\canLCD\Source\lcd.c* Last changed: $LastChangedDate: 2006-11-20 17:54:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\canLCD\Source\lcd.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canLCD\Source\lcd.c* Revision: $Revision: 129 $ F:\MCP\projects\CAN\canLCD\Source\lcd.c********************************************************************/ F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c#include <lcd.h> F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c#ifdef USE_LCD F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cstatic void lcdWrite(BYTE c); F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c#define LCD_STROBE ((LCD_EN_IO = 1),(LCD_EN_IO = 0)) F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.cOBS OBS OBS OBS!! F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cDELAYS ARE FOR 40Mhz (10Mhz PLL4) F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cDefinitions needed: F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cLCD_RS_TRIS and LCD_RS_IO F:\MCP\projects\CAN\canLCD\Source\lcd.cLCD_EN_TRIS and LCD_EN_IO F:\MCP\projects\CAN\canLCD\Source\lcd.cLCD_DATA_4_TRIS and LCD_DATA_4_IO F:\MCP\projects\CAN\canLCD\Source\lcd.cLCD_DATA_5_TRIS and LCD_DATA_5_IO F:\MCP\projects\CAN\canLCD\Source\lcd.cLCD_DATA_6_TRIS and LCD_DATA_6_IO F:\MCP\projects\CAN\canLCD\Source\lcd.cLCD_DATA_7_TRIS and LCD_DATA_7_IO F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdWrite F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: Byte to write. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: Write to the dislay F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.c0018b0 cfd9 MOVFF 0xfd9,0xfe6 void lcdWrite(BYTE c) F:\MCP\projects\CAN\canLCD\Source\lcd.c0018b2 ffe60018b4 cfe1 MOVFF 0xfe1,0xfd90018b6 ffd9{ F:\MCP\projects\CAN\canLCD\Source\lcd.c0018b8 0efe MOVLW 0xfe LCD_DATA_4_IO=((c)&0b10000)>>4; F:\MCP\projects\CAN\canLCD\Source\lcd.c0018ba 50db MOVF 0xdb,0x0,0x00018bc 0b10 ANDLW 0x100018be 38e8 SWAPF 0xe8,0x0,0x00018c0 0b0f ANDLW 0xf0018c2 b0e8 BTFSC 0xe8,0x0,0x00018c4 8094 BSF 0x94,0x0,0x00018c6 a0e8 BTFSS 0xe8,0x0,0x00018c8 9094 BCF 0x94,0x0,0x00018ca 0efe MOVLW 0xfe LCD_DATA_5_IO=((c)&0b100000)>>5; F:\MCP\projects\CAN\canLCD\Source\lcd.c0018cc 50db MOVF 0xdb,0x0,0x00018ce 0b20 ANDLW 0x200018d0 0be0 ANDLW 0xe00018d2 38e8 SWAPF 0xe8,0x0,0x00018d4 40e8 RRNCF 0xe8,0x0,0x00018d6 b0e8 BTFSC 0xe8,0x0,0x00018d8 8294 BSF 0x94,0x1,0x00018da a0e8 BTFSS 0xe8,0x0,0x00018dc 9294 BCF 0x94,0x1,0x00018de 0e06 MOVLW 0x6 LCD_DATA_6_IO=((c)&0b1000000)>>6; F:\MCP\projects\CAN\canLCD\Source\lcd.c0018e0 6e00 MOVWF 0x0,0x00018e2 0efe MOVLW 0xfe0018e4 50db MOVF 0xdb,0x0,0x00018e6 0b40 ANDLW 0x400018e8 c000 MOVFF 0x0,0xfe70018ea ffe70018ec 52e7 MOVF 0xe7,0x1,0x00018ee e004 BZ 0x18f80018f0 42e8 RRNCF 0xe8,0x1,0x00018f2 0b7f ANDLW 0x7f0018f4 06e7 DECF 0xe7,0x1,0x00018f6 e1fc BNZ 0x18f00018f8 b0e8 BTFSC 0xe8,0x0,0x00018fa 8494 BSF 0x94,0x2,0x00018fc a0e8 BTFSS 0xe8,0x0,0x00018fe 9494 BCF 0x94,0x2,0x0001900 0efe MOVLW 0xfe LCD_DATA_7_IO=((c)&0b10000000)>>7; F:\MCP\projects\CAN\canLCD\Source\lcd.c001902 50db MOVF 0xdb,0x0,0x0001904 0b80 ANDLW 0x80001906 44e8 RLNCF 0xe8,0x0,0x0001908 0b01 ANDLW 0x100190a b0e8 BTFSC 0xe8,0x0,0x000190c 8694 BSF 0x94,0x3,0x000190e a0e8 BTFSS 0xe8,0x0,0x0001910 9694 BCF 0x94,0x3,0x0001912 8a92 BSF 0x92,0x5,0x0 LCD_STROBE; F:\MCP\projects\CAN\canLCD\Source\lcd.c001914 9a92 BCF 0x92,0x5,0x0001916 0efe MOVLW 0xfe LCD_DATA_4_IO=((c)&0b1); F:\MCP\projects\CAN\canLCD\Source\lcd.c001918 50db MOVF 0xdb,0x0,0x000191a 0b01 ANDLW 0x100191c b0e8 BTFSC 0xe8,0x0,0x000191e 8094 BSF 0x94,0x0,0x0001920 a0e8 BTFSS 0xe8,0x0,0x0001922 9094 BCF 0x94,0x0,0x0001924 0efe MOVLW 0xfe LCD_DATA_5_IO=((c)&0b10)>>1; F:\MCP\projects\CAN\canLCD\Source\lcd.c001926 50db MOVF 0xdb,0x0,0x0001928 0b02 ANDLW 0x200192a 40e8 RRNCF 0xe8,0x0,0x000192c 0b7f ANDLW 0x7f00192e b0e8 BTFSC 0xe8,0x0,0x0001930 8294 BSF 0x94,0x1,0x0001932 a0e8 BTFSS 0xe8,0x0,0x0001934 9294 BCF 0x94,0x1,0x0001936 0efe MOVLW 0xfe LCD_DATA_6_IO=((c)&0b100)>>2; F:\MCP\projects\CAN\canLCD\Source\lcd.c001938 50db MOVF 0xdb,0x0,0x000193a 0b04 ANDLW 0x400193c 40e8 RRNCF 0xe8,0x0,0x000193e 40e8 RRNCF 0xe8,0x0,0x0001940 0b3f ANDLW 0x3f001942 b0e8 BTFSC 0xe8,0x0,0x0001944 8494 BSF 0x94,0x2,0x0001946 a0e8 BTFSS 0xe8,0x0,0x0001948 9494 BCF 0x94,0x2,0x000194a 0efe MOVLW 0xfe LCD_DATA_7_IO=((c)&0b1000)>>3; F:\MCP\projects\CAN\canLCD\Source\lcd.c00194c 50db MOVF 0xdb,0x0,0x000194e 0b08 ANDLW 0x8001950 40e8 RRNCF 0xe8,0x0,0x0001952 40e8 RRNCF 0xe8,0x0,0x0001954 40e8 RRNCF 0xe8,0x0,0x0001956 0b1f ANDLW 0x1f001958 b0e8 BTFSC 0xe8,0x0,0x000195a 8694 BSF 0x94,0x3,0x000195c a0e8 BTFSS 0xe8,0x0,0x000195e 9694 BCF 0x94,0x3,0x0001960 8a92 BSF 0x92,0x5,0x0 LCD_STROBE; F:\MCP\projects\CAN\canLCD\Source\lcd.c001962 9a92 BCF 0x92,0x5,0x0001964 0e08 MOVLW 0x8 Delay100TCYx(8); // 80uS F:\MCP\projects\CAN\canLCD\Source\lcd.c001966 6ee6 MOVWF 0xe6,0x0001968 ec47 CALL 0x1c8e,0x000196a f00e00196c 52e5 MOVF 0xe5,0x1,0x000196e 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.c001970 cfe7 MOVFF 0xfe7,0xfd9001972 ffd9001974 0012 RETURN 0x0F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdClear F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: Clear the display F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.cvoid lcdClear(void) F:\MCP\projects\CAN\canLCD\Source\lcd.c{ F:\MCP\projects\CAN\canLCD\Source\lcd.c001976 9892 BCF 0x92,0x4,0x0 LCD_RS_IO = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001978 0e01 MOVLW 0x1 lcdWrite(0x1); // Clear the Display F:\MCP\projects\CAN\canLCD\Source\lcd.c00197a 6ee6 MOVWF 0xe6,0x000197c df99 RCALL 0x18b000197e 52e5 MOVF 0xe5,0x1,0x0001980 0e02 MOVLW 0x2 Delay10KTCYx(2); // 2ms F:\MCP\projects\CAN\canLCD\Source\lcd.c001982 6ee6 MOVWF 0xe6,0x0001984 ec30 CALL 0x1c60,0x0001986 f00e001988 52e5 MOVF 0xe5,0x1,0x000198a 0e02 MOVLW 0x2 lcdWrite(0x02); // Home the display F:\MCP\projects\CAN\canLCD\Source\lcd.c00198c 6ee6 MOVWF 0xe6,0x000198e df90 RCALL 0x18b0001990 52e5 MOVF 0xe5,0x1,0x0001992 0e02 MOVLW 0x2 Delay10KTCYx(2); // 2ms F:\MCP\projects\CAN\canLCD\Source\lcd.c001994 6ee6 MOVWF 0xe6,0x0001996 ec30 CALL 0x1c60,0x0001998 f00e00199a 52e5 MOVF 0xe5,0x1,0x000199c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdPuts F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: string to write. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.c00199e cfd9 MOVFF 0xfd9,0xfe6 void lcdPuts(char * s) F:\MCP\projects\CAN\canLCD\Source\lcd.c0019a0 ffe60019a2 cfe1 MOVFF 0xfe1,0xfd90019a4 ffd9{ F:\MCP\projects\CAN\canLCD\Source\lcd.c0019a6 8892 BSF 0x92,0x4,0x0 LCD_RS_IO = 1; // write characters F:\MCP\projects\CAN\canLCD\Source\lcd.c0019a8 0efd MOVLW 0xfd while(*s) lcdWrite(*s++); F:\MCP\projects\CAN\canLCD\Source\lcd.c0019aa cfdb MOVFF 0xfdb,0xfe90019ac ffe90019ae 0efe MOVLW 0xfe0019b0 cfdb MOVFF 0xfdb,0xfea0019b2 ffea0019b4 50ef MOVF 0xef,0x0,0x00019b6 e00e BZ 0x19d40019b8 0efd MOVLW 0xfd0019ba cfdb MOVFF 0xfdb,0xfe90019bc ffe90019be 2adb INCF 0xdb,0x1,0x00019c0 0efe MOVLW 0xfe0019c2 cfdb MOVFF 0xfdb,0xfea0019c4 ffea0019c6 e301 BNC 0x19ca0019c8 2adb INCF 0xdb,0x1,0x00019ca 50ef MOVF 0xef,0x0,0x00019cc 6ee6 MOVWF 0xe6,0x00019ce df70 RCALL 0x18b00019d0 52e5 MOVF 0xe5,0x1,0x00019d2 d7ea BRA 0x19a80019d4 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.c0019d6 cfe7 MOVFF 0xfe7,0xfd90019d8 ffd90019da 0012 RETURN 0x0F:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdPutrs F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: string to write. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.c0019dc cfd9 MOVFF 0xfd9,0xfe6 void lcdPutrs(const rom char *s) F:\MCP\projects\CAN\canLCD\Source\lcd.c0019de ffe60019e0 cfe1 MOVFF 0xfe1,0xfd90019e2 ffd9{ F:\MCP\projects\CAN\canLCD\Source\lcd.c0019e4 8892 BSF 0x92,0x4,0x0 LCD_RS_IO = 1; // write characters F:\MCP\projects\CAN\canLCD\Source\lcd.c0019e6 0efd MOVLW 0xfd while(*s) lcdWrite(*s++); F:\MCP\projects\CAN\canLCD\Source\lcd.c0019e8 cfdb MOVFF 0xfdb,0xff60019ea fff60019ec 0efe MOVLW 0xfe0019ee cfdb MOVFF 0xfdb,0xff70019f0 fff70019f2 0008 TBLRD0019f4 50f5 MOVF 0xf5,0x0,0x00019f6 e00f BZ 0x1a160019f8 0efd MOVLW 0xfd0019fa cfdb MOVFF 0xfdb,0xff60019fc fff60019fe 2adb INCF 0xdb,0x1,0x0001a00 0efe MOVLW 0xfe001a02 cfdb MOVFF 0xfdb,0xff7001a04 fff7001a06 e301 BNC 0x1a0a001a08 2adb INCF 0xdb,0x1,0x0001a0a 0008 TBLRD001a0c 50f5 MOVF 0xf5,0x0,0x0001a0e 6ee6 MOVWF 0xe6,0x0001a10 df4f RCALL 0x18b0001a12 52e5 MOVF 0xe5,0x1,0x0001a14 d7e8 BRA 0x19e6001a16 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.c001a18 cfe7 MOVFF 0xfe7,0xfd9001a1a ffd9001a1c 0012 RETURN 0x0F:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdPutc F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: char to write. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.c001a1e cfd9 MOVFF 0xfd9,0xfe6 void lcdPutc(char c) F:\MCP\projects\CAN\canLCD\Source\lcd.c001a20 ffe6001a22 cfe1 MOVFF 0xfe1,0xfd9001a24 ffd9{ F:\MCP\projects\CAN\canLCD\Source\lcd.c001a26 8892 BSF 0x92,0x4,0x0 LCD_RS_IO=1; // write character F:\MCP\projects\CAN\canLCD\Source\lcd.c001a28 0efe MOVLW 0xfe lcdWrite(c); F:\MCP\projects\CAN\canLCD\Source\lcd.c001a2a cfdb MOVFF 0xfdb,0xfe6001a2c ffe6001a2e df40 RCALL 0x18b0001a30 52e5 MOVF 0xe5,0x1,0x0001a32 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.c001a34 cfe7 MOVFF 0xfe7,0xfd9001a36 ffd9001a38 0012 RETURN 0x0F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdGoto F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: Position to goto F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.c001a3a cfd9 MOVFF 0xfd9,0xfe6 void lcdGoto(BYTE pos) F:\MCP\projects\CAN\canLCD\Source\lcd.c001a3c ffe6001a3e cfe1 MOVFF 0xfe1,0xfd9001a40 ffd9{ F:\MCP\projects\CAN\canLCD\Source\lcd.c001a42 9892 BCF 0x92,0x4,0x0 LCD_RS_IO = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a44 0efe MOVLW 0xfe lcdWrite(0x80+pos); // sets the DDRAM Address F:\MCP\projects\CAN\canLCD\Source\lcd.c001a46 50db MOVF 0xdb,0x0,0x0001a48 0f80 ADDLW 0x80001a4a 6ee6 MOVWF 0xe6,0x0001a4c df31 RCALL 0x18b0001a4e 52e5 MOVF 0xe5,0x1,0x0001a50 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.c001a52 cfe7 MOVFF 0xfe7,0xfd9001a54 ffd9001a56 0012 RETURN 0x0F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c/* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Function: lcdInit F:\MCP\projects\CAN\canLCD\Source\lcd.c* F:\MCP\projects\CAN\canLCD\Source\lcd.c* Input: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Output: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Pre-conditions: none F:\MCP\projects\CAN\canLCD\Source\lcd.c* Affects: none. F:\MCP\projects\CAN\canLCD\Source\lcd.c* Depends: Setup to use 4 bit mode F:\MCP\projects\CAN\canLCD\Source\lcd.c*/ F:\MCP\projects\CAN\canLCD\Source\lcd.cvoid lcdInit(void) F:\MCP\projects\CAN\canLCD\Source\lcd.c{ F:\MCP\projects\CAN\canLCD\Source\lcd.c// Setup IO (all output) F:\MCP\projects\CAN\canLCD\Source\lcd.c001a58 9880 BCF 0x80,0x4,0x0 LCD_RS_TRIS = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a5a 9a80 BCF 0x80,0x5,0x0 LCD_EN_TRIS = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a5c 9082 BCF 0x82,0x0,0x0 LCD_DATA_4_TRIS = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a5e 9282 BCF 0x82,0x1,0x0 LCD_DATA_5_TRIS = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a60 9482 BCF 0x82,0x2,0x0 LCD_DATA_6_TRIS = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a62 9682 BCF 0x82,0x3,0x0 LCD_DATA_7_TRIS = 0; F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c001a64 9892 BCF 0x92,0x4,0x0 LCD_RS_IO = 0; // write control bytes F:\MCP\projects\CAN\canLCD\Source\lcd.c001a66 0e0f MOVLW 0xf Delay10KTCYx(15); // power on delay, 15ms F:\MCP\projects\CAN\canLCD\Source\lcd.c001a68 6ee6 MOVWF 0xe6,0x0001a6a ec30 CALL 0x1c60,0x0001a6c f00e001a6e 52e5 MOVF 0xe5,0x1,0x0001a70 0e03 MOVLW 0x3 lcdWrite(0x3); // attention! F:\MCP\projects\CAN\canLCD\Source\lcd.c001a72 6ee6 MOVWF 0xe6,0x0001a74 df1d RCALL 0x18b0001a76 52e5 MOVF 0xe5,0x1,0x0001a78 0e05 MOVLW 0x5 Delay10KTCYx(5); // 5ms F:\MCP\projects\CAN\canLCD\Source\lcd.c001a7a 6ee6 MOVWF 0xe6,0x0001a7c ec30 CALL 0x1c60,0x0001a7e f00e001a80 52e5 MOVF 0xe5,0x1,0x0001a82 8a92 BSF 0x92,0x5,0x0 LCD_STROBE; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a84 9a92 BCF 0x92,0x5,0x0001a86 0e0a MOVLW 0xa Delay100TCYx(10); // 100us F:\MCP\projects\CAN\canLCD\Source\lcd.c001a88 6ee6 MOVWF 0xe6,0x0001a8a ec47 CALL 0x1c8e,0x0001a8c f00e001a8e 52e5 MOVF 0xe5,0x1,0x0001a90 8a92 BSF 0x92,0x5,0x0 LCD_STROBE; F:\MCP\projects\CAN\canLCD\Source\lcd.c001a92 9a92 BCF 0x92,0x5,0x0001a94 0e05 MOVLW 0x5 Delay10KTCYx(5); // 5ms F:\MCP\projects\CAN\canLCD\Source\lcd.c001a96 6ee6 MOVWF 0xe6,0x0001a98 ec30 CALL 0x1c60,0x0001a9a f00e001a9c 52e5 MOVF 0xe5,0x1,0x0001a9e 0e02 MOVLW 0x2 lcdWrite(0x2); // set 4 bit mode F:\MCP\projects\CAN\canLCD\Source\lcd.c001aa0 6ee6 MOVWF 0xe6,0x0001aa2 df06 RCALL 0x18b0001aa4 52e5 MOVF 0xe5,0x1,0x0001aa6 0e04 MOVLW 0x4 Delay100TCYx(4); // 40 us F:\MCP\projects\CAN\canLCD\Source\lcd.c001aa8 6ee6 MOVWF 0xe6,0x0001aaa ec47 CALL 0x1c8e,0x0001aac f00e001aae 52e5 MOVF 0xe5,0x1,0x0001ab0 0e28 MOVLW 0x28 lcdWrite(0x28); // 4 bit mode, 1/16 duty, 5x8 font F:\MCP\projects\CAN\canLCD\Source\lcd.c001ab2 6ee6 MOVWF 0xe6,0x0001ab4 defd RCALL 0x18b0001ab6 52e5 MOVF 0xe5,0x1,0x0001ab8 0e08 MOVLW 0x8 lcdWrite(0x08); // display off F:\MCP\projects\CAN\canLCD\Source\lcd.c001aba 6ee6 MOVWF 0xe6,0x0001abc def9 RCALL 0x18b0001abe 52e5 MOVF 0xe5,0x1,0x0001ac0 0e0c MOVLW 0xc lcdWrite(0x0C); // display on, unblink curson off F:\MCP\projects\CAN\canLCD\Source\lcd.c001ac2 6ee6 MOVWF 0xe6,0x0001ac4 def5 RCALL 0x18b0001ac6 52e5 MOVF 0xe5,0x1,0x0001ac8 0e06 MOVLW 0x6 lcdWrite(0x06); // entry mode F:\MCP\projects\CAN\canLCD\Source\lcd.c001aca 6ee6 MOVWF 0xe6,0x0001acc def1 RCALL 0x18b0001ace 52e5 MOVF 0xe5,0x1,0x0001ad0 0012 RETURN 0x0 } F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c#endif F:\MCP\projects\CAN\canLCD\Source\lcd.cF:\MCP\projects\CAN\canLCD\Source\lcd.c