Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; PICBASIC PRO(TM) Compiler 2.60A, (c) 1998, 2010 microEngineering Labs, Inc. All Rights Reserved.
- _USED EQU 1
- INCLUDE "C:\PBP\18F1320.INC"
- ; Define statements.
- #define INTHAND INT_ENTRY_H
- #define INTLHAND INT_ENTRY_L
- #define ReEnterHPused 1
- #define PULSIN_MAX 1000
- #define HSER_RCSTA 90h
- #define HSER_TXSTA 24h
- #define HSER_BAUD 9600
- #define HSER_SPBRG 25
- #define HSER_CLROERR 1
- #define DEBUG_REG PORTA
- #define DEBUG_BIT 0
- #define DEBUG_BAUD 9600
- #define DEBUG_MODE 1
- #define OSC 4
- RAM_START EQU 00000h
- RAM_END EQU 000FFh
- RAM_BANKS EQU 00001h
- BANK0_START EQU 00080h
- BANK0_END EQU 000FFh
- BANKA_START EQU 00000h
- BANKA_END EQU 0007Fh
- FLAGS EQU RAM_START + 000h
- R0 EQU RAM_START + 001h
- R1 EQU RAM_START + 003h
- R2 EQU RAM_START + 005h
- R3 EQU RAM_START + 007h
- R4 EQU RAM_START + 009h
- R5 EQU RAM_START + 00Bh
- R6 EQU RAM_START + 00Dh
- R7 EQU RAM_START + 00Fh
- R8 EQU RAM_START + 011h
- T1 EQU RAM_START + 013h
- T2 EQU RAM_START + 015h
- GOP EQU RAM_START + 017h
- INT_Flags EQU RAM_START + 018h
- RM1 EQU RAM_START + 019h
- RM2 EQU RAM_START + 01Ah
- RR1 EQU RAM_START + 01Bh
- RR2 EQU RAM_START + 01Ch
- RS1 EQU RAM_START + 01Dh
- RS2 EQU RAM_START + 01Eh
- wsave EQU RAM_START + 01Fh
- RetAddrH EQU RAM_START + 020h
- RetAddrL EQU RAM_START + 023h
- PB01 EQU RAM_START + 026h
- _result EQU RAM_START + 027h
- _tC EQU RAM_START + 029h
- _temp EQU RAM_START + 02Bh
- _tempIn EQU RAM_START + 02Dh
- _tF EQU RAM_START + 02Fh
- _timelmt EQU RAM_START + 031h
- _x EQU RAM_START + 033h
- _Attn EQU RAM_START + 035h
- _Day EQU RAM_START + 036h
- _hour EQU RAM_START + 037h
- _hyst EQU RAM_START + 038h
- _mem EQU RAM_START + 039h
- _mem1 EQU RAM_START + 03Ah
- _mem2 EQU RAM_START + 03Bh
- _mem3 EQU RAM_START + 03Ch
- _mem4 EQU RAM_START + 03Dh
- _mem5 EQU RAM_START + 03Eh
- _mem6 EQU RAM_START + 03Fh
- _Minute EQU RAM_START + 040h
- _mode EQU RAM_START + 041h
- _myTemp EQU RAM_START + 042h
- _Nb_var02 EQU RAM_START + 043h
- _Nb_var93 EQU RAM_START + 044h
- _program EQU RAM_START + 045h
- _tempAdj_bit EQU RAM_START + 046h
- _tempdown EQU RAM_START + 047h
- _tempup EQU RAM_START + 048h
- fsave0H EQU RAM_START + 080h
- fsave0L EQU RAM_START + 082h
- fsave1H EQU RAM_START + 084h
- fsave1L EQU RAM_START + 086h
- fsave2H EQU RAM_START + 088h
- fsave2L EQU RAM_START + 08Ah
- bsave EQU RAM_START + 08Ch
- psaveH EQU RAM_START + 08Dh
- psaveL EQU RAM_START + 08Eh
- psaveUH EQU RAM_START + 08Fh
- psaveUL EQU RAM_START + 090h
- ssave EQU RAM_START + 091h
- _HP_Vars EQU RAM_START + 092h
- _R0_SaveH EQU _HP_Vars
- _R1_SaveH EQU _HP_Vars + 004h
- _R2_SaveH EQU _HP_Vars + 008h
- _R3_SaveH EQU _HP_Vars + 00Ch
- _R4_SaveH EQU _HP_Vars + 010h
- _R5_SaveH EQU _HP_Vars + 012h
- _R6_SaveH EQU _HP_Vars + 014h
- _R7_SaveH EQU _HP_Vars + 016h
- _R8_SaveH EQU _HP_Vars + 018h
- _Flag_GOP_H EQU _HP_Vars + 01Ah
- _RM_H EQU _HP_Vars + 01Ch
- _RR_H EQU _HP_Vars + 01Eh
- _RS_H EQU _HP_Vars + 020h
- _T1_SaveH EQU _HP_Vars + 022h
- _T2_SaveH EQU _HP_Vars + 026h
- _T3_SaveH EQU _HP_Vars + 02Ah
- _T4_SaveH EQU _HP_Vars + 02Eh
- _T5_SaveH EQU _HP_Vars + 032h
- _T6_SaveH EQU _HP_Vars + 036h
- _T7_SaveH EQU _HP_Vars + 03Ah
- _TBLPTRU_H EQU _HP_Vars + 03Eh
- _TBLPTR_H EQU _HP_Vars + 040h
- _Product_H EQU _HP_Vars + 042h
- _PORTL EQU PORTB
- _PORTH EQU PORTA
- _TRISL EQU TRISB
- _TRISH EQU TRISA
- _Flags_SaveH EQU _Flag_GOP_H
- _GOP_SaveH EQU _Flag_GOP_H + 001h
- _RM1_SaveH EQU _RM_H
- _RM2_SaveH EQU _RM_H + 001h
- _RR1_SaveH EQU _RR_H
- _RR2_SaveH EQU _RR_H + 001h
- _RS1_SaveH EQU _RS_H
- _RS2_SaveH EQU _RS_H + 001h
- _TBLPTRU_SaveH EQU _TBLPTRU_H
- _TBLPTRH_SaveH EQU _TBLPTR_H + 001h
- _TBLPTRL_SaveH EQU _TBLPTR_H
- _Flag_GOP_H??LOWBYTE EQU _Flag_GOP_H
- _Flag_GOP_H??HIGHBYTE EQU _Flag_GOP_H + 001h
- _RM_H??LOWBYTE EQU _RM_H
- _RM_H??HIGHBYTE EQU _RM_H + 001h
- _RR_H??LOWBYTE EQU _RR_H
- _RR_H??HIGHBYTE EQU _RR_H + 001h
- _RS_H??LOWBYTE EQU _RS_H
- _RS_H??HIGHBYTE EQU _RS_H + 001h
- _TBLPTRU_H??LOWBYTE EQU _TBLPTRU_H
- _TBLPTR_H??HIGHBYTE EQU _TBLPTR_H + 001h
- _TBLPTR_H??LOWBYTE EQU _TBLPTR_H
- _tempIn??BYTE1 EQU _tempIn + 001h
- #define _Serviced_H _INT_Flags??0
- #define _Serviced_L _INT_Flags??1
- #define _InHPint _INT_Flags??2
- #define _NoPriority _INT_Flags??3
- #define _VarsSaved_H PB01, 002h
- #define _lcd _PORTA??6
- #define _DQ _PORTA??0
- #define _Clock _PORTA??1
- #define _Reset _PORTA??2
- #define _relay _PORTB??2
- #define _up_button _PORTA??3
- #define _Down_button _PORTA??4
- #define _sign _tempIn??BIT8
- #define _time_bit PB01, 001h
- #define _backlight_bit PB01, 000h
- #define _INT_Flags??0 INT_Flags, 000h
- #define _INT_Flags??1 INT_Flags, 001h
- #define _INT_Flags??2 INT_Flags, 002h
- #define _INT_Flags??3 INT_Flags, 003h
- #define _PORTA??6 PORTA, 006h
- #define _PORTA??0 PORTA, 000h
- #define _PORTA??1 PORTA, 001h
- #define _PORTA??2 PORTA, 002h
- #define _PORTB??2 PORTB, 002h
- #define _PORTA??3 PORTA, 003h
- #define _PORTA??4 PORTA, 004h
- #define _tempIn??BIT8 _tempIn + 001h, 000h
- #define _tC??BIT15 _tC + 001h, 007h
- #define _RCSTA??4 RCSTA, 004h
- ; Constants.
- _T2400 EQU 00000h
- _T1200 EQU 00001h
- _T9600 EQU 00002h
- _T300 EQU 00003h
- _N2400 EQU 00004h
- _N1200 EQU 00005h
- _N9600 EQU 00006h
- _N300 EQU 00007h
- _OT2400 EQU 00008h
- _OT1200 EQU 00009h
- _OT9600 EQU 0000Ah
- _OT300 EQU 0000Bh
- _ON2400 EQU 0000Ch
- _ON1200 EQU 0000Dh
- _ON9600 EQU 0000Eh
- _ON300 EQU 0000Fh
- _MSBPRE EQU 00000h
- _LSBPRE EQU 00001h
- _MSBPOST EQU 00002h
- _LSBPOST EQU 00003h
- _LSBFIRST EQU 00000h
- _MSBFIRST EQU 00001h
- _CLS EQU 00000h
- _HOME EQU 00001h
- _BELL EQU 00007h
- _BKSP EQU 00008h
- _TAB EQU 00009h
- _CR EQU 0000Dh
- _UnitOn EQU 00012h
- _UnitOff EQU 0001Ah
- _UnitsOff EQU 0001Ch
- _LightsOn EQU 00014h
- _LightsOff EQU 00010h
- _Dim EQU 0001Eh
- _Bright EQU 00016h
- _Baud EQU 00054h
- _BaudMode EQU 00054h
- _RdTmp EQU 000AAh
- _WrHi EQU 00001h
- _WrLo EQU 00002h
- _RdHi EQU 000A1h
- _RdLo EQU 000A2h
- _RdCntr EQU 000A0h
- _RdSlope EQU 000A9h
- _StartC EQU 000EEh
- _StopC EQU 00022h
- _WrCfg EQU 0000Ch
- _RdCfg EQU 000ACh
- _DegSym EQU 000BAh
- ; EEPROM data.
- INCLUDE "WEBTHE~3.MAC"
- INCLUDE "C:\PBP\PBPPIC18.LIB"
- ASM?
- ;----[Module defaults]------------------------------------------------------
- #define SHOWDIGITALDEFAULT 0
- ifdef SHOWDIGITAL
- SHOWDIGITALRESULT = SHOWDIGITAL
- else
- SHOWDIGITALRESULT = SHOWDIGITALDEFAULT
- endif
- ifndef PM_USED
- ifndef ADLISTALL
- nolist
- endif
- endif
- ;----[Attempt to Set a registers Value]-------------------------------------
- SetReg macro RegOut, Cin
- ifndef PM_USED
- ifndef ADLISTALL
- nolist
- endif
- endif
- ifdef RegOut
- ifndef PM_USED
- list
- endif
- MOVE?CB Cin, RegOut
- if (SHOWDIGITALRESULT == 1)
- ifndef PM_USED
- messg RegOut = Cin
- endif
- endif
- ifndef PM_USED
- ifndef ADLISTALL
- nolist
- endif
- endif
- endif
- endm
- ;----[A/D Converter registers]----------------------------------------------
- ifdef ANSEL0
- SetReg ANSEL0, 0 ; if chip has ANSEL0, clear it
- endif
- ifdef ANSEL1
- SetReg ANSEL1, 0 ; if chip has ANSEL1, clear it
- endif
- ifdef ANSELA
- SetReg ANSELA, 0 ; if chip has ANSELA, clear it
- endif
- ifdef ANSELB
- SetReg ANSELB, 0 ; if chip has ANSELB, clear it
- endif
- ifdef ANSELD
- SetReg ANSELD, 0 ; if chip has ANSELD, clear it
- endif
- ifdef ANSELE
- SetReg ANSELE, 0 ; if chip has ANSELE, clear it
- endif
- ifdef ANSEL
- SetReg ANSEL, 0 ; if chip has ANSEL(s), clear them
- SetReg ANSELH, 0
- else
- ifdef ANCON0 ; Several chips use ANCON0 and ANCON1
- ifdef ADSHR ; if chip has shared address SFR's
- MOVE?CT 1, WDTCON,ADSHR ; switch to shared address registers
- if (SHOWDIGITALRESULT == 1)
- messg WDTCON.4 = 1
- endif
- endif
- SetReg ANCON0, 0xFF ;
- ifdef PCFG15 ; 0 = Analog with these bits
- SetReg ANCON1, 0xFF
- else
- SetReg ANCON1, 0x7F
- endif
- ifdef ADSHR ; if chip has shared address SFR's
- MOVE?CT 0, WDTCON,ADSHR ; put SFR's back to legacy
- if (SHOWDIGITALRESULT == 1)
- messg WDTCON.4 = 0
- endif
- endif
- else
- ifdef PCFG6 ; Some chips use ADCON1 bits
- SetReg ADCON1, 0x7F ; the same way as ANCONx
- else
- ifdef PCFG3 ; if there's a PCFG3 bit
- ifdef ADCON2 ; but has no ADCON2, more than 8 A/D's
- SetReg ADCON1, 0x0F ; A/D cfg from table = 0x0F
- else
- SetReg ADCON1, 7 ; most common, 8 or less A/D ch's
- endif
- else
- ifdef PCFG2
- ifdef ADCON1
- SetReg ADCON1, 7 ; A/D is 8-bit, 5 ch's
- endif
- else
- ifdef ADCON0 ; if there's an ADCON0
- ifndef ADCON1 ; but not an ADCON1
- SetReg ADCON0, 0 ; A/D is 8-bit and ADS bits are in ADCON0
- endif
- endif
- endif
- endif
- endif
- endif
- endif
- ;----[Comparators]----------------------------------------------------------
- ifdef CMCON
- ifdef CMEN0 ; 18F1230/1330
- ;SetReg CMCON, 0 ; default already
- else
- ifdef CM2
- SetReg CMCON, 7
- else
- ifdef PM_USED
- "ALLDIGITAL: CMCON value not found"
- else
- messg "ALLDIGITAL: CMCON value not found"
- endif
- endif
- endif
- endif
- ifdef CMCON0
- ifdef NOT_COUTEN
- SetReg CMCON0, 0xF1 ; 10F204/206
- else
- ifdef CMCH
- SetReg CMCON0, 0 ; 12F609/615
- else
- ifdef CM2
- SetReg CMCON0, 7 ; 12F635/683,
- else ; 16F636/639/684/688/913/914/916/917/946
- ifndef PM_USED
- "ALLDIGITAL: CMCON0 value not found"
- else
- messg "ALLDIGITAL: CMCON0 value not found"
- endif
- endif
- endif
- endif
- endif
- ifdef CM1CON0 ; individual comparator controls
- ifdef NOT_C1OUTEN
- SetReg CM1CON0, 0xF1 ; 12F510/506, 16F526
- else
- ; SetReg CM1CON0, 0 ; these already default to 0 --------------
- endif ; 16F882/883/884/886/887/ 610/616
- endif ; 16F631/677/685/687/689/690
- ; these aren't 0, but default to OFF
- ; 18F24J11/25J11/26J11/44J11/45J11/46J11
- ; 18F24J50/25J50/26J50/44J50/45J50/46J50
- ifdef CM2CON0
- ifdef NOT_C2OUTEN
- SetReg CM2CON0, 0xF1
- else
- ; SetReg CM2CON0, 0 ; already default to 0 -----see above-
- endif
- endif
- ; CM1CON ; these aren't 0, but default to OFF
- ; 18F65J50/66J50/66J55/67J50/66J11/66J16/67J11
- ; CM2CON ; 18F85J50/86J50/86J55/87J50/86J11/86J16/87J11
- ifndef PM_USED
- list
- endif
- ENDASM?
- DDISABLE?
- MOVE?CB 000h, INT_Flags
- GOTO?L _OVER_DT_INTS_18
- ASM?
- ;____ Check for PBPL (PBP ver. 2.50 and above only)__________________________
- PBPLongs_Used = 0
- if (R1 - R0 == 4)
- PBPLongs_Used = 1
- ; messg PBPL Used = 1
- endif
- nolist
- ;____ DEFINE available interrupt sources_____________________________________
- #define INT_INT INTCON, INT0IF ;-- INT External, 16F compatible
- #define INT0_INT INTCON, INT0IF ;-- INT0 External
- #define INT1_INT INTCON3,INT1IF ;-- INT1 External
- #define INT2_INT INTCON3,INT2IF ;-- INT2 External
- #define INT3_INT INTCON3,INT3IF ;-- INT3 External
- #define RBC_INT INTCON, RBIF ;-- RB Port Change
- #define TMR0_INT INTCON, TMR0IF ;-- TMR0 Overflow 18F
- #define TMR1_INT PIR1, TMR1IF ;-- TMR1 Overflow
- #define TMR2_INT PIR1, TMR2IF ;-- TMR2 to PR2 Match
- #define TMR3_INT PIR2, TMR3IF ;-- TMR3 Overflow
- #define TMR4_INT PIR3, TMR4IF ;-- TMR4 Overflow
- #define TX_INT PIR1, TXIF ;-- USART Transmit
- #define TX1_INT PIR1, TX1IF ;-- USART1 Transmit
- #define TX2_INT PIR3, TX2IF ;-- USART2 Transmit
- #define RX_INT PIR1, RCIF ;-- USART Receive
- #define RX1_INT PIR1, RC1IF ;-- USART1 Receive
- #define RX2_INT PIR3, RC2IF ;-- USART2 Receive
- #define CMP_INT PIR2, CMIF ;-- Comparator
- #define EE_INT PIR2, EEIF ;-- EEPROM/FLASH Write Operation
- #define BUS_INT PIR2, BCLIF ;-- Bus Collision
- #define LVD_INT PIR2, LVDIF ;-- Low Voltage Detect
- #define HLVD_INT PIR2, HLVDIF ;-- High/Low Voltage Detect
- #define PSP_INT PIR1, PSPIF ;-- Parallel Slave Port Read/Write
- #define AD_INT PIR1, ADIF ;-- A/D Converter
- #define SSP_INT PIR1, SSPIF ;-- Master Synchronous Serial Port
- #define CCP1_INT PIR1, CCP1IF ;-- CCP1
- #define CCP2_INT PIR2, CCP2IF ;-- CCP2
- #define CCP3_INT PIR3, CCP3IF ;-- CCP3
- #define CCP4_INT PIR3, CCP4IF ;-- CCP4
- #define CCP5_INT PIR3, CCP5IF ;-- CCP5
- #define OSC_INT PIR2, OSCFIF ;-- Oscillator Fail
- ; -- Added for ver. 3.2 --
- #define SPP_INT PIR1, SPPIF ;-- Streaming Parallel Port Read/Write
- #define BUS1_INT PIR2, BCL1IF ;-- Bus 1 Collision
- #define BUS2_INT PIR3, BCL2IF ;-- Bus 2 Collision
- #define ECCP1_INT PIR2, ECCP1IF ;-- ECCP1
- #define LCD_INT PIR3, LCDIF ;-- LCD Driver
- #define PMP_INT PIR1, PMPIF ;-- Parallel Master Port
- #define SSP1_INT PIR1, SSP1IF ;-- Synchronous Serial Port 1
- #define SSP2_INT PIR3, SSP2IF ;-- Synchronous Serial Port 2
- #define TMR5_INT PIR3, TMR5IF ;-- Timer 5
- #define PT_INT PIR3, PTIF ;-- PWM Time Base
- #define IC1IF_INT PIR3, IC1IF ;-- Motion Feedback
- #define IC2QEIF_INT PIR3, IC2QEIF ;-- Motion Feedback
- #define IC3DRIF_INT PIR3, IC3DRIF ;-- Motion Feedback
- ;_____ Comparators __________________________________________________________
- #define CMP0_INT PIR1, CMP0IF ;-- Comparator 0 - 1230/1330 only
- CMPIFREG = PIR2 ;-- Comparator 1
- CMPIEREG = PIE2
- CMPIPREG = IPR2
- ifdef C1IF ; 18F24K20 18F25K20 18F26K20
- CM1IFBIT = C1IF ; 18F44K20 18F45K20 18F46K20
- endif
- ifdef CM1IF
- CM1IFBIT = CM1IF ; several J PICs
- endif
- ifdef CMP1IF
- CMPIFREG = PIR1 ; 1230/1330 only
- CM1IFBIT = CMP1IF
- CMPIEREG = PIE1
- CMPIPREG = IPR1
- endif
- ifdef CM1IFBIT
- #define CMP1_INT CMPIFREG, CM1IFBIT
- endif
- ifdef C2IF ;-- Comparator 2
- CM2IFBIT = C2IF ; 18F24K20 18F25K20 18F26K20
- endif ; 18F44K20 18F45K20 18F46K20
- ifdef CM2IF
- CM2IFBIT = CM2IF ; several J PICs
- endif
- ifdef CMP2IF
- CM2IFBIT = CMP2IF ; 1230/1330 only
- endif
- ifdef CM2IFBIT
- #define CMP2_INT CMPIFREG, CM2IFBIT
- endif
- ;_____ USB Module ___________________________________________________________
- #define USB_INT PIR2, USBIF ;-- USB Interrupt (funnel)
- #define USB_ACTV_INT UIR, ACTVIF ;-- Bus Activity Detect
- #define USB_ERR_INT UIR, UERRIF ;-- USB Error Condition INT (funnel)
- #define USB_RST_INT UIR, URSTIF ;-- USB Reset
- #define USB_IDLE_INT UIR, IDLEIF ;-- Idle Detect
- #define USB_STALL_INT UIR, STALLIF ;-- A STALL Handshake
- #define USB_TRN_INT UIR, TRNIF ;-- Transaction Complete
- #define USB_SOF_INT UIR, SOFIF ;-- START-OF-FRAME Token
- ; -- USB Error Flags --
- #define USB_BTO_INT UEIR, BTOEF ;-- Bus Turnaround Time-out Error
- #define USB_BTS_INT UEIR, BTSEF ;-- Bit Stuff Error
- #define USB_CRC16_INT UEIR, CRC16EF ;-- CRC16 Failure
- #define USB_CRC5_INT UEIR, CRC5EF ;-- CRC5 Host Error
- #define USB_DFN8_INT UEIR, DFN8EF ;-- Data Field Size Error
- #define USB_PID_INT UEIR, PIDEF ;-- PID Check Failure
- ;_____ Ethernet Module ______________________________________________________
- #define ETH_INT PIR2, ETHIF ;-- Ethernet Module
- #define ETH_DMA_INT EIR, DMAIF ;-- DMA Interrupt
- #define ETH_LINK_INT EIR, LINKIF ;-- Link Status Change
- #define ETH_PKT_INT EIR, PKTIF ;-- Receive Packet Pending
- #define ETH_RXER_INT EIR, RXERIF ;-- Receive Error
- #define ETH_TXER_INT EIR, TXERIF ;-- Transmit Error
- #define ETH_TX_INT EIR, TXIF ;-- Transmit
- ;_____ CAN Module ___________________________________________________________
- #define CAN_ERR_INT PIR3, ERRIF ;-- CAN bus Error
- #define CAN_IRX_INT PIR3, IRXIF ;-- Invalid Received Message
- #define CAN_RXB0_INT PIR3, RXB0IF ;-* Receive Buffer 0 Mode 0
- #define CAN_FIFOWM_INT PIR3, FIFOWMIF ;-- FIFO Watermark Mode 1, 2
- #define CAN_RXB1_INT PIR3, RXB1IF ;-* Receive Buffer 1 Mode 0
- #define CAN_RXBn_INT PIR3, RXBnIF ;-- Any Receive Buffer Mode 1, 2
- #define CAN_TXB0_INT PIR3, TXB0IF ;-- Transmit Buffer 0
- #define CAN_TXB1_INT PIR3, TXB1IF ;-- Transmit Buffer 1
- #define CAN_TXB2_INT PIR3, TXB2IF ;-* Transmit Buffer 2 Mode 0
- #define CAN_TXBn_INT PIR3, TXBnIF ;-- Any Transmit Buffer Mode 1, 2
- #define CAN_WAKE_INT PIR3, WAKIF ;-- CAN bus Activity Wake-up
- ENDASM?
- ASM?
- ; -- macro --
- INT_Source macro IFR, IFB, IER, IEB, IPR, IPB
- if (IflagReg == IFR) && (IflagBit == IFB)
- list
- INT_Flag_Reg = IFR
- INT_Flag_Bit = IFB
- INT_Enable_Reg = IER
- INT_Enable_Bit = IEB
- INT_Priority_Reg = IPR
- INT_Priority_Bit = IPB
- Found = 1
- endif
- nolist
- endm
- ENDASM?
- ASM?
- ;____________________________________________________________________________
- GetIntInfo macro IflagReg, IflagBit
- nolist
- INT_Flag_Reg = -1
- INT_Flag_Bit = -1
- INT_Enable_Reg = -1
- INT_Enable_Bit = -1
- ifdef IPR1
- INT_Priority_Reg = -1
- INT_Priority_Bit = -1
- endif
- Found = 0
- ifdef INT0IF ;----{ INT0 External Interrupt }----------[INTCON, INT0IF]---
- INT_Source INTCON,INT0IF, INTCON,INT0IE, -1, -1
- endif
- ifdef INT1IF ;----{ INT1 External Interrupt }---------[INTCON3, INT1IF]---
- INT_Source INTCON3,INT1IF, INTCON3,INT1IE, INTCON3,INT1IP
- endif
- ifdef INT2IF ;----{ INT2 External Interrupt }---------[INTCON3, INT2IF]---
- INT_Source INTCON3,INT2IF, INTCON3,INT2IE, INTCON3,INT2IP
- endif
- ifdef INT3IF ;----{ INT3 External Interrupt }---------[INTCON3, INT3IF]---
- INT_Source INTCON3,INT3IF, INTCON3,INT3IE, INTCON2,INT3IP
- endif
- ifdef RBIF ;----{ RB Port Change Interrupt }-----------[INTCON, RBIF]---
- INT_Source INTCON,RBIF, INTCON, RBIE,INTCON2,RBIP
- endif
- ifdef TMR0IF ;----{ TMR0 Overflow Interrupt }----------[INTCON, TMR0IF]---
- INT_Source INTCON,TMR0IF, INTCON,TMR0IE, INTCON2,TMR0IP
- endif
- ifdef TMR1IF ;----{ TMR1 Overflow Interrupt }------------[PIR1, TMR1IF]---
- INT_Source PIR1,TMR1IF, PIE1,TMR1IE, IPR1,TMR1IP
- endif
- ifdef TMR2IF ;----{ TMR2 to PR2 Match Interrupt }--------[PIR1, TMR2IF]---
- INT_Source PIR1,TMR2IF, PIE1,TMR2IE, IPR1,TMR2IP
- endif
- ifdef TMR3IF ;----{ TMR3 Overflow Interrupt }------------[PIR2, TMR3IF]---
- INT_Source PIR2,TMR3IF, PIE2,TMR3IE, IPR2,TMR3IP
- endif
- ifdef TMR4IF ;----{ TMR4 Overflow Interrupt }------------[PIR3, TMR4IF]---
- INT_Source PIR3,TMR4IF, PIE3,TMR4IE, IPR3,TMR4IP
- endif
- ifndef TX1IF ;----{ USART Transmit Interrupt }-------------[PIR1, TXIF]---
- ifdef TXIF
- INT_Source PIR1,TXIF, PIE1,TXIE, IPR1,TXIP
- endif
- endif
- ifdef TX1IF ;----{ USART1 Transmit Interrupt }-----------[PIR1, TX1IF]---
- INT_Source PIR1,TX1IF, PIE1,TX1IE, IPR1,TX1IP
- endif
- ifdef TX2IF ;----{ USART2 Transmit Interrupt }-----------[PIR3, TX2IF]---
- INT_Source PIR3,TX2IF, PIE3,TX2IE, IPR3,TX2IP
- endif
- ifndef RC1IF ;----{ USART Receive Interrupt }---------------[PIR1 RCIF]---
- ifdef RCIF
- INT_Source PIR1,RCIF, PIE1,RCIE, IPR1,RCIP
- endif
- endif
- ifdef RC1IF ;----{ USART1 Receive Interrupt }------------[PIR1, RC1IF]---
- INT_Source PIR1,RC1IF, PIE1,RC1IE, IPR1,RC1IP
- endif
- ifdef RC2IF ;----{ USART2 Receive Interrupt }------------[PIR3, RC2IF]---
- INT_Source PIR3,RC2IF, PIE3,RC2IE, IPR3,RC2IP
- endif
- ifdef CMIF ;----{ Comparator Interrupt }-----------------[PIR2, CMIF]---
- INT_Source PIR2,CMIF, PIE2,CMIE, IPR2,CMIP
- endif
- ifdef EEIF ;----{ EEPROM/FLASH Write Operation Interrupt [PIR2, EEIF]---
- INT_Source PIR2,EEIF, PIE2,EEIE, IPR2,EEIP
- endif
- ifdef BCLIF ;----{ Bus Collision Interrupt }-------------[PIR2, BCLIF]---
- INT_Source PIR2,BCLIF, PIE2,BCLIE, IPR2,BCLIP
- endif
- ifdef LVDIF ;----{ Low Voltage Detect Interrupt }--------[PIR2, LVDIF]---
- INT_Source PIR2,LVDIF, PIE2,LVDIE, IPR2,LVDIP
- endif
- ifdef HLVDIF ;----{ High/Low Voltage Detect Interrupt }--[PIR2, HLVDIF]---
- INT_Source PIR2,HLVDIF, PIE2,HLVDIE, IPR2,HLVDIP
- endif
- ifdef PSPIF ;----{ Parallel Slave Port Interrupt }-------[PIR1, PSPIF]---
- INT_Source PIR1,PSPIF, PIE1,PSPIE, IPR1,PSPIP
- endif
- ifdef ADIF ;----{ A/D Converter Interrupt }--------------[PIR1, ADIF]---
- INT_Source PIR1,ADIF, PIE1,ADIE, IPR1,ADIP
- endif
- ifdef SSPIF ;----{ Synchronous Serial Port Interrupt }---[PIR1, SSPIF]---
- INT_Source PIR1,SSPIF, PIE1,SSPIE, IPR1,SSPIP
- endif
- ifdef CCP1IF ;----{ CCP1 Interrupt }---------------------[PIR1, CCP1IF]---
- INT_Source PIR1,CCP1IF, PIE1,CCP1IE, IPR1,CCP1IP
- endif
- ifdef CCP2IF ;----{ CCP2 Interrupt Flag }----------------[PIR2, CCP2IF]---
- INT_Source PIR2,CCP2IF, PIE2,CCP2IE, IPR2,CCP2IP
- endif
- ifdef CCP3IF ;----{ CCP3 Interrupt Flag }----------------[PIR3, CCP3IF]---
- INT_Source PIR3,CCP3IF, PIE3,CCP3IE, IPR3,CCP3IP
- endif
- ifdef CCP4IF ;----{ CCP4 Interrupt Flag }----------------[PIR3, CCP4IF]---
- INT_Source PIR3,CCP4IF, PIE3,CCP4IE, IPR3,CCP4IP
- endif
- ifdef CCP5IF ;----{ CCP5 Interrupt Flag }----------------[PIR3, CCP5IF]---
- INT_Source PIR3,CCP5IF, PIE3,CCP5IE, IPR3,CCP5IP
- endif
- ifdef OSCFIF ;----{ Osc Fail Interrupt Flag }-----------[PIR2, OSCFIF]---
- INT_Source PIR2,OSCFIF, PIE2,OSCFIE, IPR2,OSCFIP
- endif
- ENDASM?
- ASM?
- ; -- Added for ver. 3.2 --
- ifdef SPPIF ;----{ Streaming Parallel Port Read/Write }--[PIR1, SPPIF]---
- INT_Source PIR1,SPPIF, PIE1,SPPIE, IPR1,SPPIP
- endif
- ifdef BCL1IF ;----{ Bus 1 Collision }--------------------[PIR2, BCL1IF]---
- INT_Source BUS1_INT, PIE2,BCL1IE, IPR2,BCL1IP
- endif
- ifdef BCL2IF ;----{ Bus 2 Collision }--------------------[PIR3, BCL2IF]---
- INT_Source BUS2_INT, PIE3,BCL2IE, IPR3,BCL2IP
- endif
- ifdef CMP0IF ;----{ Comparator 0 }-----------------------[PIR1, CMP0IF]---
- INT_Source CMP0_INT, PIE1,CMP0IE, IPR1,CMP0IP
- endif
- ifdef CM1IFBIT ;--{ Comparator 1 }-----------------------------[varies]---
- INT_Source CMP1_INT, CMPIEREG,CM1IFBIT, CMPIPREG,CM1IFBIT
- endif
- ifdef CM2IFBIT ;--{ Comparator 2 }-----------------------------[varies]---
- INT_Source CMP2_INT, CMPIEREG,CM2IFBIT, CMPIPREG,CM2IFBIT
- endif
- ifdef ECCP1IF ;---{ ECCP1 }-----------------------------[PIR2, ECCP1IF]---
- INT_Source ECCP1_INT, PIE2,ECCP1IE, IPR2,ECCP1IP
- endif
- ifdef LCDIF ;----{ LCD Driver }--------------------------[PIR3, LCDIF]---
- INT_Source LCD_INT, PIE3,LCDIE, IPR3,LCDIP
- endif
- ifdef PMPIF ;----{ Parallel Master Port }----------------[PIR1, PMPIF]---
- INT_Source PMP_INT, PIE1,PMPIE, IPR1,PMPIP
- endif
- ifdef SSP1IF ;----{ Synchronous Serial Port 1 }----------[PIR1, SSP1IF]---
- INT_Source SSP1_INT, PIE1,SSP1IE, IPR1,SSP1IP
- endif
- ifdef SSP2IF ;----{ Synchronous Serial Port 2 }----------[PIR3, SSP2IF]---
- INT_Source SSP2_INT, PIE3,SSP2IE, IPR3,SSP2IP
- endif
- ifdef TMR5IF ;----{ Timer 5 }----------------------------[PIR3, TMR5IF]---
- INT_Source TMR5_INT, PIE3,TMR5IE, IPR3,TMR5IP
- endif
- ifdef PTIF ;----{ PWM Time Base }------------------------[PIR3, PTIF]---
- INT_Source PT_INT, PIE3,PTIE, IPR3,PTIP
- endif
- ifdef IC1IF ;----{ Motion Feedback IC1}------------------[PIR3, IC1IF]---
- INT_Source IC1IF_INT, PIE3,IC1IE, IPR3,IC1IP
- endif
- ifdef IC2QEIF ;----{ Motion Feedback IC2QE}--------------[PIR3, IC2QEIF]---
- INT_Source IC2QEIF_INT, PIE3,IC2QEIE, IPR3,IC2QEIP
- endif
- ifdef IC3DRIF ;----{ Motion Feedback IC3DR}--------------[PIR3, IC3DRIF]---
- INT_Source IC3DRIF_INT, PIE3,IC3DRIE, IPR3,IC3DRIP
- endif
- ; ifdef ;----{ }-------------[, ]---
- ; INT_Source , ,, ,
- ; endif
- ENDASM?
- ASM?
- ; -- USB sources --
- ifdef USBIF ;----{ USB Interrupt funnel }---------------[PIR2, USBIF]---
- INT_Source PIR2,USBIF, PIE2,USBIE, IPR2,USBIP
- ;----{ Bus Activity Detect }-----------------[UIR, ACTVIF]---
- INT_Source USB_ACTV_INT, UIE,ACTVIE, _NoPriority
- ;----{ USB Reset }---------------------------[UIR, URSTIF]---
- INT_Source USB_RST_INT, UIE,URSTIE, _NoPriority
- ;----{ Idle Detect }-------------------------[UIR, IDLEIF]---
- INT_Source USB_IDLE_INT, UIE,IDLEIE, _NoPriority
- ;----{ A STALL Handshake }------------------[UIR, STALLIF]---
- INT_Source USB_STALL_INT, UIE,STALLIE, _NoPriority
- ;----{ Transaction Complete }-----------------[UIR, TRNIF]---
- INT_Source USB_TRN_INT, UIE,TRNIE, _NoPriority
- ;----{ START-OF-FRAME Token }-----------------[UIR, SOFIF]---
- INT_Source USB_SOF_INT, UIE,SOFIE, _NoPriority
- ; -- USB Error Flags --
- ;----{ USB Error Condition Int funnel }------[UIR, UERRIF]---
- INT_Source USB_ERR_INT, UIE,UERRIE, _NoPriority
- ;----{ Bus Turnaround Time-out Error }-------[UEIR, BTOEF]---
- INT_Source USB_BTO_INT, UEIE,BTOEE, _NoPriority
- ;----{ Bit Stuff Error }---------------------[UEIR, BTSEF]---
- INT_Source USB_BTS_INT, UEIE,BTSEE, _NoPriority
- ;--{ CRC16 Failure }-----------------------[UEIR, CRC16EF]---
- INT_Source USB_CRC16_INT, UEIE,CRC16EE, _NoPriority
- ;---{ CRC5 Host Error }---------------------[UEIR, CRC5EF]---
- INT_Source USB_CRC5_INT, UEIE,CRC5EE, _NoPriority
- ;---{ Data Field Size Error }---------------[UEIR, DFN8EF]---
- INT_Source USB_DFN8_INT, UEIE,DFN8EE, _NoPriority
- ;----{ PID Check Failure }-------------------[UEIR, PIDEF]---
- INT_Source USB_PID_INT, UEIE,PIDEE, _NoPriority
- endif
- ENDASM?
- ASM?
- ; -- Ethernet sources --
- ifdef ETHIF ;----{ Ethernet Module }----------------------[PIR2, ETHIF]---
- INT_Source ETH_INT, PIE2,ETHIE, IPR2,ETHIP
- ;----{ DMA Interrupt }-------------------------[EIR, DMAIF]---
- INT_Source ETH_DMA_INT, EIE,DMAIE, _NoPriority
- ;----{ Link Status Change }-------------------[EIR, LINKIF]---
- INT_Source ETH_LINK_INT, EIE,LINKIE, _NoPriority
- ;----{ Receive Packet Pending }----------------[EIR, PKTIF]---
- INT_Source ETH_PKT_INT, EIE,PKTIE, _NoPriority
- ;----{ Receive Error }------------------------[EIR, RXERIF]---
- INT_Source ETH_RXER_INT, EIE,RXERIE, _NoPriority
- ;----{ Transmit Error }-----------------------[EIR, TXERIF]---
- INT_Source ETH_TXER_INT, EIE,TXERIE, _NoPriority
- ;----{ Transmit }-------------------------------[EIR, TXIF]---
- INT_Source ETH_TX_INT, EIE,TXIE, _NoPriority
- endif
- ENDASM?
- ASM?
- ; -- CAN Module --
- ifdef WAKIF
- ;----{ CAN bus Error }------------------------[PIR3, ERRIF]---
- INT_Source CAN_ERR_INT, PIE3,ERRIE, IPR3,ERRIP
- ;----{ Invalid Received Message }-------------[PIR3, IRXIF]---
- INT_Source CAN_IRX_INT, PIE3,IRXIE, IPR3,IRXIP
- ;----{ Receive Buffer 0 }------Mode 0--------[PIR3, RXB0IF]---
- INT_Source CAN_RXB0_INT, PIE3,RXB0IE, IPR3,RXB0IP
- ;----{ FIFO Watermark }--------Mode 1, 2---[PIR3, FIFOWMIF]---
- INT_Source CAN_FIFOWM_INT, PIE3,FIFOWMIE, IPR3,FIFOWMIP
- ;----{ Receive Buffer 1 }------Mode 0--------[PIR3, RXB1IF]---
- INT_Source CAN_RXB1_INT, PIE3,RXB1IE, IPR3,RXB1IP
- ;----{ Any Receive Buffer }----Mode 1, 2-----[PIR3, RXBnIF]---
- INT_Source CAN_RXBn_INT, PIE3,RXBnIE, IPR3,RXBnIP
- ;----{ Transmit Buffer 0 }-------------------[PIR3, TXB0IF]---
- INT_Source CAN_TXB0_INT, PIE3,TXB0IE, IPR3,TXB0IP
- ;----{ Transmit Buffer 1 }-------------------[PIR3, TXB1IF]---
- INT_Source CAN_TXB1_INT, PIE3,TXB1IE, IPR3,TXB1IP
- ;----{ Transmit Buffer 2 }-----Mode 0=-------[PIR3, TXB2IF]---
- INT_Source CAN_TXB2_INT, PIE3,TXB2IE, IPR3,TXB2IP
- ;----{ Any Transmit Buffer }---Mode 1, 2-----[PIR3, TXBnIF]---
- INT_Source CAN_TXBn_INT, PIE3,TXBnIE, IPR3,TXBnIP
- ;----{ CAN bus Activity Wake-up }-------------[PIR3, WAKIF]---
- INT_Source CAN_WAKE_INT, PIE3,WAKIE, IPR3,WAKIP
- endif
- list
- endm
- list
- ENDASM?
- ASM?
- ifndef USE_LOWPRIORITY
- INT_ENTRY_L
- retfie
- else
- if (USE_LOWPRIORITY != 1)
- INT_ENTRY_L
- retfie
- endif
- endif
- ENDASM?
- ASM?
- asm = 0 ; Assembly language Interrupts
- ASM = 0
- Asm = 0
- pbp = 1 ; Basic language interrupts
- PBP = 1
- Pbp = 1
- YES = 1
- yes = 1
- Yes = 1
- NO = 0
- no = 0
- No = 0
- H equ 'H' ; High Priority
- h equ 'H'
- L equ 'L' ; Low Priority
- l equ 'L'
- nolist
- ;_____________________________________________________________________________
- SaveFSR macro F, Pr
- list
- if (F >= 0) && (F <= 2)
- if (Pr == H) || (Pr == L)
- movff FSR#v(F)L, fsave#v(F)Pr
- movff FSR#v(F)H, fsave#v(F)Pr + 1
- nolist
- else
- ERROR "SaveFSR - Invalid Priority"
- endif
- else
- ERROR "SaveFSR - Invalid FSR number"
- endif
- list
- endm
- ENDASM?
- ASM?
- RestFSR macro F, Pr
- list
- if (F >= 0) && (F <= 2)
- if (Pr == H) || (Pr == L)
- movff fsave#v(F)Pr , FSR#v(F)L
- movff fsave#v(F)Pr + 1 , FSR#v(F)H
- nolist
- else
- ERROR "RestFSR - Invalid Priority"
- endif
- else
- ERROR "RestFSR - Invalid FSR number"
- endif
- list
- endm
- ENDASM?
- ASM?
- INT_FINISH_H macro
- endm
- ENDASM?
- ASM?
- INT_CREATE_H macro
- local OverCREATE
- goto OverCREATE
- Priority = H
- INT_ENTRY_H
- movff PCLATU, psaveUH
- movff PCLATH, psaveH
- SaveFSR 0, H
- SaveFSR 1, H
- SaveFSR 2, H
- bsf _InHPint, 0
- List_Start_H
- bcf _Serviced_H, 0 ; Clear Serviced flag
- clrf BSR
- PREV_BANK = 0
- ifdef INT_LIST_H
- INT_LIST_H ; Expand the users list of HP INT handlers
- else
- ifdef INT_LIST
- INT_LIST ; Expand the 16F Compatible List
- else
- error "INT_CREATE_H - INT_LIST or INT_LIST_H not found"
- endif
- endif
- btfsc _Serviced_H,0 ; if anything was serviced
- goto List_Start_H ; go around, and check again
- ifdef ReEnterHPused ; was ReEnterPBP-18.bas included
- GetAddress21 INT_EXIT_H, RetAddrH
- L?GOTO _RestorePBP_H ; Restore PBP system Vars
- endif
- INT_EXIT_H
- PREV_BANK = 0
- bcf _InHPint, 0
- RestFSR 0, H ; Restore FSR0, if it was saved?
- RestFSR 1, H ; Restore FSR1, if it was saved?
- RestFSR 2, H ; Restore FSR2, if it was saved?
- movff psaveH, PCLATH
- movff psaveUH, PCLATU
- retfie FAST ; Return from Interrupt
- OverCREATE
- bsf INTCON,GIE, 0 ; Enable High Priority Interrupts
- bsf INTCON,PEIE, 0 ; Enable Peripheral Interrupts
- endm
- ;---[Stay compatible with the 14-bit version]---------------------------------
- INT_CREATE macro
- INT_CREATE_H
- endm
- ENDASM?
- ASM?
- INT_CREATE_L macro
- local OverCREATE
- goto OverCREATE
- ifdef USE_LOWPRIORITY
- if (USE_LOWPRIORITY != 1)
- error "'DEFINE USE_LOWPRIORITY 1' required for Low Priority Interrupts"
- endif
- else
- error "'DEFINE USE_LOWPRIORITY 1' required for Low Priority Interrupts"
- endif
- Priority = L
- INT_ENTRY_L
- movff WREG, wsave ; Wreg
- movff STATUS, ssave ; STATUS
- movff BSR, bsave ; BSR
- movff PCLATU, psaveUL
- movff PCLATH, psaveL
- SaveFSR 0, L ; FSR0
- SaveFSR 1, L ; FSR1
- SaveFSR 2, L ; FSR2
- bcf _InHPint, 0
- List_Start_L
- clrf BSR
- PREV_BANK = 0
- bcf _Serviced_L, 0
- ifdef INT_LIST_L
- INT_LIST_L ; Expand the users list of HP INT handlers
- else
- error "INT_CREATE_L - INT_LIST_L not defined, can not create"
- endif
- btfsc _Serviced_L, 0 ; if anything was serviced
- goto List_Start_L ; go around, and check again
- ifdef ReEnterLPused ; was ReEnterPBP-18LP.bas included
- GetAddress21 INT_EXIT_L, RetAddrL
- L?GOTO _RestorePBP_L ; Restore PBP system Vars
- endif
- INT_EXIT_L
- PREV_BANK = 0
- RestFSR 0, L ; Restore saved vars
- RestFSR 1, L
- RestFSR 2, L
- movff psaveUL, PCLATU
- movff psaveL, PCLATH
- movff bsave, BSR ; BSR
- movff wsave, WREG ; WREG
- movff ssave, STATUS ; STATUS
- retfie ; Return from Interrupt
- OverCREATE
- bsf RCON,IPEN, 0 ; Enable Interrupt Priorities
- bsf INTCON,GIEL, 0 ; Enable Low Priority Interrupts
- endm
- ENDASM?
- ASM?
- ;---[Returns the Address of a Label as a Word]--(under 64K)------------------
- GetAddress macro Label, Wout
- CHK?RP Wout
- movlw low Label ; get low byte
- movwf Wout
- movlw High Label ; get high byte
- movwf Wout + 1
- endm
- ;---[Returns the Address of a Label as a 3 byte array]---(under/over 64k)-----
- GetAddress21 macro Label, Aout
- CHK?RP Aout
- movlw low Label ; get low byte
- movwf Aout
- movlw high Label ; get high byte
- movwf Aout + 1
- movlw upper Label ; get upper byte
- movwf Aout + 2
- endm
- ;---[find correct bank for a PBP BIT variable]-------------------------------
- CHKRP?T macro reg, bit
- CHK?RP reg
- endm
- ;---[find Assigned Priority for specified INT Source]------------------------
- INT_Count = 0
- FindIntPriority macro IntFlagReg, IntFlagBit
- local LoopCount
- nolist
- Pfound = 0
- LoopCount = 1
- while LoopCount <= INT_Count
- if (IntFlagReg == PrList#v(LoopCount)R)
- if (IntFlagBit == PrList#v(LoopCount)B)
- list
- Priority = PrList#v(LoopCount)Priority
- Pfound = 1
- endif
- endif
- LoopCount += 1
- endw
- endm
- ENDASM?
- ASM?
- ;---[Add an Interrupt Source to the user's list of INT Handlers]--------------
- INT_Handler macro IntFlagReg, IntFlagBit, Label, Type, Reset
- list
- local AfterSave, AfterUser, NoInt
- INT_Count += 1
- PrList#v(INT_Count)R = IntFlagReg
- PrList#v(INT_Count)B = IntFlagBit
- PrList#v(INT_Count)Priority = Priority
- GetIntInfo IntFlagReg, IntFlagBit
- if (Found == YES)
- btfss INT_Enable_Reg, INT_Enable_Bit, 0 ; if INT is enabled
- goto NoInt
- btfss INT_Flag_Reg, INT_Flag_Bit, 0 ; and the Flag set?
- goto NoInt
- if (Priority == H)
- bsf _Serviced_H, 0
- else
- bsf _Serviced_L, 0
- endif
- ifdef NO_CLRWDT
- if (NO_CLRWDT != 1)
- CLRWDT
- endif
- else
- CLRWDT
- endif
- if (Type == PBP) ; If INT handler is PBP
- if (Priority == H)
- ifdef ReEnterHPused
- GetAddress21 AfterSave, RetAddrH
- L?GOTO _SavePBP_H ; Save PBP system Vars in HP INT
- else
- error "ReEnterPBP-18 must be INCLUDEd to use High Priority PBP interrupts"
- endif
- else ; Priority = L
- ifdef ReEnterLPused
- GetAddress21 AfterSave, RetAddrL
- L?GOTO _SavePBP_L ; Save PBP system Vars in LP INT
- else
- error "ReEnterPBP-18LP must be INCLUDEd to use Low Priority PBP interrupts"
- endif
- endif
- endif
- AfterSave
- PREV_BANK = 0
- if (Priority == H)
- GetAddress21 AfterUser, RetAddrH
- else ; Priority = L
- GetAddress21 AfterUser, RetAddrL
- endif
- L?GOTO Label ; goto the users INT handler
- AfterUser
- PREV_BANK = 0
- if (Reset == YES) ; reset flag (if specified)
- bcf INT_Flag_Reg, INT_Flag_Bit, 0
- endif
- else
- error Interrupt Source (IntFlagReg,IntFlagBit) not found
- endif
- NoInt
- clrf BSR
- PREV_BANK = 0
- endm
- ENDASM?
- ASM?
- ;---[Returns from a "goto" subroutine]--(21-bit RetAddr? must be set first)---
- INT_RETURN macro
- local Ret2LP, Ret2HP
- btfsc _InHPint, 0
- goto Ret2HP
- Ret2LP
- movff RetAddrL + 2, PCLATU ; Load PC buffers with return address
- movff RetAddrL + 1, PCLATH
- movf RetAddrL, W, 0
- clrf BSR ; Set to BANK0 before returning
- PREV_BANK = 0 ; Tell PBP about the BANK change
- movwf PCL, 0 ; Go back to where we were
- Ret2HP
- movff RetAddrH + 2, PCLATU ; Load PC buffers with return address
- movff RetAddrH + 1, PCLATH
- movf RetAddrH, W, 0
- clrf BSR ; Set to BANK0 before returning
- PREV_BANK = 0 ; Tell PBP about the BANK change
- movwf PCL, 0 ; Go back to where we were
- endm
- ;---[Enable an interrupt source]----------------------------------------------
- INT_ENABLE macro IntFlagReg, IntFlagBit
- GetIntInfo IntFlagReg, IntFlagBit
- if (Found == YES)
- FindIntPriority IntFlagReg, IntFlagBit
- if (Pfound == 1)
- if (INT_Priority_Reg != -1)
- if (Priority == H)
- bsf INT_Priority_Reg, INT_Priority_Bit, 0
- else
- if (Priority == L)
- bcf INT_Priority_Reg, INT_Priority_Bit, 0
- else
- error "INT_ENABLE - Invalid Priority Specified"
- endif
- endif
- else
- if (Priority == L)
- error "INT0_INT can NOT be assigned to Low Priority"
- endif
- endif
- else
- error "INT_ENABLE - Priority State Not Found"
- endif
- ; bcf INT_Flag_Reg, INT_Flag_Bit, 0 ; clear the flag first
- bsf INT_Enable_Reg, INT_Enable_Bit, 0 ; enable the INT source
- else
- error "INT_ENABLE - Interrupt Source not found!"
- endif
- endm
- ;---[Disable an interrupt source]---------------------------------------------
- INT_DISABLE macro IntFlagReg, IntFlagBit
- GetIntInfo IntFlagReg, IntFlagBit
- if (Found == YES)
- bcf INT_Enable_Reg, INT_Enable_Bit, 0 ; disable the INT source
- else
- error "INT_DISABLE - Interrupt Source not found!"
- endif
- endm
- ;---[Clear an interrupt Flag]-------------------------------------------------
- INT_CLEAR macro IntFlagReg, IntFlagBit
- GetIntInfo IntFlagReg, IntFlagBit
- if (Found == YES)
- bcf INT_Flag_Reg, INT_Flag_Bit, 0 ; clear the INT flag
- else
- error "INT_CLEAR - Interrupt Source not found!"
- endif
- endm
- ENDASM?
- ASM?
- Save_TBLPTR = 0
- ifdef SIN_USED
- Save_TBLPTR = 1
- endif
- ifdef DTMFOUT_USED
- Save_TBLPTR = 1
- endif
- ifdef SERDELAY_USED
- Save_TBLPTR = 1
- endif
- ifdef CONVBIT_USED
- Save_TBLPTR = 1
- endif
- ifdef ERASECODE_USED
- Save_TBLPTR = 1
- endif
- ifdef READCODE_USED
- Save_TBLPTR = 1
- endif
- ifdef WRITECODE_USED
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?BCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?BCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?BCLW
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?CCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?CCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?CCLW
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?WCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?WCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKDOWN?WCLW
- Save_TBLPTR = 1
- endif
- ifdef LOOK2_USED
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?BCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?BCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?BCLW
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?CCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?CCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?CCLW
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?TCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?TCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?TCLW
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?WCLB
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?WCLT
- Save_TBLPTR = 1
- endif
- ifdef LOOKUP?WCLW
- Save_TBLPTR = 1
- endif
- ENDASM?
- LABEL?L _OVER_DT_INTS_18
- DENABLE?
- DDISABLE?
- MOVE?CT 000h, _VarsSaved_H
- GOTO?L _OverReEnterH
- LABEL?L _SavePBP_H
- CMPNE?TCL _VarsSaved_H, 000h, L00002
- MOVE?WW R0, _R0_SaveH
- MOVE?WW R1, _R1_SaveH
- MOVE?WW R2, _R2_SaveH
- MOVE?WW R3, _R3_SaveH
- ASM?
- if (PBPLongs_Used == 1)
- MOVE?WW R0+2, _R0_SaveH+2
- MOVE?WW R1+2, _R1_SaveH+2
- MOVE?WW R2+2, _R2_SaveH+2
- MOVE?WW R3+2, _R3_SaveH+2
- endif
- ENDASM?
- MOVE?WW R4, _R4_SaveH
- MOVE?WW R5, _R5_SaveH
- MOVE?WW R6, _R6_SaveH
- MOVE?WW R7, _R7_SaveH
- MOVE?WW R8, _R8_SaveH
- MOVE?BB FLAGS, _Flags_SaveH
- MOVE?BB GOP, _GOP_SaveH
- MOVE?BB RM1, _RM1_SaveH
- MOVE?BB RM2, _RM2_SaveH
- MOVE?BB RR1, _RR1_SaveH
- MOVE?BB RR2, _RR2_SaveH
- ASM?
- if Save_TBLPTR == 1
- ENDASM?
- MOVE?BB TBLPTRU, _TBLPTRU_SaveH
- MOVE?BB TBLPTRH, _TBLPTRH_SaveH
- MOVE?BB TBLPTRL, _TBLPTRL_SaveH
- ASM?
- endif
- ENDASM?
- ASM?
- ifdef RS1
- MOVE?BB RS1, _RS1_SaveH
- endif
- ifdef RS2
- MOVE?BB RS2, _RS2_SaveH
- endif
- ifdef MUL_USED
- MOVE?WW PRODL, _Product_H
- endif
- ifdef T1
- MOVE?WW T1, _T1_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T1+2, _T1_SaveH+2
- endif
- endif
- ifdef T2
- MOVE?WW T2, _T2_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T2+2, _T2_SaveH+2
- endif
- endif
- ifdef T3
- MOVE?WW T3, _T3_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T3+2, _T3_SaveH+2
- endif
- endif
- ifdef T4
- MOVE?WW T4, _T4_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T4+2, _T4_SaveH+2
- endif
- endif
- ifdef T5
- MOVE?WW T5, _T5_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T5+2, _T5_SaveH+2
- endif
- endif
- ifdef T6
- MOVE?WW T6, _T6_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T6+2, _T6_SaveH+2
- endif
- endif
- ifdef T7
- MOVE?WW T7, _T7_SaveH
- if (PBPLongs_Used == 1)
- MOVE?WW T7+2, _T7_SaveH+2
- endif
- endif
- ENDASM?
- MOVE?CT 001h, _VarsSaved_H
- LABEL?L L00002
- ASM?
- INT_RETURN
- ENDASM?
- LABEL?L _RestorePBP_H
- CMPNE?TCL _VarsSaved_H, 001h, L00004
- MOVE?WW _R0_SaveH, R0
- MOVE?WW _R1_SaveH, R1
- MOVE?WW _R2_SaveH, R2
- MOVE?WW _R3_SaveH, R3
- ASM?
- if (PBPLongs_Used == 1)
- MOVE?WW _R0_SaveH+2, R0+2
- MOVE?WW _R1_SaveH+2, R1+2
- MOVE?WW _R2_SaveH+2, R2+2
- MOVE?WW _R3_SaveH+2, R3+2
- endif
- ENDASM?
- MOVE?WW _R4_SaveH, R4
- MOVE?WW _R5_SaveH, R5
- MOVE?WW _R6_SaveH, R6
- MOVE?WW _R7_SaveH, R7
- MOVE?WW _R8_SaveH, R8
- MOVE?BB _Flags_SaveH, FLAGS
- MOVE?BB _GOP_SaveH, GOP
- MOVE?BB _RM1_SaveH, RM1
- MOVE?BB _RM2_SaveH, RM2
- MOVE?BB _RR1_SaveH, RR1
- MOVE?BB _RR2_SaveH, RR2
- ASM?
- if Save_TBLPTR == 1
- ENDASM?
- MOVE?BB _TBLPTRU_SaveH, TBLPTRU
- MOVE?BB _TBLPTRH_SaveH, TBLPTRH
- MOVE?BB _TBLPTRL_SaveH, TBLPTRL
- ASM?
- endif
- ENDASM?
- ASM?
- ifdef RS1
- MOVE?BB _RS1_SaveH, RS1
- endif
- ifdef RS2
- MOVE?BB _RS2_SaveH, RS2
- endif
- ifdef MUL
- MOVE?WW _Product_H, PRODL
- endif
- ifdef T1
- MOVE?WW _T1_SaveH, T1
- if (PBPLongs_Used == 1)
- MOVE?WW _T1_SaveH+2, T1+2
- endif
- endif
- ifdef T2
- MOVE?WW _T2_SaveH, T2
- if (PBPLongs_Used == 1)
- MOVE?WW _T2_SaveH+2, T2+2
- endif
- endif
- ifdef T3
- MOVE?WW _T3_SaveH, T3
- if (PBPLongs_Used == 1)
- MOVE?WW _T3_SaveH+2, T3+2
- endif
- endif
- ifdef T4
- MOVE?WW _T4_SaveH, T4
- if (PBPLongs_Used == 1)
- MOVE?WW _T4_SaveH+2, T4+2
- endif
- endif
- ifdef T5
- MOVE?WW _T5_SaveH, T5
- if (PBPLongs_Used == 1)
- MOVE?WW _T5_SaveH+2, T5+2
- endif
- endif
- ifdef T6
- MOVE?WW _T6_SaveH, T6
- if (PBPLongs_Used == 1)
- MOVE?WW _T6_SaveH+2, T6+2
- endif
- endif
- ifdef T7
- MOVE?WW _T7_SaveH, T7
- if (PBPLongs_Used == 1)
- MOVE?WW _T7_SaveH+2, T7+2
- endif
- endif
- ifdef T8
- ifndef NO_T7_WARNING
- messg "Temp variables exceeding T7"
- endif
- endif
- ENDASM?
- MOVE?CT 000h, _VarsSaved_H
- LABEL?L L00004
- ASM?
- INT_RETURN
- ENDASM?
- LABEL?L _OverReEnterH
- DENABLE?
- MOVE?CB 060h, OSCCON
- MOVE?CB 000h, _tempAdj_bit
- MOVE?CB 008h, _hyst
- MOVE?CB 046h, _myTemp
- ASM?
- INT_LIST macro ; IntSource, Label, Type, ResetFlag?
- INT_Handler RX_INT, _read_serial, PBP, yes
- endm
- INT_CREATE ; Creates the interrupt processor
- ENDASM?
- MOVE?CB 092h, T0CON
- ASM?
- INT_ENABLE RX_INT ; enable external (RX) interrupts
- ENDASM?
- LABEL?L _Setup
- PAUSE?C 003E8h
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 042h
- SEROUT2?C 036h
- SEROUT2?C 034h
- PAUSE?C 001F4h
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 066h
- PAUSE?C 0C8h
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 063h
- SEROUT2?C 030h
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 047h
- SEROUT2?C 034h
- SEROUT2?C 032h
- SEROUT2?C 030h
- HIGH?T _Reset
- SHIFTDATA?T _DQ
- SHIFTCLOCK?T _Clock
- SHIFTMODE?C _LSBFIRST
- SHIFTOUT?CC _WrCfg, 008h
- SHIFTOUT?CC 002h, 008h
- LOW?T _Reset
- PAUSE?C 00Ah
- HIGH?T _Reset
- SHIFTDATA?T _DQ
- SHIFTCLOCK?T _Clock
- SHIFTMODE?C _LSBFIRST
- SHIFTOUT?CC _StartC, 008h
- LOW?T _Reset
- PAUSE?C 0C8h
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 066h
- LABEL?L _Main
- DEBUG?C 068h
- DEBUG?C 065h
- DEBUG?C 072h
- DEBUG?C 065h
- DEBUG?C _CR
- CMPNE?BCL _mem, 001h, L00006
- CMPEQ?BTL _mem, _backlight_bit, L00008
- MOVE?BT _mem, _backlight_bit
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 042h
- SEROUT2?C 039h
- SEROUT2?C 036h
- LABEL?L L00008
- LABEL?L L00006
- CMPNE?BCL _mem, 000h, L00010
- CMPEQ?BTL _mem, _backlight_bit, L00012
- MOVE?BT _mem, _backlight_bit
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 042h
- SEROUT2?C 031h
- SEROUT2?C 031h
- LABEL?L L00012
- LABEL?L L00010
- MOVE?CW 000h, _timelmt
- MOVE?CW 001h, _x
- LABEL?L L00014
- CMPGT?WCL _x, 00974h, L00015
- PAUSE?C 001h
- NEXT?WCL _x, 001h, L00014
- LABEL?L L00015
- GOSUB?L _Read_DS1620
- DEBUGCOUNT?C 000h
- DEBUGNUM?T _backlight_bit
- DEBUGDEC?
- DEBUG?C _CR
- CMPNE?BCL _Nb_var93, 000h, L00016
- LOW?T _relay
- LABEL?L L00016
- CMPNE?BCL _Nb_var93, 001h, L00018
- GOSUB?L _Check_temp
- LABEL?L L00018
- ASM?
- INT_DISABLE RX_INT
- ENDASM?
- CMPEQ?TCB _Down_button, 000h, T1
- CMPEQ?TCB _up_button, 000h, T2
- LOR?BBW T1, T2, T2
- CMPF?WL T2, L00020
- GOSUB?L _inpress
- LABEL?L L00020
- CMPNE?TCL _time_bit, 001h, L00022
- CMPNE?BCL _mode, 001h, L00024
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 034h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2?C 057h
- SEROUT2?C 061h
- SEROUT2?C 06Bh
- SEROUT2?C 065h
- SEROUT2?C 020h
- SEROUT2?C 020h
- LABEL?L L00024
- CMPNE?BCL _mode, 002h, L00026
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 034h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2?C 04Ch
- SEROUT2?C 065h
- SEROUT2?C 061h
- SEROUT2?C 076h
- SEROUT2?C 065h
- SEROUT2?C 020h
- LABEL?L L00026
- CMPNE?BCL _mode, 003h, L00028
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 034h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2?C 052h
- SEROUT2?C 065h
- SEROUT2?C 074h
- SEROUT2?C 075h
- SEROUT2?C 072h
- SEROUT2?C 06Eh
- LABEL?L L00028
- CMPNE?BCL _mode, 004h, L00030
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 034h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2?C 053h
- SEROUT2?C 06Ch
- SEROUT2?C 065h
- SEROUT2?C 065h
- SEROUT2?C 070h
- SEROUT2?C 020h
- LABEL?L L00030
- CMPGE?BCL _hour, 00Ch, L00032
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 038h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 033h
- SEROUT2?C 041h
- SEROUT2?C 04Dh
- LABEL?L L00032
- CMPNE?BCL _hour, 00Ch, L00034
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 038h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 033h
- SEROUT2?C 050h
- SEROUT2?C 04Dh
- LABEL?L L00034
- CMPLE?BCL _hour, 00Ch, L00036
- SUB?BCB _hour, 00Ch, _hour
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 038h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 033h
- SEROUT2?C 050h
- SEROUT2?C 04Dh
- LABEL?L L00036
- CMPNE?BCL _hour, 000h, L00038
- MOVE?CB 00Ch, _hour
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 038h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 033h
- SEROUT2?C 041h
- SEROUT2?C 04Dh
- LABEL?L L00038
- CMPNE?BCL _Day, 001h, L00040
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 04Dh
- SEROUT2?C 06Fh
- SEROUT2?C 06Eh
- SEROUT2?C 020h
- LABEL?L L00040
- CMPNE?BCL _Day, 002h, L00042
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 054h
- SEROUT2?C 075h
- SEROUT2?C 065h
- SEROUT2?C 073h
- LABEL?L L00042
- CMPNE?BCL _Day, 003h, L00044
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 057h
- SEROUT2?C 065h
- SEROUT2?C 064h
- SEROUT2?C 020h
- LABEL?L L00044
- CMPNE?BCL _Day, 004h, L00046
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 054h
- SEROUT2?C 068h
- SEROUT2?C 072h
- SEROUT2?C 073h
- LABEL?L L00046
- CMPNE?BCL _Day, 005h, L00048
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 046h
- SEROUT2?C 072h
- SEROUT2?C 069h
- SEROUT2?C 020h
- LABEL?L L00048
- CMPNE?BCL _Day, 006h, L00050
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 053h
- SEROUT2?C 061h
- SEROUT2?C 074h
- SEROUT2?C 020h
- LABEL?L L00050
- CMPNE?BCL _Day, 007h, L00052
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 032h
- SEROUT2?C 053h
- SEROUT2?C 075h
- SEROUT2?C 06Eh
- SEROUT2?C 020h
- LABEL?L L00052
- MOVE?CT 000h, _time_bit
- LABEL?L L00022
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 032h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 033h
- SEROUT2COUNT?C 002h
- SEROUT2NUM?B _hour
- SEROUT2DEC?
- SEROUT2?C 03Ah
- SEROUT2COUNT?C 002h
- SEROUT2NUM?B _Minute
- SEROUT2DEC?
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 031h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2COUNT?C 000h
- SEROUT2NUM?B _myTemp
- SEROUT2DEC?
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 031h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 031h
- ASM?
- INT_ENABLE RX_INT
- ENDASM?
- GOTO?L _Main
- LABEL?L _Read_DS1620
- HIGH?T _Reset
- SHIFTDATA?T _DQ
- SHIFTCLOCK?T _Clock
- SHIFTMODE?C _LSBFIRST
- SHIFTOUT?CC _RdTmp, 008h
- SHIFTDATA?T _DQ
- SHIFTCLOCK?T _Clock
- SHIFTMODE?C _LSBPRE
- SHIFTIN?WC _tempIn, 009h
- LOW?T _Reset
- UMINUS?TB _sign, _tempIn??BYTE1
- MUL?WCW _tempIn, 005h, _tC
- CMPNE?TCL _tC??BIT15, 000h, L00054
- MULMID?WCW _tC, 001CCh, T1
- ADD?WCW T1, 00140h, _tF
- GOTO?L L00055
- LABEL?L L00054
- ABS?WW _tC, T1
- MULMID?WCW T1, 001CCh, T1
- SUB?CWW 00140h, T1, _tF
- LABEL?L L00055
- ASM?
- INT_DISABLE RX_INT
- ENDASM?
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 030h
- SEROUT2?C 031h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 031h
- SEROUT2?C 03Fh
- SEROUT2?C 03Eh
- SEROUT2?C 033h
- ASM?
- INT_ENABLE RX_INT
- ENDASM?
- MOVE?CW 001h, _x
- LABEL?L L00056
- CMPGT?WCL _x, 0DCh, L00057
- PAUSE?C 001h
- NEXT?WCL _x, 001h, L00056
- LABEL?L L00057
- ASM?
- INT_DISABLE RX_INT
- ENDASM?
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2COUNT?C 000h
- ABS?WW _tF, T1
- DIV?WCW T1, 00Ah, T1
- SEROUT2NUM?W T1
- SEROUT2DEC?
- SEROUT2?C 03Fh
- SEROUT2?C 03Ch
- PAUSE?C 04Bh
- MOVE?CT 000h, _RCSTA??4
- MOVE?CT 001h, _RCSTA??4
- ASM?
- INT_ENABLE RX_INT
- ENDASM?
- RETURN?
- LABEL?L _Check_temp
- ABS?WW _tF, T1
- DIV?WCW T1, 00Ah, T1
- CMPLE?BWL _myTemp, T1, L00058
- ADD?BCB _hyst, 001h, _hyst
- CMPGE?BCB _hyst, 00Fh, T1
- CMPEQ?TCB _relay, 000h, T2
- LAND?BBW T1, T2, T2
- CMPF?WL T2, L00060
- HIGH?T _relay
- LABEL?L L00060
- CMPLE?BCL _hyst, 00Fh, L00062
- MOVE?CB 00Fh, _hyst
- LABEL?L L00062
- LABEL?L L00058
- ABS?WW _tF, T1
- DIV?WCW T1, 00Ah, T1
- CMPGE?BWL _myTemp, T1, L00064
- SUB?BCB _hyst, 001h, _hyst
- CMPLE?BCB _hyst, 005h, T1
- CMPEQ?TCB _relay, 001h, T2
- LAND?BBW T1, T2, T2
- CMPF?WL T2, L00066
- LOW?T _relay
- LABEL?L L00066
- CMPGE?BCL _hyst, 005h, L00068
- MOVE?CB 005h, _hyst
- LABEL?L L00068
- LABEL?L L00064
- RETURN?
- LABEL?L _read_serial
- HSERINTIME?C 0FAh
- HSERIN?WL _x, _read_serial2
- DEBUGCOUNT?C 000h
- DEBUGNUM?W _x
- DEBUGDEC?
- DEBUG?C _CR
- CMPNE?WCL _x, 0C1h, L00070
- ASM?
- reset
- ENDASM?
- LABEL?L L00070
- LABEL?L _read_serial2
- HSERINTIME?C 003E8h
- LABEL?L L00001
- HSERINWAIT?CLL 03Ah, L00001, _No232
- HSERIN?BL _Nb_var02, _No232
- HSERINCOUNT?C 002h
- HSERINDEC?BL _hour, _No232
- HSERINCOUNT?C 002h
- HSERINDEC?BL _Minute, _No232
- HSERIN?BL _mode, _No232
- HSERIN?BL _Day, _No232
- HSERIN?BL _mem, _No232
- HSERIN?BL _Nb_var93, _No232
- CMPNE?BCL _tempAdj_bit, 000h, L00072
- MOVE?BB _Nb_var02, _myTemp
- LABEL?L L00072
- CMPGT?BCB _Nb_var02, 055h, T1
- CMPLT?BCB _Nb_var02, 02Dh, T2
- LOR?BBW T1, T2, T2
- CMPF?WL T2, L00074
- MOVE?CB 03Ch, _myTemp
- LABEL?L L00074
- LABEL?L _Send_serial
- ABS?WW _tF, T1
- DIV?WCW T1, 00Ah, T1
- HSEROUT?W T1
- HSEROUT?B _myTemp
- MOVE?CB 000h, _tempAdj_bit
- MOVE?CT 001h, _time_bit
- ASM?
- INT_RETURN
- ENDASM?
- LABEL?L _No232
- MOVE?CT 000h, _RCSTA??4
- MOVE?CT 001h, _RCSTA??4
- DEBUG?C 054h
- DEBUG?C 069h
- DEBUG?C 06Dh
- DEBUG?C 065h
- DEBUG?C 06Fh
- DEBUG?C 075h
- DEBUG?C 074h
- DEBUG?C _CR
- ASM?
- INT_RETURN
- ENDASM?
- LABEL?L _inpress
- ADD?WCW _timelmt, 001h, _timelmt
- CMPLE?WCL _timelmt, 01388h, L00076
- ASM?
- INT_ENABLE RX_INT
- ENDASM?
- RETURN?
- LABEL?L L00076
- CMPNE?TCL _up_button, 000h, L00078
- GOTO?L _plus
- LABEL?L L00078
- CMPNE?TCL _Down_button, 000h, L00080
- GOTO?L _minus
- LABEL?L L00080
- GOTO?L _inpress
- LABEL?L _plus
- ADD?BCB _myTemp, 001h, _myTemp
- CMPLE?BCL _myTemp, 055h, L00082
- MOVE?CB 055h, _myTemp
- LABEL?L L00082
- MOVE?CW 000h, _timelmt
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 031h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2COUNT?C 000h
- SEROUT2NUM?B _myTemp
- SEROUT2DEC?
- PAUSE?C 001F4h
- MOVE?CB 001h, _tempAdj_bit
- MOVE?CB 00Fh, _hyst
- GOTO?L _inpress
- LABEL?L _minus
- SUB?BCB _myTemp, 001h, _myTemp
- CMPGE?BCL _myTemp, 028h, L00084
- MOVE?CB 028h, _myTemp
- LABEL?L L00084
- MOVE?CW 000h, _timelmt
- SEROUT2DPIN?T _lcd
- SEROUT2MODE?C _Baud
- SEROUT2PACE?C 000h
- SEROUT2?C 03Fh
- SEROUT2?C 078h
- SEROUT2?C 031h
- SEROUT2?C 031h
- SEROUT2?C 03Fh
- SEROUT2?C 079h
- SEROUT2?C 030h
- SEROUT2COUNT?C 000h
- SEROUT2NUM?B _myTemp
- SEROUT2DEC?
- PAUSE?C 001F4h
- MOVE?CB 001h, _tempAdj_bit
- MOVE?CB 005h, _hyst
- GOTO?L _inpress
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement