;---------------------------------------------------------- ; Code Produced by the Proton 3.5.0.6 ; by dr.Godfried-Willem Raes Version 2.0 ; chromatic motor PIC ;---------------------------------------------------------- ; #DEFINE CONFIG_REQ 1 #DEFINE DEBUG@REQ 1 LIST P = 18F2520, F = INHX32, W = 2, X = ON, R = DEC, MM = ON, N = 0, C = 255, T=ON PORTA EQU 0X0F80 PORTB EQU 0X0F81 PORTC EQU 0X0F82 PORTE EQU 0X0F84 LATA EQU 0X0F89 LATB EQU 0X0F8A LATC EQU 0X0F8B DDRA EQU 0X0F92 TRISA EQU 0X0F92 DDRB EQU 0X0F93 TRISB EQU 0X0F93 DDRC EQU 0X0F94 TRISC EQU 0X0F94 OSCTUNE EQU 0X0F9B PIE1 EQU 0X0F9D PIR1 EQU 0X0F9E IPR1 EQU 0X0F9F PIE2 EQU 0X0FA0 PIR2 EQU 0X0FA1 IPR2 EQU 0X0FA2 EECON1 EQU 0X0FA6 EECON2 EQU 0X0FA7 EEDATL EQU 0X0FA8 EEDATA EQU 0X0FA8 EEADR EQU 0X0FA9 RCSTA EQU 0X0FAB TXSTA EQU 0X0FAC TXREG EQU 0X0FAD RCREG EQU 0X0FAE SPBRG EQU 0X0FAF SPBRGH EQU 0X0FB0 T3CON EQU 0X0FB1 TMR3L EQU 0X0FB2 TMR3LH EQU 0X0FB3 TMR3H EQU 0X0FB3 CMCON EQU 0X0FB4 CVRCON EQU 0X0FB5 ECCP1AS EQU 0X0FB6 PWM1CON EQU 0X0FB7 BAUDCON EQU 0X0FB8 BAUDCTL EQU 0X0FB8 CCP2CON EQU 0X0FBA CCPR2 EQU 0X0FBB CCPR2L EQU 0X0FBB CCPR2LH EQU 0X0FBC CCPR2H EQU 0X0FBC CCP1CON EQU 0X0FBD CCPR1 EQU 0X0FBE CCPR1L EQU 0X0FBE CCPR1LH EQU 0X0FBF CCPR1H EQU 0X0FBF ADCON2 EQU 0X0FC0 ADCON1 EQU 0X0FC1 ADCON0 EQU 0X0FC2 ADRES EQU 0X0FC3 ADRESL EQU 0X0FC3 ADRESLH EQU 0X0FC4 ADRESH EQU 0X0FC4 SSPCON2 EQU 0X0FC5 SSPCON1 EQU 0X0FC6 SSPSTAT EQU 0X0FC7 SSPADD EQU 0X0FC8 SSPBUF EQU 0X0FC9 T2CON EQU 0X0FCA PR2 EQU 0X0FCB TMR2 EQU 0X0FCC T1CON EQU 0X0FCD TMR1L EQU 0X0FCE TMR1LH EQU 0X0FCF TMR1H EQU 0X0FCF RCON EQU 0X0FD0 WDTCON EQU 0X0FD1 HLVDCON EQU 0X0FD2 LVDCON EQU 0X0FD2 OSCCON EQU 0X0FD3 T0CON EQU 0X0FD5 TMR0L EQU 0X0FD6 TMR0LH EQU 0X0FD7 TMR0H EQU 0X0FD7 STATUS EQU 0X0FD8 FSR2L EQU 0X0FD9 FSR2LH EQU 0X0FDA FSR2H EQU 0X0FDA PLUSW2 EQU 0X0FDB PREINC2 EQU 0X0FDC POSTDEC2 EQU 0X0FDD POSTINC2 EQU 0X0FDE INDF2 EQU 0X0FDF BSR EQU 0X0FE0 FSR1L EQU 0X0FE1 FSR1LH EQU 0X0FE2 FSR1H EQU 0X0FE2 PLUSW1 EQU 0X0FE3 PREINC1 EQU 0X0FE4 POSTDEC1 EQU 0X0FE5 POSTINC1 EQU 0X0FE6 INDF1 EQU 0X0FE7 WREG EQU 0X0FE8 FSR0L EQU 0X0FE9 FSR0LH EQU 0X0FEA FSR0H EQU 0X0FEA PLUSW0 EQU 0X0FEB PREINC0 EQU 0X0FEC POSTDEC0 EQU 0X0FED POSTINC0 EQU 0X0FEE INDF0 EQU 0X0FEF INTCON3 EQU 0X0FF0 INTCON2 EQU 0X0FF1 INTCON EQU 0X0FF2 PRODL EQU 0X0FF3 PRODLH EQU 0X0FF4 PRODH EQU 0X0FF4 TABLAT EQU 0X0FF5 TBLPTRL EQU 0X0FF6 TBLPTRLH EQU 0X0FF7 TBLPTRH EQU 0X0FF7 TBLPTRU EQU 0X0FF8 TBLPTRLHH EQU 0X0FF8 PC EQU 0X0FF9 PCL EQU 0X0FF9 PCLATH EQU 0X0FFA PCLATU EQU 0X0FFB STKPTR EQU 0X0FFC TOS EQU 0X0FFD TOSL EQU 0X0FFD TOSLH EQU 0X0FFE TOSH EQU 0X0FFE TOSU EQU 0X0FFF _I2C_SCL_PORT = TRISC _I2C_SCL_PIN = 3 _I2C_SDA_PORT = TRISC _I2C_SDA_PIN = 4 RA0=0 RA1=1 RA2=2 RA3=3 RA4=4 RA5=5 RA6=6 RA7=7 AN0=0 AN1=1 AN2=2 AN3=3 T0CKI=4 AN4=5 OSC2=6 OSC1=7 VREFN=2 VREFP=3 SS=5 CLKO=6 CLKI=7 CVREF=2 NOT_SS=5 LVDIN=5 RB0=0 RB1=1 RB2=2 RB3=3 RB4=4 RB5=5 RB6=6 RB7=7 INT0=0 INT1=1 INT2=2 CCP2_PORTB=3 KBI0=4 KBI1=5 KBI2=6 KBI3=7 AN12=0 AN10=1 AN8=2 AN9=3 AN11=4 PGM=5 PGC=6 PGD=7 RC0=0 RC1=1 RC2=2 RC3=3 RC4=4 RC5=5 RC6=6 RC7=7 T1OSO=0 T1OSI=1 CCP1=2 SCK=3 SDI=4 SDO=5 TX=6 RX=7 T13CKI=0 CCP2_PORTC=1 SCL=3 SDA=4 CK=6 T1CKI=0 RE3=3 MCLR=3 NOT_MCLR=3 VPP=3 LATA0=0 LATA1=1 LATA2=2 LATA3=3 LATA4=4 LATA5=5 LATA6=6 LATA7=7 LATB0=0 LATB1=1 LATB2=2 LATB3=3 LATB4=4 LATB5=5 LATB6=6 LATB7=7 LATC0=0 LATC1=1 LATC2=2 LATC3=3 LATC4=4 LATC5=5 LATC6=6 LATC7=7 TRISA0=0 TRISA1=1 TRISA2=2 TRISA3=3 TRISA4=4 TRISA5=5 TRISA6=6 TRISA7=7 TRISB0=0 TRISB1=1 TRISB2=2 TRISB3=3 TRISB4=4 TRISB5=5 TRISB6=6 TRISB7=7 TRISC0=0 TRISC1=1 TRISC2=2 TRISC3=3 TRISC4=4 TRISC5=5 TRISC6=6 TRISC7=7 TUN0=0 TUN1=1 TUN2=2 TUN3=3 TUN4=4 PLLEN=6 INTSRC=7 TMR1IE=0 TMR2IE=1 CCP1IE=2 SSPIE=3 TXIE=4 RCIE=5 ADIE=6 TMR1IF=0 TMR2IF=1 CCP1IF=2 SSPIF=3 TXIF=4 PP_TXIF=4 RCIF=5 PP_RCIF=5 ADIF=6 TMR1IP=0 TMR2IP=1 CCP1IP=2 SSPIP=3 TXIP=4 RCIP=5 ADIP=6 CCP2IE=0 TMR3IE=1 HLVDIE=2 BCLIE=3 EEIE=4 CMIE=6 OSCFIE=7 LVDIE=2 CCP2IF=0 TMR3IF=1 HLVDIF=2 BCLIF=3 EEIF=4 CMIF=6 OSCFIF=7 LVDIF=2 CCP2IP=0 TMR3IP=1 HLVDIP=2 BCLIP=3 EEIP=4 CMIP=6 OSCFIP=7 LVDIP=2 RD=0 PP_RD=0 WR=1 PP_WR=1 WREN=2 PP_WREN=2 WRERR=3 FREE=4 CFGS=6 EEPGD=7 PP_EEPGD=7 RX9D=0 OERR=1 PP_OERR=1 FERR=2 ADEN=3 CREN=4 PP_CREN=4 SREN=5 RX9=6 SPEN=7 ADDEN=3 TX9D=0 TRMT=1 BRGH=2 SENDB=3 SYNC=4 TXEN=5 TX9=6 CSRC=7 TMR3ON=0 TMR3CS=1 T3SYNC=2 T3CCP1=3 T3CKPS0=4 T3CKPS1=5 T3CCP2=6 RD16=7 NOT_T3SYNC=2 CM0=0 CM1=1 CM2=2 CIS=3 C1INV=4 C2INV=5 C1OUT=6 C2OUT=7 CVR0=0 CVR1=1 CVR2=2 CVR3=3 CVRSS=4 CVRR=5 CVROE=6 CVREN=7 PSSAC0=2 PSSAC1=3 ECCPAS0=4 ECCPAS1=5 ECCPAS2=6 ECCPASE=7 PRSEN=7 ABDEN=0 WUE=1 BRG16=3 SCKP=4 RCIDL=6 ABDOVF=7 TXCKP=4 RXDTP=5 RCMT=6 CCP2M0=0 CCP2M1=1 CCP2M2=2 CCP2M3=3 DC2B0=4 DC2B1=5 CCP2Y=4 CCP2X=5 CCP1M0=0 CCP1M1=1 CCP1M2=2 CCP1M3=3 DC1B0=4 DC1B1=5 CCP1Y=4 CCP1X=5 ADCS0=0 ADCS1=1 ADCS2=2 ACQT0=3 ACQT1=4 ACQT2=5 ADFM=7 PCFG0=0 PCFG1=1 PCFG2=2 PCFG3=3 VCFG0=4 VCFG1=5 ADON=0 PP_ADON=0 GO=1 CHS0=2 CHS1=3 CHS2=4 CHS3=5 DONE=1 NOT_DONE=1 GO_DONE=1 PP_GO_DONE=1 SEN=0 PP_SEN=0 RSEN=1 PP_RSEN=1 PEN=2 PP_PEN=2 RCEN=3 PP_RCEN=3 ACKEN=4 PP_ACKEN=4 ACKDT=5 PP_ACKDT=5 ACKSTAT=6 GCEN=7 SSPM0=0 SSPM1=1 SSPM2=2 SSPM3=3 CKP=4 SSPEN=5 SSPOV=6 WCOL=7 BF=0 UA=1 R=2 S=3 P=4 D=5 CKE=6 SMP=7 NOT_W=2 NOT_A=5 R_W=2 PP_R_W=2 D_A=5 NOT_WRITE=2 NOT_ADDRESS=5 T2CKPS0=0 PP_T2CKPS0=0 T2CKPS1=1 PP_T2CKPS1=1 TMR2ON=2 PP_TMR2ON=2 T2OUTPS0=3 T2OUTPS1=4 T2OUTPS2=5 T2OUTPS3=6 TMR1ON=0 TMR1CS=1 T1SYNC=2 T1OSCEN=3 T1CKPS0=4 T1CKPS1=5 T1RUN=6 NOT_T1SYNC=2 BOR=0 POR=1 PD=2 TO=3 RI=4 SBOREN=6 IPEN=7 NOT_BOR=0 NOT_POR=1 NOT_PD=2 NOT_TO=3 NOT_RI=4 SWDTEN=0 SWDTE=0 LVDL0=0 LVDL1=1 LVDL2=2 LVDL3=3 LVDEN=4 IRVST=5 LVV0=0 LVV1=1 LVV2=2 LVV3=3 BGST=5 HLVDL0=0 HLVDL1=1 HLVDL2=2 HLVDL3=3 HLVDEN=4 VDIRMAG=7 IVRST=5 SCS0=0 SCS1=1 IOFS=2 OSTS=3 IRCF0=4 IRCF1=5 IRCF2=6 IDLEN=7 FLTS=2 T0PS0=0 T0PS1=1 T0PS2=2 PSA=3 T0SE=4 T0CS=5 T08BIT=6 TMR0ON=7 C=0 DC=1 Z=2 OV=3 N=4 INT1F=0 INT2F=1 INT1E=3 INT2E=4 INT1P=6 INT2P=7 INT1IF=0 INT2IF=1 INT1IE=3 INT2IE=4 INT1IP=6 INT2IP=7 RBIP=0 TMR0IP=2 INTEDG2=4 INTEDG1=5 INTEDG0=6 RBPU=7 NOT_RBPU=7 RBIF=0 INT0F=1 TMR0IF=2 RBIE=3 INT0E=4 TMR0IE=5 PEIE=6 GIE=7 INT0IF=1 T0IF=2 INT0IE=4 T0IE=5 GIEL=6 GIEH=7 SP0=0 SP1=1 SP2=2 SP3=3 SP4=4 STKUNF=6 STKFUL=7 STKOVF=7 __MAXRAM 0X0FFF __BADRAM 0X0600-0X0F7F __BADRAM 0X0F83 __BADRAM 0X0F85-0X0F88 __BADRAM 0X0F8C-0X0F91 __BADRAM 0X0F95-0X0F9A __BADRAM 0X0F9C __BADRAM 0X0FA3-0X0FA5 __BADRAM 0X0FAA __BADRAM 0X0FB9 __BADRAM 0X0FD4 CONFIG1H EQU 0X300001 CONFIG2L EQU 0X300002 CONFIG2H EQU 0X300003 CONFIG3H EQU 0X300005 CONFIG4L EQU 0X300006 CONFIG5L EQU 0X300008 CONFIG5H EQU 0X300009 CONFIG6L EQU 0X30000A CONFIG6H EQU 0X30000B CONFIG7L EQU 0X30000C CONFIG7H EQU 0X30000D OSC_LP_1 EQU 0XF0 OSC_XT_1 EQU 0XF1 OSC_HS_1 EQU 0XF2 OSC_RC_1 EQU 0XF3 OSC_EC_1 EQU 0XF4 OSC_ECIO6_1 EQU 0XF5 OSC_HSPLL_1 EQU 0XF6 OSC_RCIO6_1 EQU 0XF7 OSC_INTIO67_1 EQU 0XF8 OSC_INTIO7_1 EQU 0XF9 FCMEN_OFF_1 EQU 0XBF FCMEN_ON_1 EQU 0XFF IESO_OFF_1 EQU 0X7F IESO_ON_1 EQU 0XFF PWRT_ON_2 EQU 0XFE PWRT_OFF_2 EQU 0XFF BOREN_OFF_2 EQU 0XF9 BOREN_ON_2 EQU 0XFB BOREN_NOSLP_2 EQU 0XFD BOREN_SBORDIS_2 EQU 0XFF BORV_0_2 EQU 0XE7 BORV_1_2 EQU 0XEF BORV_2_2 EQU 0XF7 BORV_3_2 EQU 0XFF WDT_OFF_2 EQU 0XFE WDT_ON_2 EQU 0XFF WDTPS_1_2 EQU 0XE1 WDTPS_2_2 EQU 0XE3 WDTPS_4_2 EQU 0XE5 WDTPS_8_2 EQU 0XE7 WDTPS_16_2 EQU 0XE9 WDTPS_32_2 EQU 0XEB WDTPS_64_2 EQU 0XED WDTPS_128_2 EQU 0XEF WDTPS_256_2 EQU 0XF1 WDTPS_512_2 EQU 0XF3 WDTPS_1024_2 EQU 0XF5 WDTPS_2048_2 EQU 0XF7 WDTPS_4096_2 EQU 0XF9 WDTPS_8192_2 EQU 0XFB WDTPS_16384_2 EQU 0XFD WDTPS_32768_2 EQU 0XFF MCLRE_OFF_3 EQU 0X7F MCLRE_ON_3 EQU 0XFF LPT1OSC_OFF_3 EQU 0XFB LPT1OSC_ON_3 EQU 0XFF PBADEN_OFF_3 EQU 0XFD PBADEN_ON_3 EQU 0XFF CCP2MX_PORTBE_3 EQU 0XFE CCP2MX_PORTC_3 EQU 0XFF STVREN_OFF_4 EQU 0XFE STVREN_ON_4 EQU 0XFF LVP_OFF_4 EQU 0XFB LVP_ON_4 EQU 0XFF XINST_OFF_4 EQU 0XBF XINST_ON_4 EQU 0XFF DEBUG_ON_4 EQU 0X7F DEBUG_OFF_4 EQU 0XFF CP0_ON_5 EQU 0XFE CP0_OFF_5 EQU 0XFF CP1_ON_5 EQU 0XFD CP1_OFF_5 EQU 0XFF CP2_ON_5 EQU 0XFB CP2_OFF_5 EQU 0XFF CP3_ON_5 EQU 0XF7 CP3_OFF_5 EQU 0XFF CPB_ON_5 EQU 0XBF CPB_OFF_5 EQU 0XFF CPD_ON_5 EQU 0X7F CPD_OFF_5 EQU 0XFF WRT0_ON_6 EQU 0XFE WRT0_OFF_6 EQU 0XFF WRT1_ON_6 EQU 0XFD WRT1_OFF_6 EQU 0XFF WRT2_ON_6 EQU 0XFB WRT2_OFF_6 EQU 0XFF WRT3_ON_6 EQU 0XF7 WRT3_OFF_6 EQU 0XFF WRTB_ON_6 EQU 0XBF WRTB_OFF_6 EQU 0XFF WRTC_ON_6 EQU 0XDF WRTC_OFF_6 EQU 0XFF WRTD_ON_6 EQU 0X7F WRTD_OFF_6 EQU 0XFF EBTR0_ON_7 EQU 0XFE EBTR0_OFF_7 EQU 0XFF EBTR1_ON_7 EQU 0XFD EBTR1_OFF_7 EQU 0XFF EBTR2_ON_7 EQU 0XFB EBTR2_OFF_7 EQU 0XFF EBTR3_ON_7 EQU 0XF7 EBTR3_OFF_7 EQU 0XFF EBTRB_ON_7 EQU 0XBF EBTRB_OFF_7 EQU 0XFF DEVID1 EQU 0X3FFFFE DEVID2 EQU 0X3FFFFF IDLOC0 EQU 0X200000 __IDLOC0 EQU 0X200000 IDLOC1 EQU 0X200001 __IDLOC1 EQU 0X200001 IDLOC2 EQU 0X200002 __IDLOC2 EQU 0X200002 IDLOC3 EQU 0X200003 __IDLOC3 EQU 0X200003 IDLOC4 EQU 0X200004 __IDLOC4 EQU 0X200004 IDLOC5 EQU 0X200005 __IDLOC5 EQU 0X200005 IDLOC6 EQU 0X200006 __IDLOC6 EQU 0X200006 IDLOC7 EQU 0X200007 __IDLOC7 EQU 0X200007 #DEFINE __18F2520 1 #DEFINE XTAL 40 #DEFINE _CORE 16 #DEFINE _MAXRAM 1255 #DEFINE _RAM_END 1536 #DEFINE _MAXMEM 32768 #DEFINE _ADC 10 #DEFINE _ADC_RES 10 #DEFINE _EEPROM 256 #DEFINE RAM_BANKS 6 #DEFINE _USART 1 #DEFINE _USB 0 #DEFINE _USB#RAM_START 0 #DEFINE _FLASH 1 #DEFINE _CWRITE_BLOCK 32 #DEFINE BANK0_START 128 #DEFINE BANK0_END 255 #DEFINE BANK1_START 256 #DEFINE BANK1_END 511 #DEFINE BANK2_START 512 #DEFINE BANK2_END 767 #DEFINE BANK3_START 768 #DEFINE BANK3_END 1023 #DEFINE BANK4_START 1024 #DEFINE BANK4_END 1279 #DEFINE BANK5_START 1280 #DEFINE BANK5_END 1535 #DEFINE BANKA_START 0 #DEFINE BANKA_END 127 #DEFINE _SYSTEM_VARIABLE_COUNT 91 #DEFINE LCD#TYPE 0 #DEFINE __HIGH_INTERRUPTS_ENABLED 1 #DEFINE _HIGH_INT_SUB_ADDRESS 1256 #DEFINE _HIGH_INT_SUB_AMOUNT 13 #DEFINE CLRW CLRF WREG #DEFINE NEGW NEGF WREG #DEFINE SKPC BTFSS STATUS,0 #DEFINE SKPNC BTFSC STATUS,0 #DEFINE CLRC BCF STATUS,0 #DEFINE SETC BSF STATUS,0 #DEFINE SKPZ BTFSS STATUS,2 #DEFINE SKPNZ BTFSC STATUS,2 #DEFINE CLRZ BCF STATUS,2 #DEFINE SETZ BSF STATUS,2 #DEFINE INIT_USART_INTERRUPT#REQ 1 #DEFINE CLEAR_SERIAL_BUFFER#REQ 1 #DEFINE _OPENTIMER0#REQ 1 #DEFINE _OPENADC#REQ 1 #DEFINE RECALCMOTPOS_0#REQ 1 #DEFINE RECALCMOTPOS_1#REQ 1 #DEFINE RECALCMOTPOS_4#REQ 1 GEN = 0 GENH = 1 GENL = 2 GPR = 3 PBP#VAR0 = 4 PBP#VAR0H = 5 PBP#VAR1 = 6 PP0 = 7 PP0H = 8 PP1 = 9 PP1H = 10 PP2 = 11 PP2H = 12 PP3 = 13 PP3H = 14 PP4 = 15 PP4H = 16 PP7 = 17 PP7H = 18 PP7HH = 19 PP7HHH = 20 CNT = 21 CNTH = 22 CNTHH = 23 CNTHHH = 24 BYTEIN = 25 STATUSBYTE = 26 NOTEUIT = 27 RELEASE = 28 NOTEAAN = 29 VELO = 30 NOTEPRES = 31 PRES = 32 CTRL = 33 VALUE = 34 VELTIM = 35 VELTIMH = 36 VELTIMHH = 37 VELTIMHHH = 38 VELFLAGS = 39 VELFLAGSH = 40 CC66 = 41 ACC = 42 MOTPOS = 43 MOTPOSH = 44 CLOSE270POS = 45 CLOSE270POSH = 46 CLOSE90POS = 47 CLOSE90POSH = 48 OPEN180POS = 49 OPEN180POSH = 50 SOLLPOS = 51 SOLLPOSH = 52 TRAJ = 53 TRAJH = 54 MOTORPERIOD = 55 MOTORPERIODH = 56 TMP = 57 TMPH = 58 PF_SENSOR = 59 PF_SENSORH = 60 PROXVAL = 61 PROXVALH = 62 CALIBFLAG = 63 LSB = 64 MSB = 65 TIMVAL = 66 TIMVALH = 67 CC7 = 68 CC20 = 69 CC21 = 70 CC22 = 71 CC32 = 72 CC71 = 73 CC72 = 74 LITES = 75 LITE0PWM = 76 LITE1PWM = 77 REMWEG = 78 REMWEGH = 79 SLOWDOWN = 80 XTRATIM = 81 OLDSOLLPOS = 82 OLDSOLLPOSH = 83 DIRBYTE = 84 PROXTRAJ = 85 HALFPROXTRAJ = 86 USART_FSR1_SAVE = 87 USART_FSR1_SAVEH = 88 INDEXIN = 89 INDEXOUT = 90 PROXPEAK = 91 PROXPEAKH = 92 PROXPOS = 93 PROXPOSH = 94 VARIABLE PROXPOS#0=93,PROXPOS#0H=94,PROXPOS#1=95,PROXPOS#1H=96 VARIABLE PROXPOS#2=97,PROXPOS#2H=98,PROXPOS#3=99,PROXPOS#3H=100 VARIABLE PROXPOS#4=101,PROXPOS#4H=102,PROXPOS#5=103,PROXPOS#5H=104 VARIABLE PROXPOS#6=105,PROXPOS#6H=106,PROXPOS#7=107,PROXPOS#7H=108 VARIABLE PROXPOS#8=109,PROXPOS#8H=110,PROXPOS#9=111,PROXPOS#9H=112 VARIABLE PROXPOS#10=113,PROXPOS#10H=114,PROXPOS#11=115,PROXPOS#11H=116 VARIABLE PROXPOS#12=117,PROXPOS#12H=118,PROXPOS#13=119,PROXPOS#13H=120 VARIABLE PROXPOS#14=121,PROXPOS#14H=122,PROXPOS#15=123,PROXPOS#15H=124 VARIABLE PROXPOS#16=125,PROXPOS#16H=126,PROXPOS#17=127,PROXPOS#17H=128 VARIABLE PROXPOS#18=129,PROXPOS#18H=130,PROXPOS#19=131,PROXPOS#19H=132 VARIABLE PROXPOS#20=133,PROXPOS#20H=134,PROXPOS#21=135,PROXPOS#21H=136 VARIABLE PROXPOS#22=137,PROXPOS#22H=138,PROXPOS#23=139,PROXPOS#23H=140 VARIABLE PROXPOS#24=141,PROXPOS#24H=142,PROXPOS#25=143,PROXPOS#25H=144 VARIABLE PROXPOS#26=145,PROXPOS#26H=146,PROXPOS#27=147,PROXPOS#27H=148 VARIABLE PROXPOS#28=149,PROXPOS#28H=150,PROXPOS#29=151,PROXPOS#29H=152 VARIABLE PROXPOS#30=153,PROXPOS#30H=154,PROXPOS#31=155,PROXPOS#31H=156 VARIABLE PROXPOS#32=157,PROXPOS#32H=158,PROXPOS#33=159,PROXPOS#33H=160 VARIABLE PROXPOS#34=161,PROXPOS#34H=162,PROXPOS#35=163,PROXPOS#35H=164 VARIABLE PROXPOS#36=165,PROXPOS#36H=166,PROXPOS#37=167,PROXPOS#37H=168 VARIABLE PROXPOS#38=169,PROXPOS#38H=170,PROXPOS#39=171,PROXPOS#39H=172 VARIABLE PROXPOS#40=173,PROXPOS#40H=174,PROXPOS#41=175,PROXPOS#41H=176 VARIABLE PROXPOS#42=177,PROXPOS#42H=178,PROXPOS#43=179,PROXPOS#43H=180 VARIABLE PROXPOS#44=181,PROXPOS#44H=182,PROXPOS#45=183,PROXPOS#45H=184 VARIABLE PROXPOS#46=185,PROXPOS#46H=186,PROXPOS#47=187,PROXPOS#47H=188 DISTPEAK = 189 DISTPEAKH = 190 TASK_RSI = 191 TASK_RSIH = 192 VARIABLE TASK_RSI#0=191,TASK_RSI#0H=192,TASK_RSI#1=193,TASK_RSI#1H=194 VARIABLE TASK_RSI#2=195,TASK_RSI#2H=196,TASK_RSI#3=197,TASK_RSI#3H=198 VARIABLE TASK_RSI#4=199,TASK_RSI#4H=200,TASK_RSI#5=201,TASK_RSI#5H=202 VELMSB = 203 VELMSBH = 204 VARIABLE VELMSB#0=203,VELMSB#0H=204,VELMSB#1=205,VELMSB#1H=206 VARIABLE VELMSB#2=207,VELMSB#2H=208,VELMSB#3=209,VELMSB#3H=210 VARIABLE VELMSB#4=211,VELMSB#4H=212,VELMSB#5=213,VELMSB#5H=214 VELLSB = 215 VELLSBH = 216 VARIABLE VELLSB#0=215,VELLSB#0H=216,VELLSB#1=217,VELLSB#1H=218 VARIABLE VELLSB#2=219,VELLSB#2H=220,VELLSB#3=221,VELLSB#3H=222 VARIABLE VELLSB#4=223,VELLSB#4H=224,VELLSB#5=225,VELLSB#5H=226 RINGBUFFER = 1280 VARIABLE RINGBUFFER#0=1280,RINGBUFFER#1=1281,RINGBUFFER#2=1282,RINGBUFFER#3=1283 VARIABLE RINGBUFFER#4=1284,RINGBUFFER#5=1285,RINGBUFFER#6=1286,RINGBUFFER#7=1287 VARIABLE RINGBUFFER#8=1288,RINGBUFFER#9=1289,RINGBUFFER#10=1290,RINGBUFFER#11=1291 VARIABLE RINGBUFFER#12=1292,RINGBUFFER#13=1293,RINGBUFFER#14=1294,RINGBUFFER#15=1295 VARIABLE RINGBUFFER#16=1296,RINGBUFFER#17=1297,RINGBUFFER#18=1298,RINGBUFFER#19=1299 VARIABLE RINGBUFFER#20=1300,RINGBUFFER#21=1301,RINGBUFFER#22=1302,RINGBUFFER#23=1303 VARIABLE RINGBUFFER#24=1304,RINGBUFFER#25=1305,RINGBUFFER#26=1306,RINGBUFFER#27=1307 VARIABLE RINGBUFFER#28=1308,RINGBUFFER#29=1309,RINGBUFFER#30=1310,RINGBUFFER#31=1311 VARIABLE RINGBUFFER#32=1312,RINGBUFFER#33=1313,RINGBUFFER#34=1314,RINGBUFFER#35=1315 VARIABLE RINGBUFFER#36=1316,RINGBUFFER#37=1317,RINGBUFFER#38=1318,RINGBUFFER#39=1319 VARIABLE RINGBUFFER#40=1320,RINGBUFFER#41=1321,RINGBUFFER#42=1322,RINGBUFFER#43=1323 VARIABLE RINGBUFFER#44=1324,RINGBUFFER#45=1325,RINGBUFFER#46=1326,RINGBUFFER#47=1327 VARIABLE RINGBUFFER#48=1328,RINGBUFFER#49=1329,RINGBUFFER#50=1330,RINGBUFFER#51=1331 VARIABLE RINGBUFFER#52=1332,RINGBUFFER#53=1333,RINGBUFFER#54=1334,RINGBUFFER#55=1335 VARIABLE RINGBUFFER#56=1336,RINGBUFFER#57=1337,RINGBUFFER#58=1338,RINGBUFFER#59=1339 VARIABLE RINGBUFFER#60=1340,RINGBUFFER#61=1341,RINGBUFFER#62=1342,RINGBUFFER#63=1343 VARIABLE RINGBUFFER#64=1344,RINGBUFFER#65=1345,RINGBUFFER#66=1346,RINGBUFFER#67=1347 VARIABLE RINGBUFFER#68=1348,RINGBUFFER#69=1349,RINGBUFFER#70=1350,RINGBUFFER#71=1351 VARIABLE RINGBUFFER#72=1352,RINGBUFFER#73=1353,RINGBUFFER#74=1354,RINGBUFFER#75=1355 VARIABLE RINGBUFFER#76=1356,RINGBUFFER#77=1357,RINGBUFFER#78=1358,RINGBUFFER#79=1359 VARIABLE RINGBUFFER#80=1360,RINGBUFFER#81=1361,RINGBUFFER#82=1362,RINGBUFFER#83=1363 VARIABLE RINGBUFFER#84=1364,RINGBUFFER#85=1365,RINGBUFFER#86=1366,RINGBUFFER#87=1367 VARIABLE RINGBUFFER#88=1368,RINGBUFFER#89=1369,RINGBUFFER#90=1370,RINGBUFFER#91=1371 VARIABLE RINGBUFFER#92=1372,RINGBUFFER#93=1373,RINGBUFFER#94=1374,RINGBUFFER#95=1375 VARIABLE RINGBUFFER#96=1376,RINGBUFFER#97=1377,RINGBUFFER#98=1378,RINGBUFFER#99=1379 VARIABLE RINGBUFFER#100=1380,RINGBUFFER#101=1381,RINGBUFFER#102=1382,RINGBUFFER#103=1383 VARIABLE RINGBUFFER#104=1384,RINGBUFFER#105=1385,RINGBUFFER#106=1386,RINGBUFFER#107=1387 VARIABLE RINGBUFFER#108=1388,RINGBUFFER#109=1389,RINGBUFFER#110=1390,RINGBUFFER#111=1391 VARIABLE RINGBUFFER#112=1392,RINGBUFFER#113=1393,RINGBUFFER#114=1394,RINGBUFFER#115=1395 VARIABLE RINGBUFFER#116=1396,RINGBUFFER#117=1397,RINGBUFFER#118=1398,RINGBUFFER#119=1399 VARIABLE RINGBUFFER#120=1400,RINGBUFFER#121=1401,RINGBUFFER#122=1402,RINGBUFFER#123=1403 VARIABLE RINGBUFFER#124=1404,RINGBUFFER#125=1405,RINGBUFFER#126=1406,RINGBUFFER#127=1407 VARIABLE RINGBUFFER#128=1408,RINGBUFFER#129=1409,RINGBUFFER#130=1410,RINGBUFFER#131=1411 VARIABLE RINGBUFFER#132=1412,RINGBUFFER#133=1413,RINGBUFFER#134=1414,RINGBUFFER#135=1415 VARIABLE RINGBUFFER#136=1416,RINGBUFFER#137=1417,RINGBUFFER#138=1418,RINGBUFFER#139=1419 VARIABLE RINGBUFFER#140=1420,RINGBUFFER#141=1421,RINGBUFFER#142=1422,RINGBUFFER#143=1423 VARIABLE RINGBUFFER#144=1424,RINGBUFFER#145=1425,RINGBUFFER#146=1426,RINGBUFFER#147=1427 VARIABLE RINGBUFFER#148=1428,RINGBUFFER#149=1429,RINGBUFFER#150=1430,RINGBUFFER#151=1431 VARIABLE RINGBUFFER#152=1432,RINGBUFFER#153=1433,RINGBUFFER#154=1434,RINGBUFFER#155=1435 VARIABLE RINGBUFFER#156=1436,RINGBUFFER#157=1437,RINGBUFFER#158=1438,RINGBUFFER#159=1439 VARIABLE RINGBUFFER#160=1440,RINGBUFFER#161=1441,RINGBUFFER#162=1442,RINGBUFFER#163=1443 VARIABLE RINGBUFFER#164=1444,RINGBUFFER#165=1445,RINGBUFFER#166=1446,RINGBUFFER#167=1447 VARIABLE RINGBUFFER#168=1448,RINGBUFFER#169=1449,RINGBUFFER#170=1450,RINGBUFFER#171=1451 VARIABLE RINGBUFFER#172=1452,RINGBUFFER#173=1453,RINGBUFFER#174=1454,RINGBUFFER#175=1455 VARIABLE RINGBUFFER#176=1456,RINGBUFFER#177=1457,RINGBUFFER#178=1458,RINGBUFFER#179=1459 VARIABLE RINGBUFFER#180=1460,RINGBUFFER#181=1461,RINGBUFFER#182=1462,RINGBUFFER#183=1463 VARIABLE RINGBUFFER#184=1464,RINGBUFFER#185=1465,RINGBUFFER#186=1466,RINGBUFFER#187=1467 VARIABLE RINGBUFFER#188=1468,RINGBUFFER#189=1469,RINGBUFFER#190=1470,RINGBUFFER#191=1471 VARIABLE RINGBUFFER#192=1472,RINGBUFFER#193=1473,RINGBUFFER#194=1474,RINGBUFFER#195=1475 VARIABLE RINGBUFFER#196=1476,RINGBUFFER#197=1477,RINGBUFFER#198=1478,RINGBUFFER#199=1479 VARIABLE RINGBUFFER#200=1480,RINGBUFFER#201=1481,RINGBUFFER#202=1482,RINGBUFFER#203=1483 VARIABLE RINGBUFFER#204=1484,RINGBUFFER#205=1485,RINGBUFFER#206=1486,RINGBUFFER#207=1487 VARIABLE RINGBUFFER#208=1488,RINGBUFFER#209=1489,RINGBUFFER#210=1490,RINGBUFFER#211=1491 VARIABLE RINGBUFFER#212=1492,RINGBUFFER#213=1493,RINGBUFFER#214=1494,RINGBUFFER#215=1495 VARIABLE RINGBUFFER#216=1496,RINGBUFFER#217=1497,RINGBUFFER#218=1498,RINGBUFFER#219=1499 VARIABLE RINGBUFFER#220=1500,RINGBUFFER#221=1501,RINGBUFFER#222=1502,RINGBUFFER#223=1503 VARIABLE RINGBUFFER#224=1504,RINGBUFFER#225=1505,RINGBUFFER#226=1506,RINGBUFFER#227=1507 VARIABLE RINGBUFFER#228=1508,RINGBUFFER#229=1509,RINGBUFFER#230=1510,RINGBUFFER#231=1511 VARIABLE RINGBUFFER#232=1512,RINGBUFFER#233=1513,RINGBUFFER#234=1514,RINGBUFFER#235=1515 VARIABLE RINGBUFFER#236=1516,RINGBUFFER#237=1517,RINGBUFFER#238=1518,RINGBUFFER#239=1519 VARIABLE RINGBUFFER#240=1520,RINGBUFFER#241=1521,RINGBUFFER#242=1522,RINGBUFFER#243=1523 VARIABLE RINGBUFFER#244=1524,RINGBUFFER#245=1525,RINGBUFFER#246=1526,RINGBUFFER#247=1527 VARIABLE RINGBUFFER#248=1528,RINGBUFFER#249=1529,RINGBUFFER#250=1530,RINGBUFFER#251=1531 VARIABLE RINGBUFFER#252=1532,RINGBUFFER#253=1533,RINGBUFFER#254=1534,RINGBUFFER#255=1535 #DEFINE CNTLW TMR0L #DEFINE CNTLWH TMR0LH #DEFINE STBIT BYTEIN,7 #DEFINE VELFLAGS0 VELFLAGS #DEFINE VELFLAGS1 VELFLAGSH #DEFINE LEFT DIRBYTE,0 #DEFINE RIGHT DIRBYTE,1 #DEFINE NEARRIGHT DIRBYTE,2 #DEFINE NEARLEFT DIRBYTE,3 #DEFINE NEAR DIRBYTE,4 #DEFINE FSR0SAVEINT PP0 #DEFINE FSR0SAVEINTH PP0H #DEFINE USART_FSR0_SAVE FSR0SAVEINT #DEFINE USART_FSR0_SAVEH FSR0SAVEINTH #DEFINE USART_FSR0 FSR0L #DEFINE USART_FSR0H FSR0LH #DEFINE USART_FSR1 FSR1L #DEFINE USART_FSR1H FSR1LH #DEFINE _WTIMER0M TMR0L #DEFINE _WTIMER0MH TMR0LH #DEFINE _WTIMER1M TMR1L #DEFINE _WTIMER1MH TMR1LH #DEFINE _WTIMER3M TMR3L #DEFINE _WTIMER3MH TMR3LH #DEFINE __OPTIMISER_LEVEL 3 #DEFINE __XTAL 40 #DEFINE PWMMINF 2442 #DEFINE PWMMINFH 9 #DEFINE MIDICHANNEL 10 #DEFINE NOTEOFF_STATUS 138 #DEFINE NOTEON_STATUS 154 #DEFINE KEYPRES_STATUS 170 #DEFINE CONTROL_STATUS 186 #DEFINE PROGCHANGE_STATUS 202 #DEFINE AFTERTOUCH_STATUS 218 #DEFINE PITCHBEND_STATUS 234 #DEFINE NRTASKS 6 #DEFINE NRSTEPS 384 #DEFINE NRSTEPSH 1 #DEFINE RANGE 96 #DEFINE ACCELMAX 12 #DEFINE __HSERIAL_BAUD 31250 #DEFINE __HSERIAL_TXSTA 36 #DEFINE __START_OF_RESERVE_RAM 1280 #DEFINE __RESERVE_RAM_SIZE 256 HSERIAL_SPBRG = 79 HSERIAL_TXSTA = 36 HSERIAL_RCSTA = 144 HSERIAL_BAUD = 31250 PROTON#CODE#START ORG 0X000000 GOTO PROTON#MAIN#START ORG 0X000008 BRA HIGH_PRIOR_INTERRUPT T@LT MOVWF 9 MOVLW 4 T@ST MOVWF 3 MOVF 10,W SUBWF 8,W BNZ CN@EQ MOVF 9,W SUBWF 7,W CN@EQ MOVLW 4 BTFSC 4056,0 MOVLW 1 BTFSC 4056,2 MOVLW 2 ANDWF 3,W BTFSS 4056,2 MOVLW 1 RETURN HRSIN#REQ = 1 HRSINX#REQ = 1 HRSIN#CLROERR = 1 H@PWM MOVWF 16 MOVLW 150 MOVWF 7 MOVLW 152 MOVWF 8 RCALL D@VD BTFSC 4056,2 BCF 4042,PP_T2CKPS0 BTFSS 4056,2 BSF 4042,PP_T2CKPS0 ADDLW 252 BTFSS 4056,0 BCF 4042,PP_T2CKPS1 BTFSC 4056,0 BSF 4042,PP_T2CKPS1 MOVLW 128 MOVWF 7 MOVLW 150 MOVWF 8 MOVLW 152 MOVWF 11 CLRF 12 BTFSC 4042,PP_T2CKPS0 RCALL HPW@2S BTFSC 4042,PP_T2CKPS1 RCALL HPW@2S RCALL D@VD2 DECF 7,W MOVWF 4043 MOVFF 7,9 MOVFF 8,10 MOVF 0,W MOVWF 13 MOVWF 14 INCFSZ 0,W CLRF 14 RCALL M@PY MOVF 12,W DECFSZ 16,F BRA HPW@SK1 MOVWF 4030 MOVLW 12 MOVWF 4029 BTFSC 11,7 BSF 4029,5 BTFSC 11,6 BSF 4029,4 BCF TRISB,2 HPWM@FIN BSF 4042,PP_TMR2ON RETURN HPW@SK1 MOVWF 4027 MOVLW 12 MOVWF 4026 BTFSC 11,7 BSF 4026,5 BTFSC 11,6 BSF 4026,4 BCF TRISC,1 BRA HPWM@FIN HPW@2S RCALL HPW@2L HPW@2L BCF 4056,0 RRCF 11,F RRCF 8,F RRCF 7,F RETURN P@OUT MOVLW 15 MOVWF 4074 MOVFF 0,4073 COMF 1,W BSF 4073,4 INCF 4073,F ANDWF 4076,F MOVF 7,W IORWF 8,W BTFSC 4056,2 RETURN RCALL N@GT MOVFF 0,4073 MOVF 1,W XORWF 4079,F NOP BRA $ + 2 BRA $ + 2 INCF 7,F BTFSC 4056,2 INCFSZ 8,F BRA $ - 12 XORWF 4079,F RETURN ADIN_STIME = 50 ADIN_TAD = 3 ADIN_RES = 10 RD@AD RLCF 4072,F RLCF 4072,F ANDLW 60 IORLW 1 IORWF 4034,F IORLW 192 ANDWF 4034,F MOVF 4032,W ANDLW 248 IORLW 3 MOVWF 4032 MOVLW 50 RCALL DL@US BSF 4034,PP_GO_DONE BTFSC 4034,PP_GO_DONE BRA $ - 2 MOVFF 4036,18 MOVF 4035,W MOVWF 17 RETURN DL@MS CLRF 10 DLY@W MOVWF 9 DLY@P MOVLW 255 ADDWF 9,F ADDWFC 10,F BRA $ + 2 BTFSS 4056,0 RETURN MOVLW 3 MOVWF 8 MOVLW 231 RCALL DLUS@W BRA DLY@P DL@US CLRF 8 DLUS@W ADDLW 254 MOVWF 7 CLRF 4072 SUBWFB 8,F BTFSS 4056,0 RETURN NOP DECF 7,F BRA $ + 2 BRA $ - 14 D@VD CLRF 12 CLRF 11 D@VD2 MOVLW 16 MOVWF 4083 DV@LP RLCF 8,W RLCF 11,F RLCF 12,F MOVF 9,W SUBWF 11,W MOVF 10,W SUBWFB 12,W BNC D@K MOVF 9,W SUBWF 11,F MOVF 10,W SUBWFB 12,F BSF 4056,0 D@K RLCF 7,F RLCF 8,F DECFSZ 4083,F BRA DV@LP MOVF 7,W RETURN M@PY MOVF 9,W MULWF 13 MOVFF 4083,11 MOVFF 4084,12 MOVF 10,W MULWF 13 MOVF 4083,W ADDWF 12,F MOVF 9,W MULWF 14 MOVF 4083,W ADDWF 12,F MOVF 11,W RETURN N@GT COMF 7,F COMF 8,F INFSNZ 7,F INCF 8,F RETURN MAX@B CLRF 8 MAX@W CLRF 10 MA@X RCALL T@LT MAX@MIN BZ MX@X MOVFF 10,8 MOVFF 9,7 MX@X MOVF 7,W RETURN PROTON#MAIN#START CLRF 4088 MOVLW 79 MOVWF 4015 MOVLW 36 MOVWF 4012 MOVLW 144 MOVWF 4011 MOVLB 0 F2_SOF EQU $ ; VIBI_MOTORS.PRP F2_EOF EQU $ ; VIBI_MOTORS.PRP F1_SOF EQU $ ; VIBI_MOTORS.BAS F3_SOF EQU $ ; 18F2520.INC F3_EOF EQU $ ; 18F2520.INC F4_SOF EQU $ ; MIDI_IRQ.INC F4_000047 EQU $ ; IN [MIDI_IRQ.INC] GOTO _OVER_IRQ_HANDLER BRA _OVER_IRQ_HANDLER HIGH_PRIOR_INTERRUPT F4_000058 EQU $ ; IN [MIDI_IRQ.INC] IF PIR1.5 = 1 THEN BTFSS PIR1,5 BRA BC@LL2 F4_000059 EQU $ ; IN [MIDI_IRQ.INC] MOVLW 6 MOVLW 6 F4_000060 EQU $ ; IN [MIDI_IRQ.INC] ANDWF RCSTA,W ANDWF RCSTA,W F4_000061 EQU $ ; IN [MIDI_IRQ.INC] BNZ _UART_ERROR BNZ _UART_ERROR F4_000062 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR1_SAVE = USART_FSR1 MOVFF FSR1L,USART_FSR1_SAVE MOVFF FSR1LH,USART_FSR1_SAVEH F4_000063 EQU $ ; IN [MIDI_IRQ.INC] INC INDEXIN INCF INDEXIN,F,0 F4_000073 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR1 = VARPTR RINGBUFFER LFSR 1,RINGBUFFER F4_000074 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR1 = USART_FSR1 + INDEXIN MOVF INDEXIN,W,0 ADDWF FSR1L,F,0 MOVLW 0 ADDWFC FSR1LH,F,0 F4_000075 EQU $ ; IN [MIDI_IRQ.INC] INDF1 = RCREG MOVFF RCREG,INDF1 F4_000076 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR1 = USART_FSR1_SAVE MOVFF USART_FSR1_SAVE,FSR1L MOVFF USART_FSR1_SAVEH,FSR1LH F4_000078 EQU $ ; IN [MIDI_IRQ.INC] RETFIE FAST RETFIE 1 _UART_ERROR F4_000080 EQU $ ; IN [MIDI_IRQ.INC] WREG = RCREG MOVF RCREG,W,0 F4_000081 EQU $ ; IN [MIDI_IRQ.INC] WREG = RCREG MOVF RCREG,W,0 F4_000082 EQU $ ; IN [MIDI_IRQ.INC] CLEAR RCSTA.4 BCF RCSTA,4,0 F4_000083 EQU $ ; IN [MIDI_IRQ.INC] SET RCSTA.4 BSF RCSTA,4,0 F4_000084 EQU $ ; IN [MIDI_IRQ.INC] RETFIE FAST RETFIE 1 BRA BC@LL3 BC@LL2 F4_000085 EQU $ ; IN [MIDI_IRQ.INC] ELSE _TIMER0_IRQ F4_000087 EQU $ ; IN [MIDI_IRQ.INC] IF INTCON.2 = 1 THEN BTFSS INTCON,2 BRA BC@LL5 F4_000088 EQU $ ; IN [MIDI_IRQ.INC] CLEAR INTCON.2 BCF INTCON,2,0 F4_000089 EQU $ ; IN [MIDI_IRQ.INC] INC CNT.WORD1 INFSNZ CNTHH,F,0 INCF CNTHHH,F,0 F4_000090 EQU $ ; IN [MIDI_IRQ.INC] TOGGLE PORTB.5 BTG PORTB,5,0 BCF TRISB,5,0 F4_000093 EQU $ ; IN [MIDI_IRQ.INC] RETFIE FAST RETFIE 1 F4_000094 EQU $ ; IN [MIDI_IRQ.INC] ENDIF BC@LL5 F4_000095 EQU $ ; IN [MIDI_IRQ.INC] ENDIF BC@LL3 F4_000096 EQU $ ; IN [MIDI_IRQ.INC] RETFIE FAST RETFIE 1 HRSIN: F4_000100 EQU $ ; IN [MIDI_IRQ.INC] IF INDEXIN <> INDEXOUT THEN MOVF INDEXIN,W,0 SUBWF INDEXOUT,W,0 BZ BC@LL7 F4_000101 EQU $ ; IN [MIDI_IRQ.INC] INC INDEXOUT INCF INDEXOUT,F,0 F4_000102 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR0_SAVE = USART_FSR0 MOVFF FSR0L,FSR0SAVEINT MOVFF FSR0LH,FSR0SAVEINTH F4_000103 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR0 = VARPTR RINGBUFFER LFSR 0,RINGBUFFER F4_000104 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR0 = USART_FSR0 + INDEXOUT MOVF INDEXOUT,W,0 ADDWF FSR0L,F,0 MOVLW 0 ADDWFC FSR0LH,F,0 F4_000105 EQU $ ; IN [MIDI_IRQ.INC] WREG = INDF0 MOVF INDF0,W,0 F4_000106 EQU $ ; IN [MIDI_IRQ.INC] PP0 = WREG MOVWF PP0,0 F4_000107 EQU $ ; IN [MIDI_IRQ.INC] USART_FSR0 = USART_FSR0_SAVE MOVFF FSR0SAVEINT,FSR0L MOVFF FSR0SAVEINTH,FSR0LH F4_000108 EQU $ ; IN [MIDI_IRQ.INC] SET STATUS.0 BSF STATUS,0,0 F4_000109 EQU $ ; IN [MIDI_IRQ.INC] RET RETURN 0 BRA BC@LL8 BC@LL7 F4_000110 EQU $ ; IN [MIDI_IRQ.INC] ELSE F4_000111 EQU $ ; IN [MIDI_IRQ.INC] WREG = 255 SETF WREG,0 F4_000112 EQU $ ; IN [MIDI_IRQ.INC] PP0 = WREG MOVWF PP0,0 F4_000113 EQU $ ; IN [MIDI_IRQ.INC] BTFSS STATUS,C BTFSS STATUS,C F4_000114 EQU $ ; IN [MIDI_IRQ.INC] RET RETURN 0 F4_000115 EQU $ ; IN [MIDI_IRQ.INC] ENDIF BC@LL8 F4_000116 EQU $ ; IN [MIDI_IRQ.INC] RET RETURN 0 _INIT_USART F4_000162 EQU $ ; IN [MIDI_IRQ.INC] CLEAR INDEXIN CLRF INDEXIN,0 F4_000163 EQU $ ; IN [MIDI_IRQ.INC] CLEAR INDEXOUT CLRF INDEXOUT,0 F4_000164 EQU $ ; IN [MIDI_IRQ.INC] SET PIE1.5 BSF PIE1,5,0 F4_000168 EQU $ ; IN [MIDI_IRQ.INC] SET INTCON.7 BSF INTCON,7,0 F4_000169 EQU $ ; IN [MIDI_IRQ.INC] SET INTCON.6 BSF INTCON,6,0 F4_000171 EQU $ ; IN [MIDI_IRQ.INC] RETURN RETURN 0 _CLEAR_USART_BUFFER F4_000186 EQU $ ; IN [MIDI_IRQ.INC] PIE1.5 = 0 BCF PIE1,5,0 F4_000187 EQU $ ; IN [MIDI_IRQ.INC] CLEAR RINGBUFFER LFSR 0,RINGBUFFER MOVLW 0 CLRF POSTINC0,0 DECFSZ WREG,F,0 BRA $ - 4 F4_000188 EQU $ ; IN [MIDI_IRQ.INC] CLEAR INDEXIN CLRF INDEXIN,0 F4_000189 EQU $ ; IN [MIDI_IRQ.INC] CLEAR INDEXOUT CLRF INDEXOUT,0 F4_000190 EQU $ ; IN [MIDI_IRQ.INC] SET PIE1.5 BSF PIE1,5,0 F4_000191 EQU $ ; IN [MIDI_IRQ.INC] RETURN RETURN 0 HRSOUT F4_000226 EQU $ ; IN [MIDI_IRQ.INC] BTFSS PIR1.4 BTFSS PIR1,4 F4_000227 EQU $ ; IN [MIDI_IRQ.INC] BRA ($ - 2) BRA ($ - 2) F4_000228 EQU $ ; IN [MIDI_IRQ.INC] MOVWF TXREG MOVWF TXREG F4_000229 EQU $ ; IN [MIDI_IRQ.INC] RETURN RETURN 0 _OVER_IRQ_HANDLER F4_EOF EQU $ ; MIDI_IRQ.INC F5_SOF EQU $ ; TIMERS.INC F5_EOF EQU $ ; TIMERS.INC F6_SOF EQU $ ; ADC.INC F6_EOF EQU $ ; ADC.INC F1_000197 EQU $ ; IN [VIBI_MOTORS.BAS] TRISA = %01000001 MOVLW 65 MOVWF TRISA,0 F1_000198 EQU $ ; IN [VIBI_MOTORS.BAS] TRISB = %11100000 MOVLW 224 MOVWF TRISB,0 F1_000199 EQU $ ; IN [VIBI_MOTORS.BAS] TRISC = %11000000 MOVLW 192 MOVWF TRISC,0 F1_000201 EQU $ ; IN [VIBI_MOTORS.BAS] ADCON1 = %10000000 MOVLW 128 MOVWF ADCON1,0 F1_000203 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.4 BCF TRISC,4,0 BCF LATC,4,0 F1_000204 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000205 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.1 BCF TRISA,1,0 BSF LATA,1,0 F1_000206 EQU $ ; IN [VIBI_MOTORS.BAS] SET LEFT BSF DIRBYTE,0,0 F1_000207 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR RIGHT BCF DIRBYTE,1,0 F1_000208 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.4 BCF TRISA,4,0 BCF LATA,4,0 F1_000209 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTB.5 BCF TRISB,5,0 BCF LATB,5,0 F1_000210 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.3 BCF TRISA,3,0 BCF LATA,3,0 F1_000211 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES CLRF LITES,0 F1_000212 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS CLRF VELFLAGS,0 CLRF VELFLAGSH,0 MAIN F1_000286 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTB.5 BCF TRISB,5,0 BSF LATB,5,0 F1_000287 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 50 MOVLW 50 RCALL DL@MS F1_000288 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTB.5 BCF TRISB,5,0 BCF LATB,5,0 F1_000289 EQU $ ; IN [VIBI_MOTORS.BAS] INIT_USART_INTERRUPT VARIABLE MAX_PARAMS=10,INIT_USART_INTERRUPT_RETURN=0,PRM_COUNT=0 RCALL _INIT_USART F1_000291 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR_SERIAL_BUFFER VARIABLE MAX_PARAMS=10,CLEAR_SERIAL_BUFFER_RETURN=0,PRM_COUNT=0 RCALL _CLEAR_USART_BUFFER F1_000304 EQU $ ; IN [VIBI_MOTORS.BAS] _OPENTIMER0 %11111111 & %10111111 & %11011111 & %11110111 VARIABLE MAX_PARAMS=10,_OPENTIMER0_RETURN=0,PRM_COUNT=1 MOVLW 23 MOVWF T0CON CLRF TMR0H,0 CLRF TMR0L,0 BCF INTCON,2,0 BSF INTCON,5,0 BSF T0CON,7,0 F1_000314 EQU $ ; IN [VIBI_MOTORS.BAS] _OPENADC %10101111 & %11111111 & %11110001, %10000111 & %11111100 , %00001110 VARIABLE MAX_PARAMS=10,_OPENADC_RETURN=0,PRM_COUNT=3 CLRF ADCON0 MOVLW 14 MOVWF ADCON1 MOVLW 130 MOVWF ADCON2 BSF ADCON0,0,0 F1_000318 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB INIT_VIBI CALL INIT_VIBI F1_000319 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB CALIBRATE CALL CALIBRATE F1_000320 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 100 MOVLW 100 RCALL DL@MS START_LOOP F1_000323 EQU $ ; IN [VIBI_MOTORS.BAS] BYTEIN = HRSIN RCALL HRSIN MOVWF BYTEIN,0 MIDI_PARSE F1_000326 EQU $ ; IN [VIBI_MOTORS.BAS] IF BYTEIN > PROGCHANGE_STATUS THEN MOVLW 203 SUBWF BYTEIN,W,0 BNC BC@LL31 F1_000327 EQU $ ; IN [VIBI_MOTORS.BAS] IF BYTEIN > 253 THEN MOVLW 254 SUBWF BYTEIN,W,0 BNC BC@LL33 F1_000331 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END BRA BC@LL34 BC@LL33 F1_000332 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000333 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR STATUSBYTE CLRF STATUSBYTE,0 F1_000334 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END F1_000335 EQU $ ; IN [VIBI_MOTORS.BAS] END IF BC@LL34 F1_000336 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL31 F1_000337 EQU $ ; IN [VIBI_MOTORS.BAS] IF STBIT =1 THEN BTFSS BYTEIN,7 BRA BC@LL36 F1_000339 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR STATUSBYTE CLRF STATUSBYTE,0 F1_000340 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT BYTEIN F1_000341 EQU $ ; IN [VIBI_MOTORS.BAS] CASE NOTEOFF_STATUS MOVLW 138 SUBWF BYTEIN,W,0 BNZ BC@LL38 F1_000342 EQU $ ; IN [VIBI_MOTORS.BAS] STATUSBYTE = BYTEIN MOVFF BYTEIN,STATUSBYTE F1_000343 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEUIT = 255 SETF NOTEUIT,0 F1_000344 EQU $ ; IN [VIBI_MOTORS.BAS] RELEASE = 255 SETF RELEASE,0 BRA BC@LL37 BC@LL38 F1_000345 EQU $ ; IN [VIBI_MOTORS.BAS] CASE NOTEON_STATUS MOVLW 154 SUBWF BYTEIN,W,0 BNZ BC@LL41 F1_000346 EQU $ ; IN [VIBI_MOTORS.BAS] STATUSBYTE = BYTEIN MOVFF BYTEIN,STATUSBYTE F1_000347 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEAAN = 255 SETF NOTEAAN,0 F1_000348 EQU $ ; IN [VIBI_MOTORS.BAS] VELO = 255 SETF VELO,0 BRA BC@LL37 BC@LL41 F1_000349 EQU $ ; IN [VIBI_MOTORS.BAS] CASE KEYPRES_STATUS MOVLW 170 SUBWF BYTEIN,W,0 BNZ BC@LL43 F1_000350 EQU $ ; IN [VIBI_MOTORS.BAS] STATUSBYTE = BYTEIN MOVFF BYTEIN,STATUSBYTE F1_000351 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEPRES = 255 SETF NOTEPRES,0 F1_000352 EQU $ ; IN [VIBI_MOTORS.BAS] PRES = 255 SETF PRES,0 BRA BC@LL37 BC@LL43 F1_000353 EQU $ ; IN [VIBI_MOTORS.BAS] CASE CONTROL_STATUS MOVLW 186 SUBWF BYTEIN,W,0 BNZ BC@LL45 F1_000354 EQU $ ; IN [VIBI_MOTORS.BAS] STATUSBYTE = BYTEIN MOVFF BYTEIN,STATUSBYTE F1_000355 EQU $ ; IN [VIBI_MOTORS.BAS] CTRL = 255 SETF CTRL,0 F1_000356 EQU $ ; IN [VIBI_MOTORS.BAS] VALUE = 255 SETF VALUE,0 F1_000367 EQU $ ; IN [VIBI_MOTORS.BAS] END SELECT BC@LL45 BC@LL37 BRA BC@LL46 BC@LL36 F1_000368 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000369 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT STATUSBYTE F1_000370 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 0 MOVF STATUSBYTE,F,0 BNZ BC@LL48 F1_000371 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END BRA BC@LL47 BC@LL48 F1_000372 EQU $ ; IN [VIBI_MOTORS.BAS] CASE NOTEOFF_STATUS MOVLW 138 SUBWF STATUSBYTE,W,0 BNZ BC@LL51 F1_000373 EQU $ ; IN [VIBI_MOTORS.BAS] IF NOTEUIT = 255 THEN INCF NOTEUIT,W,0 BNZ BC@LL53 F1_000374 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEUIT = BYTEIN MOVFF BYTEIN,NOTEUIT BRA BC@LL54 BC@LL53 F1_000375 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000376 EQU $ ; IN [VIBI_MOTORS.BAS] RELEASE = BYTEIN MOVFF BYTEIN,RELEASE F1_000377 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT NOTEUIT F1_000380 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 120 MOVLW 120 SUBWF NOTEUIT,W,0 BNZ BC@LL56 F1_000381 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES.0 BCF LITES,0,0 F1_000382 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.2 BCF VELFLAGS,2,0 F1_000383 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 RCALL H@PWM F1_000384 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE0PWM CLRF LITE0PWM,0 BRA BC@LL55 BC@LL56 F1_000385 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 121 MOVLW 121 SUBWF NOTEUIT,W,0 BNZ BC@LL59 F1_000386 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES.1 BCF LITES,1,0 F1_000387 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.3 BCF VELFLAGS,3,0 F1_000388 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 RCALL H@PWM F1_000389 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE1PWM CLRF LITE1PWM,0 F1_000404 EQU $ ; IN [VIBI_MOTORS.BAS] END SELECT BC@LL59 BC@LL55 F1_000405 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEUIT = 255 SETF NOTEUIT,0 F1_000406 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL54 F1_000407 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END BRA BC@LL47 BC@LL51 F1_000408 EQU $ ; IN [VIBI_MOTORS.BAS] CASE NOTEON_STATUS MOVLW 154 SUBWF STATUSBYTE,W,0 BTFSS STATUS,2 BRA BC@LL61 F1_000409 EQU $ ; IN [VIBI_MOTORS.BAS] IF NOTEAAN = 255 THEN INCF NOTEAAN,W,0 BNZ BC@LL63 F1_000410 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEAAN = BYTEIN MOVFF BYTEIN,NOTEAAN BRA BC@LL64 BC@LL63 F1_000411 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000412 EQU $ ; IN [VIBI_MOTORS.BAS] VELO = BYTEIN MOVFF BYTEIN,VELO F1_000413 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELO = 0 THEN MOVF VELO,F,0 BNZ BC@LL66 F1_000414 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT NOTEAAN F1_000417 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 120 MOVLW 120 SUBWF NOTEAAN,W,0 BNZ BC@LL68 F1_000418 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES.0 BCF LITES,0,0 F1_000419 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.2 BCF VELFLAGS,2,0 F1_000420 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 RCALL H@PWM F1_000421 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE0PWM CLRF LITE0PWM,0 BRA BC@LL67 BC@LL68 F1_000422 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 121 MOVLW 121 SUBWF NOTEAAN,W,0 BNZ BC@LL71 F1_000423 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES.1 BCF LITES,1,0 F1_000424 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.3 BCF VELFLAGS,3,0 F1_000425 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 RCALL H@PWM F1_000426 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE1PWM CLRF LITE1PWM,0 F1_000441 EQU $ ; IN [VIBI_MOTORS.BAS] END SELECT BC@LL71 BC@LL67 F1_000442 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEAAN = 255 SETF NOTEAAN,0 F1_000443 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END F1_000444 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL66 F1_000445 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT NOTEAAN F1_000448 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 120 MOVLW 120 SUBWF NOTEAAN,W,0 BNZ BC@LL73 F1_000449 EQU $ ; IN [VIBI_MOTORS.BAS] SET LITES.0 BSF LITES,0,0 F1_000450 EQU $ ; IN [VIBI_MOTORS.BAS] LITE0PWM = VELO + VELO + 1 MOVF VELO,W,0 ADDWF VELO,W,0 MOVWF PP7,0 CLRF PP7H,0 RLCF PP7H,F,0 INCF PP7,W,0 MOVWF LITE0PWM,0 F1_000451 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, LITE0PWM, 2442 MOVFF LITE0PWM,GEN MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 RCALL H@PWM BRA BC@LL72 BC@LL73 F1_000452 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 121 MOVLW 121 SUBWF NOTEAAN,W,0 BNZ BC@LL76 F1_000453 EQU $ ; IN [VIBI_MOTORS.BAS] SET LITES.1 BSF LITES,1,0 F1_000454 EQU $ ; IN [VIBI_MOTORS.BAS] LITE1PWM = VELO + VELO + 1 MOVF VELO,W,0 ADDWF VELO,W,0 MOVWF PP7,0 CLRF PP7H,0 RLCF PP7H,F,0 INCF PP7,W,0 MOVWF LITE1PWM,0 F1_000455 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, LITE1PWM, 2442 MOVFF LITE1PWM,GEN MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 RCALL H@PWM F1_000468 EQU $ ; IN [VIBI_MOTORS.BAS] CASE ELSE BRA BC@LL78 BC@LL76 F1_000469 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEAAN = 255 SETF NOTEAAN,0 F1_000470 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END F1_000471 EQU $ ; IN [VIBI_MOTORS.BAS] END SELECT BC@LL78 BC@LL72 F1_000472 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEAAN = 255 SETF NOTEAAN,0 F1_000473 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL64 F1_000474 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END BRA BC@LL47 BC@LL61 F1_000475 EQU $ ; IN [VIBI_MOTORS.BAS] CASE KEYPRES_STATUS MOVLW 170 SUBWF STATUSBYTE,W,0 BNZ BC@LL80 F1_000476 EQU $ ; IN [VIBI_MOTORS.BAS] IF NOTEPRES = 255 THEN INCF NOTEPRES,W,0 BNZ BC@LL82 F1_000477 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEPRES = BYTEIN MOVFF BYTEIN,NOTEPRES BRA BC@LL83 BC@LL82 F1_000478 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000479 EQU $ ; IN [VIBI_MOTORS.BAS] PRES = BYTEIN MOVFF BYTEIN,PRES F1_000480 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB KEYPRES RCALL KEYPRES F1_000481 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL83 F1_000482 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END BRA BC@LL47 BC@LL80 F1_000483 EQU $ ; IN [VIBI_MOTORS.BAS] CASE CONTROL_STATUS MOVLW 186 SUBWF STATUSBYTE,W,0 BNZ BC@LL85 F1_000484 EQU $ ; IN [VIBI_MOTORS.BAS] IF CTRL = 255 THEN INCF CTRL,W,0 BNZ BC@LL87 F1_000485 EQU $ ; IN [VIBI_MOTORS.BAS] CTRL = BYTEIN MOVFF BYTEIN,CTRL BRA BC@LL88 BC@LL87 F1_000486 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000487 EQU $ ; IN [VIBI_MOTORS.BAS] VALUE = BYTEIN MOVFF BYTEIN,VALUE F1_000488 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB CONTROLLER RCALL CONTROLLER F1_000489 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL88 F1_000490 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO MIDI_PARSE_END BRA MIDI_PARSE_END F1_000491 EQU $ ; IN [VIBI_MOTORS.BAS] END SELECT BC@LL85 BC@LL47 F1_000492 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL46 MIDI_PARSE_END CHECK_TIMERS F1_000500 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELFLAGS0 > 0 THEN MOVF VELFLAGS,F,0 BTFSC STATUS,2 BRA BC@LL90 F1_000501 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELFLAGS0.0 = 1 THEN BTFSS VELFLAGS,0 BRA BC@LL92 F1_000502 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000503 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD1 = VELMSB[0] MOVFF VELMSB#0,VELTIMHH MOVFF VELMSB#0H,VELTIMHHH F1_000504 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD0 = VELLSB[0] MOVFF VELLSB#0,VELTIM MOVFF VELLSB#0H,VELTIMH F1_000505 EQU $ ; IN [VIBI_MOTORS.BAS] IF CNT >= VELTIM THEN MOVF VELTIM,W,0 SUBWF CNT,W,0 MOVF VELTIMH,W,0 SUBWFB CNTH,W,0 MOVF VELTIMHH,W,0 SUBWFB CNTHH,W,0 MOVF VELTIMHHH,W,0 SUBWFB CNTHHH,W,0 MOVF CNTHHH,W,0 XORWF VELTIMHHH,W,0 BTFSC STATUS,0,0 XORLW 128 BTFSC STATUS,4 F1_000506 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB TASK0 CALL TASK0 F1_000507 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL94 F1_000508 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL92 F1_000509 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELFLAGS0.1 = 1 THEN BTFSS VELFLAGS,1 BRA BC@LL96 F1_000510 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000511 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD1 = VELMSB[1] MOVFF VELMSB#1,VELTIMHH MOVFF VELMSB#1H,VELTIMHHH F1_000512 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD0 = VELLSB[1] MOVFF VELLSB#1,VELTIM MOVFF VELLSB#1H,VELTIMH F1_000513 EQU $ ; IN [VIBI_MOTORS.BAS] IF CNT >= VELTIM THEN MOVF VELTIM,W,0 SUBWF CNT,W,0 MOVF VELTIMH,W,0 SUBWFB CNTH,W,0 MOVF VELTIMHH,W,0 SUBWFB CNTHH,W,0 MOVF VELTIMHHH,W,0 SUBWFB CNTHHH,W,0 MOVF CNTHHH,W,0 XORWF VELTIMHHH,W,0 BTFSC STATUS,0,0 XORLW 128 BTFSC STATUS,4 F1_000514 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB TASK1 CALL TASK1 F1_000515 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL98 F1_000516 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL96 F1_000517 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELFLAGS0.2 = 1 THEN BTFSS VELFLAGS,2 BRA BC@LL100 F1_000518 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000519 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD1 = VELMSB[2] MOVFF VELMSB#2,VELTIMHH MOVFF VELMSB#2H,VELTIMHHH F1_000520 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD0 = VELLSB[2] MOVFF VELLSB#2,VELTIM MOVFF VELLSB#2H,VELTIMH F1_000521 EQU $ ; IN [VIBI_MOTORS.BAS] IF CNT >= VELTIM THEN MOVF VELTIM,W,0 SUBWF CNT,W,0 MOVF VELTIMH,W,0 SUBWFB CNTH,W,0 MOVF VELTIMHH,W,0 SUBWFB CNTHH,W,0 MOVF VELTIMHHH,W,0 SUBWFB CNTHHH,W,0 MOVF CNTHHH,W,0 XORWF VELTIMHHH,W,0 BTFSC STATUS,0,0 XORLW 128 BTFSC STATUS,4 F1_000522 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB TASK2 CALL TASK2 F1_000523 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL102 F1_000524 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL100 F1_000525 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELFLAGS0.3 = 1 THEN BTFSS VELFLAGS,3 BRA BC@LL104 F1_000526 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000527 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD1 = VELMSB[3] MOVFF VELMSB#3,VELTIMHH MOVFF VELMSB#3H,VELTIMHHH F1_000528 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD0 = VELLSB[3] MOVFF VELLSB#3,VELTIM MOVFF VELLSB#3H,VELTIMH F1_000529 EQU $ ; IN [VIBI_MOTORS.BAS] IF CNT >= VELTIM THEN MOVF VELTIM,W,0 SUBWF CNT,W,0 MOVF VELTIMH,W,0 SUBWFB CNTH,W,0 MOVF VELTIMHH,W,0 SUBWFB CNTHH,W,0 MOVF VELTIMHHH,W,0 SUBWFB CNTHHH,W,0 MOVF CNTHHH,W,0 XORWF VELTIMHHH,W,0 BTFSC STATUS,0,0 XORLW 128 BTFSC STATUS,4 F1_000530 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB TASK3 CALL TASK3 F1_000531 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL106 F1_000532 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL104 F1_000533 EQU $ ; IN [VIBI_MOTORS.BAS] IF VELFLAGS0.4 = 1 THEN BTFSS VELFLAGS,4 BRA BC@LL108 F1_000534 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000535 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD1 = VELMSB[4] MOVFF VELMSB#4,VELTIMHH MOVFF VELMSB#4H,VELTIMHHH F1_000536 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM.WORD0 = VELLSB[4] MOVFF VELLSB#4,VELTIM MOVFF VELLSB#4H,VELTIMH F1_000537 EQU $ ; IN [VIBI_MOTORS.BAS] IF CNT >= VELTIM THEN MOVF VELTIM,W,0 SUBWF CNT,W,0 MOVF VELTIMH,W,0 SUBWFB CNTH,W,0 MOVF VELTIMHH,W,0 SUBWFB CNTHH,W,0 MOVF VELTIMHHH,W,0 SUBWFB CNTHHH,W,0 MOVF CNTHHH,W,0 XORWF VELTIMHHH,W,0 BTFSC STATUS,0,0 XORLW 128 BTFSC STATUS,4 F1_000538 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB TASK4 CALL TASK4 F1_000539 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL110 F1_000540 EQU $ ; IN [VIBI_MOTORS.BAS] END IF BC@LL108 F1_000541 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL90 F1_000542 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO START_LOOP BRA START_LOOP KEYPRES F1_000547 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT NOTEPRES F1_000550 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 120 MOVLW 120 SUBWF NOTEPRES,W,0 BTFSS STATUS,2 BRA BC@LL112 F1_000551 EQU $ ; IN [VIBI_MOTORS.BAS] IF LITES.0 = 1 THEN BTFSS LITES,0 BRA BC@LL115 F1_000552 EQU $ ; IN [VIBI_MOTORS.BAS] IF PRES > 0 THEN MOVF PRES,F,0 BZ BC@LL117 F1_000553 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.2 BSF VELFLAGS,2,0 F1_000554 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.WORD0 = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000555 EQU $ ; IN [VIBI_MOTORS.BAS] TASK_RSI[2] = (~PRES & 127) << 9 COMF PRES,W,0 MOVWF PBP#VAR1,0 MOVLW 127 ANDWF PBP#VAR1,W,0 MOVWF PP7,0 CLRF PP7H,0 MOVFF PP7,PBP#VAR0H CLRF PBP#VAR0,0 BCF STATUS,0,0 RLCF PBP#VAR0H,F,0 MOVFF PBP#VAR0,TASK_RSI#2 MOVFF PBP#VAR0H,TASK_RSI#2H F1_000556 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + TASK_RSI[2] MOVFF TASK_RSI#2,PBP#VAR0 MOVFF TASK_RSI#2H,PBP#VAR0H MOVF PBP#VAR0,W,0 ADDWF CNT,W,0 MOVWF VELTIM,0 MOVF PBP#VAR0H,W,0 ADDWFC CNTH,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF VELTIMHHH,0 F1_000557 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[2] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#2 MOVFF VELTIMHHH,VELMSB#2H F1_000558 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[2] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#2 MOVFF VELTIMH,VELLSB#2H BRA BC@LL118 BC@LL117 F1_000559 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000560 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.2 BCF VELFLAGS,2,0 F1_000561 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, LITE0PWM, 2442 MOVFF LITE0PWM,GEN MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM F1_000562 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL118 BRA BC@LL119 BC@LL115 F1_000563 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000564 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.2 BCF VELFLAGS,2,0 F1_000565 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM F1_000566 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL119 BRA BC@LL111 BC@LL112 F1_000567 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 121 MOVLW 121 SUBWF NOTEPRES,W,0 BTFSS STATUS,2 BRA BC@LL121 F1_000568 EQU $ ; IN [VIBI_MOTORS.BAS] IF LITES.1 = 1 THEN BTFSS LITES,1 BRA BC@LL123 F1_000569 EQU $ ; IN [VIBI_MOTORS.BAS] IF PRES > 0 THEN MOVF PRES,F,0 BZ BC@LL125 F1_000570 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.3 BSF VELFLAGS,3,0 F1_000571 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.WORD0 = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000572 EQU $ ; IN [VIBI_MOTORS.BAS] TASK_RSI[3] = (~PRES & 127) << 9 COMF PRES,W,0 MOVWF PBP#VAR1,0 MOVLW 127 ANDWF PBP#VAR1,W,0 MOVWF PP7,0 CLRF PP7H,0 MOVFF PP7,PBP#VAR0H CLRF PBP#VAR0,0 BCF STATUS,0,0 RLCF PBP#VAR0H,F,0 MOVFF PBP#VAR0,TASK_RSI#3 MOVFF PBP#VAR0H,TASK_RSI#3H F1_000573 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + TASK_RSI[3] MOVFF TASK_RSI#3,PBP#VAR0 MOVFF TASK_RSI#3H,PBP#VAR0H MOVF PBP#VAR0,W,0 ADDWF CNT,W,0 MOVWF VELTIM,0 MOVF PBP#VAR0H,W,0 ADDWFC CNTH,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF VELTIMHHH,0 F1_000574 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[3] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#3 MOVFF VELTIMHHH,VELMSB#3H F1_000575 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[3] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#3 MOVFF VELTIMH,VELLSB#3H BRA BC@LL126 BC@LL125 F1_000576 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000577 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.3 BCF VELFLAGS,3,0 F1_000578 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, LITE1PWM, 2442 MOVFF LITE1PWM,GEN MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM F1_000579 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL126 BRA BC@LL127 BC@LL123 F1_000580 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000581 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.3 BCF VELFLAGS,3,0 F1_000582 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM F1_000583 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL127 F1_000622 EQU $ ; IN [VIBI_MOTORS.BAS] ENDSELECT BC@LL121 BC@LL111 F1_000623 EQU $ ; IN [VIBI_MOTORS.BAS] NOTEPRES = 255 SETF NOTEPRES,0 F1_000624 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 CONTROLLER F1_000641 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT CTRL F1_000642 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 7 MOVLW 7 SUBWF CTRL,W,0 BTFSS STATUS,2 BRA BC@LL129 F1_000643 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.4 BCF VELFLAGS,4,0 F1_000644 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.0 BCF VELFLAGS,0,0 F1_000645 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.1 BCF VELFLAGS,1,0 F1_000647 EQU $ ; IN [VIBI_MOTORS.BAS] CC7 = VALUE MOVFF VALUE,CC7 F1_000648 EQU $ ; IN [VIBI_MOTORS.BAS] OLDSOLLPOS = MOTPOS MOVFF MOTPOS,OLDSOLLPOS MOVFF MOTPOSH,OLDSOLLPOSH F1_000664 EQU $ ; IN [VIBI_MOTORS.BAS] TMP = (CLOSE90POS * CC7) >> 7 MOVF CC7,W,0 MULWF CLOSE90POS,0 MOVFF PRODL,PP7 MOVFF PRODH,PP7H MULWF CLOSE90POSH,0 MOVF PRODL,W,0 ADDWF PP7H,F,0 MOVFF PP7,TMP MOVFF PP7H,TMPH MOVLW 7 SR@LB2 BCF STATUS,0,0 RRCF TMPH,F,0 RRCF TMP,F,0 DECFSZ WREG,F,0 BRA SR@LB2 F1_000665 EQU $ ; IN [VIBI_MOTORS.BAS] SOLLPOS = CLOSE90POS - TMP MOVF TMP,W,0 SUBWF CLOSE90POS,W,0 MOVWF SOLLPOS,0 MOVF TMPH,W,0 SUBWFB CLOSE90POSH,W,0 MOVWF SOLLPOSH,0 F1_000666 EQU $ ; IN [VIBI_MOTORS.BAS] SOLLPOS = SOLLPOS + CC72 MOVF CC72,W,0 ADDWF SOLLPOS,F,0 MOVLW 0 ADDWFC SOLLPOSH,F,0 F1_000669 EQU $ ; IN [VIBI_MOTORS.BAS] IF SOLLPOS <> OLDSOLLPOS THEN MOVF OLDSOLLPOSH,W,0 SUBWF SOLLPOSH,W,0 BNZ CP@LB8 MOVF OLDSOLLPOS,W,0 SUBWF SOLLPOS,W,0 BZ BC@LL132 CP@LB8 F1_000670 EQU $ ; IN [VIBI_MOTORS.BAS] MOTORPERIOD = 36 MOVLW 36 MOVWF MOTORPERIOD,0 CLRF MOTORPERIODH,0 F1_000671 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT SOLLPOS F1_000672 EQU $ ; IN [VIBI_MOTORS.BAS] CASE > MOTPOS MOVF SOLLPOS,W,0 SUBWF MOTPOS,W,0 MOVF SOLLPOSH,W,0 SUBWFB MOTPOSH,W,0 BC BC@LL134 F1_000673 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB MOVERIGHT RCALL MOVERIGHT BRA BC@LL133 BC@LL134 F1_000674 EQU $ ; IN [VIBI_MOTORS.BAS] CASE < MOTPOS MOVF MOTPOS,W,0 SUBWF SOLLPOS,W,0 MOVF MOTPOSH,W,0 SUBWFB SOLLPOSH,W,0 BC BC@LL137 F1_000675 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB MOVELEFT RCALL MOVELEFT F1_000676 EQU $ ; IN [VIBI_MOTORS.BAS] CASE ELSE BRA BC@LL139 BC@LL137 F1_000678 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000681 EQU $ ; IN [VIBI_MOTORS.BAS] ENDSELECT BC@LL139 BC@LL133 BRA BC@LL140 BC@LL132 F1_000682 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000684 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000685 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL140 F1_000686 EQU $ ; IN [VIBI_MOTORS.BAS] CTRL = 255 SETF CTRL,0 F1_000687 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 BRA BC@LL128 BC@LL129 F1_000722 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 21, 22 MOVLW 21 SUBWF CTRL,W,0 BZ BC@LL141 MOVLW 22 SUBWF CTRL,W,0 BTFSS STATUS,2 BRA BC@LL142 BC@LL141 F1_000723 EQU $ ; IN [VIBI_MOTORS.BAS] CC21 = VALUE MOVFF VALUE,CC21 F1_000724 EQU $ ; IN [VIBI_MOTORS.BAS] MOTORPERIOD = 148 - VALUE MOVF VALUE,W,0 SUBLW 148 MOVWF MOTORPERIOD,0 MOVLW 0 BTFSS STATUS,0,0 ADDLW 255 MOVWF MOTORPERIODH,0 F1_000725 EQU $ ; IN [VIBI_MOTORS.BAS] CTRL = 255 SETF CTRL,0 F1_000726 EQU $ ; IN [VIBI_MOTORS.BAS] ACC = CC32 MOVFF CC32,ACC F1_000728 EQU $ ; IN [VIBI_MOTORS.BAS] IF VALUE > 0 THEN MOVF VALUE,F,0 BZ BC@LL144 F1_000729 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.3 BCF TRISC,3,0 BCF LATC,3,0 F1_000730 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.4 BSF VELFLAGS,4,0 F1_000731 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000732 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + MOTORPERIOD + ACC MOVF MOTORPERIOD,W,0 ADDWF CNT,W,0 MOVWF PP7,0 MOVF MOTORPERIODH,W,0 ADDWFC CNTH,W,0 MOVWF PP7H,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF PP7HH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF PP7HHH,0 MOVF ACC,W,0 ADDWF PP7,W,0 MOVWF VELTIM,0 MOVLW 0 ADDWFC PP7H,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC PP7HH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC PP7HHH,W,0 MOVWF VELTIMHHH,0 F1_000733 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[4] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#4 MOVFF VELTIMHHH,VELMSB#4H F1_000734 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[4] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#4 MOVFF VELTIMH,VELLSB#4H BRA BC@LL145 BC@LL144 F1_000735 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000736 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.4 BCF VELFLAGS,4,0 F1_000740 EQU $ ; IN [VIBI_MOTORS.BAS] SELECT SOLLPOS F1_000741 EQU $ ; IN [VIBI_MOTORS.BAS] CASE > MOTPOS MOVF SOLLPOS,W,0 SUBWF MOTPOS,W,0 MOVF SOLLPOSH,W,0 SUBWFB MOTPOSH,W,0 BC BC@LL147 F1_000742 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB MOVERIGHT RCALL MOVERIGHT BRA BC@LL146 BC@LL147 F1_000743 EQU $ ; IN [VIBI_MOTORS.BAS] CASE < MOTPOS MOVF MOTPOS,W,0 SUBWF SOLLPOS,W,0 MOVF MOTPOSH,W,0 SUBWFB SOLLPOSH,W,0 BC BC@LL150 F1_000744 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB MOVELEFT RCALL MOVELEFT F1_000745 EQU $ ; IN [VIBI_MOTORS.BAS] CASE ELSE BRA BC@LL152 BC@LL150 F1_000746 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.0 BCF VELFLAGS,0,0 F1_000747 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.1 BCF VELFLAGS,1,0 F1_000748 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000749 EQU $ ; IN [VIBI_MOTORS.BAS] ENDSELECT BC@LL152 BC@LL146 F1_000750 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL145 F1_000751 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 BRA BC@LL128 BC@LL142 F1_000753 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 32 MOVLW 32 SUBWF CTRL,W,0 BNZ BC@LL154 F1_000757 EQU $ ; IN [VIBI_MOTORS.BAS] CC32 = VALUE MOVFF VALUE,CC32 F1_000758 EQU $ ; IN [VIBI_MOTORS.BAS] CTRL = 255 SETF CTRL,0 F1_000759 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 BRA BC@LL128 BC@LL154 F1_000760 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 66 MOVLW 66 SUBWF CTRL,W,0 BNZ BC@LL156 F1_000762 EQU $ ; IN [VIBI_MOTORS.BAS] IF VALUE = 0 THEN MOVF VALUE,F,0 BNZ BC@LL158 F1_000763 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.4 BCF TRISC,4,0 BCF LATC,4,0 F1_000764 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB ALLNOTESOFF RCALL ALLNOTESOFF BRA BC@LL159 BC@LL158 F1_000765 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000766 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.4 BCF TRISC,4,0 BSF LATC,4,0 F1_000767 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL159 F1_000768 EQU $ ; IN [VIBI_MOTORS.BAS] CC66 = VALUE MOVFF VALUE,CC66 F1_000769 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO CTRL_PARSE_END BRA CTRL_PARSE_END BRA BC@LL128 BC@LL156 F1_000770 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 70 MOVLW 70 SUBWF CTRL,W,0 BNZ BC@LL161 F1_000771 EQU $ ; IN [VIBI_MOTORS.BAS] IF VALUE = 64 THEN MOVLW 64 SUBWF VALUE,W,0 BNZ BC@LL163 F1_000772 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR CALIBFLAG CLRF CALIBFLAG,0 F1_000773 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB CALIBRATE RCALL CALIBRATE F1_000774 EQU $ ; IN [VIBI_MOTORS.BAS] END IF BC@LL163 F1_000775 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO CTRL_PARSE_END BRA CTRL_PARSE_END BRA BC@LL128 BC@LL161 F1_000782 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 72 MOVLW 72 SUBWF CTRL,W,0 BNZ BC@LL165 F1_000783 EQU $ ; IN [VIBI_MOTORS.BAS] CC72 = VALUE MOVFF VALUE,CC72 F1_000784 EQU $ ; IN [VIBI_MOTORS.BAS] GOTO CTRL_PARSE_END BRA CTRL_PARSE_END BRA BC@LL128 BC@LL165 F1_000786 EQU $ ; IN [VIBI_MOTORS.BAS] CASE 123 MOVLW 123 SUBWF CTRL,W,0 BTFSC STATUS,2 F1_000788 EQU $ ; IN [VIBI_MOTORS.BAS] GOSUB ALLNOTESOFF RCALL ALLNOTESOFF F1_000789 EQU $ ; IN [VIBI_MOTORS.BAS] END SELECT BC@LL167 BC@LL128 CTRL_PARSE_END F1_000791 EQU $ ; IN [VIBI_MOTORS.BAS] CTRL = 255 SETF CTRL,0 F1_000792 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 ALLNOTESOFF F1_000795 EQU $ ; IN [VIBI_MOTORS.BAS] SOLLPOS = MOTPOS MOVFF MOTPOS,SOLLPOS MOVFF MOTPOSH,SOLLPOSH F1_000796 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000797 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.4 BCF TRISA,4,0 BCF LATA,4,0 F1_000798 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0 CLRF VELFLAGS,0 F1_000799 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES CLRF LITES,0 F1_000800 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM F1_000801 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM F1_000802 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE0PWM CLRF LITE0PWM,0 F1_000803 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE1PWM CLRF LITE1PWM,0 F1_000804 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 INIT_VIBI F1_000807 EQU $ ; IN [VIBI_MOTORS.BAS] DISTPEAK = 1023 SETF DISTPEAK MOVLW 3 MOVWF DISTPEAKH F1_000808 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS CLRF VELFLAGS,0 CLRF VELFLAGSH,0 F1_000809 EQU $ ; IN [VIBI_MOTORS.BAS] CC32 = ACCELMAX MOVLW 12 MOVWF CC32,0 F1_000810 EQU $ ; IN [VIBI_MOTORS.BAS] ACC = ACCELMAX MOVWF ACC,0 F1_000811 EQU $ ; IN [VIBI_MOTORS.BAS] CC7 = 127 MOVLW 127 MOVWF CC7,0 F1_000812 EQU $ ; IN [VIBI_MOTORS.BAS] CC71 = 0 CLRF CC71,0 F1_000813 EQU $ ; IN [VIBI_MOTORS.BAS] CC72 = 0 CLRF CC72,0 F1_000814 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR PRES CLRF PRES,0 F1_000815 EQU $ ; IN [VIBI_MOTORS.BAS] MOTORPERIOD = 112 MOVLW 112 MOVWF MOTORPERIOD,0 CLRF MOTORPERIODH,0 F1_000816 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.3 BCF TRISA,3,0 BCF LATA,3,0 F1_000817 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.4 BCF TRISA,4,0 BCF LATA,4,0 F1_000818 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITES CLRF LITES,0 F1_000819 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM F1_000820 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM F1_000821 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE0PWM CLRF LITE0PWM,0 F1_000822 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LITE1PWM CLRF LITE1PWM,0 F1_000823 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000824 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 MOVELEFT F1_000827 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.3 BCF TRISC,3,0 BCF LATC,3,0 F1_000828 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.1 BCF TRISA,1,0 BSF LATA,1,0 F1_000829 EQU $ ; IN [VIBI_MOTORS.BAS] SET LEFT BSF DIRBYTE,0,0 F1_000830 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR RIGHT BCF DIRBYTE,1,0 F1_000831 EQU $ ; IN [VIBI_MOTORS.BAS] ACC = CC32 MOVFF CC32,ACC F1_000833 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.0 BSF VELFLAGS,0,0 F1_000834 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000835 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + MOTORPERIOD + ACC MOVF MOTORPERIOD,W,0 ADDWF CNT,W,0 MOVWF PP7,0 MOVF MOTORPERIODH,W,0 ADDWFC CNTH,W,0 MOVWF PP7H,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF PP7HH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF PP7HHH,0 MOVF ACC,W,0 ADDWF PP7,W,0 MOVWF VELTIM,0 MOVLW 0 ADDWFC PP7H,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC PP7HH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC PP7HHH,W,0 MOVWF VELTIMHHH,0 F1_000836 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[0] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#0 MOVFF VELTIMHHH,VELMSB#0H F1_000837 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[0] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#0 MOVFF VELTIMH,VELLSB#0H F1_000838 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 MOVERIGHT F1_000841 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.3 BCF TRISC,3,0 BCF LATC,3,0 F1_000842 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.1 BCF TRISA,1,0 BCF LATA,1,0 F1_000843 EQU $ ; IN [VIBI_MOTORS.BAS] SET RIGHT BSF DIRBYTE,1,0 F1_000844 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR LEFT BCF DIRBYTE,0,0 F1_000845 EQU $ ; IN [VIBI_MOTORS.BAS] ACC = CC32 MOVFF CC32,ACC F1_000847 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.1 BSF VELFLAGS,1,0 F1_000848 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_000849 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + MOTORPERIOD + ACC MOVF MOTORPERIOD,W,0 ADDWF CNT,W,0 MOVWF PP7,0 MOVF MOTORPERIODH,W,0 ADDWFC CNTH,W,0 MOVWF PP7H,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF PP7HH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF PP7HHH,0 MOVF ACC,W,0 ADDWF PP7,W,0 MOVWF VELTIM,0 MOVLW 0 ADDWFC PP7H,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC PP7HH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC PP7HHH,W,0 MOVWF VELTIMHHH,0 F1_000850 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[1] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#1 MOVFF VELTIMHHH,VELMSB#1H F1_000851 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[1] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#1 MOVFF VELTIMH,VELLSB#1H F1_000852 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 CALIBRATE F1_000859 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0 CLRF VELFLAGS,0 F1_000860 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR CALIBFLAG CLRF CALIBFLAG,0 F1_000861 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR PROXVAL CLRF PROXVAL,0 CLRF PROXVALH,0 F1_000862 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR PROXPEAK CLRF PROXPEAK,0 CLRF PROXPEAKH,0 F1_000863 EQU $ ; IN [VIBI_MOTORS.BAS] DISTPEAK = 1023 SETF DISTPEAK MOVLW 3 MOVWF DISTPEAKH F1_000865 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.3 BCF TRISC,3,0 BCF LATC,3,0 F1_000866 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.1 BCF TRISA,1,0 BSF LATA,1,0 F1_000867 EQU $ ; IN [VIBI_MOTORS.BAS] SET LEFT BSF DIRBYTE,0,0 F1_000868 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR RIGHT BCF DIRBYTE,1,0 F1_000870 EQU $ ; IN [VIBI_MOTORS.BAS] FOR TMP = 0 TO NRSTEPS * 8 CLRF TMP,0 CLRF TMPH,0 FR@LB169 MOVLW 12 SUBWF TMPH,W,0 BNC CP@LB11 BNZ NX@LB170 MOVF TMP,W,0 BNZ NX@LB170 CP@LB11 F1_000871 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = ADIN 0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH F1_000872 EQU $ ; IN [VIBI_MOTORS.BAS] IF PF_SENSOR > PROXPEAK THEN MOVF PF_SENSOR,W,0 SUBWF PROXPEAK,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXPEAKH,W,0 BC BC@LL171 F1_000873 EQU $ ; IN [VIBI_MOTORS.BAS] PROXPEAK = PF_SENSOR MOVFF PF_SENSOR,PROXPEAK MOVFF PF_SENSORH,PROXPEAKH F1_000875 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.3 BCF TRISA,3,0 BSF LATA,3,0 BRA BC@LL172 BC@LL171 F1_000876 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000877 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.3 BCF TRISA,3,0 BCF LATA,3,0 F1_000878 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL172 F1_000879 EQU $ ; IN [VIBI_MOTORS.BAS] IF PF_SENSOR < DISTPEAK THEN DISTPEAK = PF_SENSOR MOVF DISTPEAK,W SUBWF PF_SENSOR,W,0 MOVF DISTPEAKH,W SUBWFB PF_SENSORH,W,0 BC BC@LL174 MOVFF PF_SENSOR,DISTPEAK MOVFF PF_SENSORH,DISTPEAKH BC@LL174 F1_000881 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_000882 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 3 MOVLW 3 CALL DL@MS F1_000884 EQU $ ; IN [VIBI_MOTORS.BAS] NEXT TMP INCF TMP,F,0 BTFSC STATUS,2,0 INCF TMPH,F,0 BNZ FR@LB169 NX@LB170 F1_000886 EQU $ ; IN [VIBI_MOTORS.BAS] PROXVAL = (DISTPEAK + PROXPEAK) / 2 MOVF PROXPEAK,W,0 ADDWF DISTPEAK,W MOVWF PP7,0 MOVF PROXPEAKH,W,0 ADDWFC DISTPEAKH,W MOVWF PP7H,0 BCF STATUS,0,0 RRCF PP7H,W,0 MOVWF PROXVALH,0 RRCF PP7,W,0 MOVWF PROXVAL,0 F1_000888 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.3 BCF TRISA,3,0 BCF LATA,3,0 F1_000890 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = ADIN 0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH F1_000894 EQU $ ; IN [VIBI_MOTORS.BAS] REPEAT BC@LL175 F1_000895 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_000896 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 3 MOVLW 3 CALL DL@MS F1_000897 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = ADIN 0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH F1_000898 EQU $ ; IN [VIBI_MOTORS.BAS] UNTIL PF_SENSOR > PROXVAL MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BC BC@LL175 BC@LL176 F1_000899 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR MOTPOS CLRF MOTPOS,0 CLRF MOTPOSH,0 F1_000900 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.3 BCF TRISA,3,0 BSF LATA,3,0 F1_000901 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000902 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 200 MOVLW 200 CALL DL@MS F1_000903 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR PROXPOS LFSR 0,PROXPOS MOVLW 96 CLRF POSTINC0,0 DECFSZ WREG,F,0 BRA $ - 4 F1_000906 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTA.3 BCF TRISA,3,0 BCF LATA,3,0 F1_000907 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = ADIN 0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH F1_000908 EQU $ ; IN [VIBI_MOTORS.BAS] PROXPOS[0] = PF_SENSOR MOVFF PF_SENSOR,PROXPOS#0 MOVFF PF_SENSORH,PROXPOS#0H F1_000909 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR TRAJ CLRF TRAJ,0 CLRF TRAJH,0 F1_000910 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.1 BCF TRISA,1,0 BSF LATA,1,0 F1_000911 EQU $ ; IN [VIBI_MOTORS.BAS] SET LEFT BSF DIRBYTE,0,0 F1_000912 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR RIGHT BCF DIRBYTE,1,0 F1_000913 EQU $ ; IN [VIBI_MOTORS.BAS] LOW PORTC.3 BCF TRISC,3,0 BCF LATC,3,0 F1_000914 EQU $ ; IN [VIBI_MOTORS.BAS] REPEAT BC@LL177 F1_000915 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_000916 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 3 MOVLW 3 CALL DL@MS F1_000917 EQU $ ; IN [VIBI_MOTORS.BAS] INC TRAJ INFSNZ TRAJ,F,0 INCF TRAJH,F,0 F1_000918 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = ADIN 0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH F1_000919 EQU $ ; IN [VIBI_MOTORS.BAS] IF TRAJ < 48 THEN MOVF TRAJH,F,0 BNZ BC@LL180 MOVLW 48 SUBWF TRAJ,W,0 BC BC@LL180 F1_000920 EQU $ ; IN [VIBI_MOTORS.BAS] PROXPOS[TRAJ] = PF_SENSOR LFSR 0,PROXPOS BCF STATUS,0,0 RLCF TRAJ,W,0 MOVFF PF_SENSOR,PLUSW0 INCF WREG,F,0 MOVFF PF_SENSORH,PLUSW0 F1_000921 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL180 F1_000922 EQU $ ; IN [VIBI_MOTORS.BAS] IF PF_SENSOR <= PROXVAL THEN MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BNC BC@LL182 F1_000923 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR NEAR BCF DIRBYTE,4,0 F1_000924 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR NEARRIGHT BCF DIRBYTE,2,0 F1_000925 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR NEARLEFT BCF DIRBYTE,3,0 BRA BC@LL183 BC@LL182 F1_000926 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000927 EQU $ ; IN [VIBI_MOTORS.BAS] SET NEAR BSF DIRBYTE,4,0 F1_000928 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL183 F1_000929 EQU $ ; IN [VIBI_MOTORS.BAS] IF TRAJ < 48 THEN MOVF TRAJH,F,0 BNZ BC@LL185 MOVLW 48 SUBWF TRAJ,W,0 BC BC@LL185 F1_000930 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = 0 CLRF PF_SENSOR,0 CLRF PF_SENSORH,0 F1_000939 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL185 F1_000940 EQU $ ; IN [VIBI_MOTORS.BAS] UNTIL PF_SENSOR > PROXVAL MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BC BC@LL177 BC@LL178 F1_000941 EQU $ ; IN [VIBI_MOTORS.BAS] SET NEAR BSF DIRBYTE,4,0 F1_000942 EQU $ ; IN [VIBI_MOTORS.BAS] SET NEARRIGHT BSF DIRBYTE,2,0 F1_000943 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR NEARLEFT BCF DIRBYTE,3,0 F1_000946 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR PROXTRAJ CLRF PROXTRAJ,0 F1_000947 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR TMP CLRF TMP,0 CLRF TMPH,0 F1_000948 EQU $ ; IN [VIBI_MOTORS.BAS] REPEAT BC@LL186 F1_000949 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_000950 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 3 MOVLW 3 CALL DL@MS F1_000951 EQU $ ; IN [VIBI_MOTORS.BAS] INC TMP INFSNZ TMP,F,0 INCF TMPH,F,0 F1_000952 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = ADIN 0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH F1_000953 EQU $ ; IN [VIBI_MOTORS.BAS] IF TMP < 24 THEN MOVF TMPH,F,0 BNZ BC@LL189 MOVLW 24 SUBWF TMP,W,0 BC BC@LL189 F1_000954 EQU $ ; IN [VIBI_MOTORS.BAS] IF PF_SENSOR >= PROXVAL THEN MOVF PROXVAL,W,0 SUBWF PF_SENSOR,W,0 MOVF PROXVALH,W,0 SUBWFB PF_SENSORH,W,0 BNC BC@LL191 F1_000955 EQU $ ; IN [VIBI_MOTORS.BAS] SET NEAR BSF DIRBYTE,4,0 F1_000956 EQU $ ; IN [VIBI_MOTORS.BAS] INC PROXTRAJ INCF PROXTRAJ,F,0 BRA BC@LL192 BC@LL191 F1_000957 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_000958 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR NEAR BCF DIRBYTE,4,0 F1_000959 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL192 F1_000960 EQU $ ; IN [VIBI_MOTORS.BAS] PF_SENSOR = 0 CLRF PF_SENSOR,0 CLRF PF_SENSORH,0 F1_000961 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL189 F1_000962 EQU $ ; IN [VIBI_MOTORS.BAS] UNTIL PF_SENSOR > PROXVAL MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BC BC@LL186 BC@LL187 F1_000963 EQU $ ; IN [VIBI_MOTORS.BAS] SET NEAR BSF DIRBYTE,4,0 F1_000964 EQU $ ; IN [VIBI_MOTORS.BAS] SET NEARRIGHT BSF DIRBYTE,2,0 F1_000965 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR NEARLEFT BCF DIRBYTE,3,0 F1_000969 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_000970 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTA.3 BCF TRISA,3,0 BSF LATA,3,0 F1_000971 EQU $ ; IN [VIBI_MOTORS.BAS] DELAYMS 10 MOVLW 10 CALL DL@MS F1_000973 EQU $ ; IN [VIBI_MOTORS.BAS] HALFPROXTRAJ = PROXTRAJ >> 1 BCF STATUS,0,0 RRCF PROXTRAJ,W,0 MOVWF HALFPROXTRAJ,0 F1_000974 EQU $ ; IN [VIBI_MOTORS.BAS] OPEN180POS = TRAJ >> 1 BCF STATUS,0,0 RRCF TRAJH,W,0 MOVWF OPEN180POSH,0 RRCF TRAJ,W,0 MOVWF OPEN180POS,0 F1_000975 EQU $ ; IN [VIBI_MOTORS.BAS] CLOSE90POS = TRAJ >> 2 BCF STATUS,0,0 RRCF TRAJH,W,0 MOVWF CLOSE90POSH,0 RRCF TRAJ,W,0 MOVWF CLOSE90POS,0 BCF STATUS,0,0 RRCF CLOSE90POSH,F,0 RRCF CLOSE90POS,F,0 F1_000976 EQU $ ; IN [VIBI_MOTORS.BAS] CLOSE270POS = OPEN180POS + CLOSE90POS MOVF CLOSE90POS,W,0 ADDWF OPEN180POS,W,0 MOVWF CLOSE270POS,0 MOVF CLOSE90POSH,W,0 ADDWFC OPEN180POSH,W,0 MOVWF CLOSE270POSH,0 F1_000978 EQU $ ; IN [VIBI_MOTORS.BAS] MOTPOS = HALFPROXTRAJ MOVFF HALFPROXTRAJ,MOTPOS CLRF MOTPOSH,0 F1_000982 EQU $ ; IN [VIBI_MOTORS.BAS] SOLLPOS = MOTPOS MOVFF MOTPOS,SOLLPOS MOVFF MOTPOSH,SOLLPOSH F1_000983 EQU $ ; IN [VIBI_MOTORS.BAS] OLDSOLLPOS = MOTPOS MOVFF MOTPOS,OLDSOLLPOS MOVFF MOTPOSH,OLDSOLLPOSH F1_000984 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR TMP CLRF TMP,0 CLRF TMPH,0 F1_000985 EQU $ ; IN [VIBI_MOTORS.BAS] SET CALIBFLAG SETF CALIBFLAG,0 F1_000987 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 TASK0 F1_000995 EQU $ ; IN [VIBI_MOTORS.BAS] RECALCMOTPOS_0 VARIABLE MAX_PARAMS=10,RECALCMOTPOS_0_RETURN=0,PRM_COUNT=0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH BTFSC DIRBYTE,4 BRA BC@LL10 MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BC BC@LL12 BSF DIRBYTE,4,0 MOVFF HALFPROXTRAJ,MOTPOS CLRF MOTPOSH,0 BCF TRISA,3,0 BSF LATA,3,0 BC@LL12 BC@LL10 MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BNC BC@LL14 BCF DIRBYTE,4,0 BCF TRISA,3,0 BCF LATA,3,0 BC@LL14 F1_000997 EQU $ ; IN [VIBI_MOTORS.BAS] IF MOTPOS <= SOLLPOS THEN MOVF MOTPOS,W,0 SUBWF SOLLPOS,W,0 MOVF MOTPOSH,W,0 SUBWFB SOLLPOSH,W,0 BNC BC@LL194 F1_000998 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.0 BCF VELFLAGS,0,0 F1_000999 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_001000 EQU $ ; IN [VIBI_MOTORS.BAS] OLDSOLLPOS = SOLLPOS MOVFF SOLLPOS,OLDSOLLPOS MOVFF SOLLPOSH,OLDSOLLPOSH F1_001001 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 F1_001002 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL194 F1_001004 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_001005 EQU $ ; IN [VIBI_MOTORS.BAS] DEC MOTPOS DECF MOTPOS,F,0 MOVLW 0 SUBWFB MOTPOSH,F,0 F1_001006 EQU $ ; IN [VIBI_MOTORS.BAS] IF ACC > 0 THEN DEC ACC MOVF ACC,F,0 BTFSS STATUS,2 DECF ACC,F,0 BC@LL196 F1_001008 EQU $ ; IN [VIBI_MOTORS.BAS] REMWEG = MOTPOS - SOLLPOS MOVF SOLLPOS,W,0 SUBWF MOTPOS,W,0 MOVWF REMWEG,0 MOVF SOLLPOSH,W,0 SUBWFB MOTPOSH,W,0 MOVWF REMWEGH,0 F1_001009 EQU $ ; IN [VIBI_MOTORS.BAS] IF REMWEG < CC32 THEN MOVF REMWEGH,F,0 BNZ BC@LL198 MOVF CC32,W,0 SUBWF REMWEG,W,0 BC BC@LL198 F1_001010 EQU $ ; IN [VIBI_MOTORS.BAS] SLOWDOWN = CC32 - REMWEG.BYTE0 MOVF REMWEG,W,0 SUBWF CC32,W,0 MOVWF SLOWDOWN,0 BRA BC@LL199 BC@LL198 F1_001011 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001012 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR SLOWDOWN CLRF SLOWDOWN,0 F1_001013 EQU $ ; IN [VIBI_MOTORS.BAS] END IF BC@LL199 F1_001014 EQU $ ; IN [VIBI_MOTORS.BAS] XTRATIM = ACC MAX SLOWDOWN MOVFF ACC,PP0 MOVF SLOWDOWN,W,0 CALL MAX@B MOVWF XTRATIM,0 F1_001016 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_001017 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + MOTORPERIOD + XTRATIM MOVF MOTORPERIOD,W,0 ADDWF CNT,W,0 MOVWF PP7,0 MOVF MOTORPERIODH,W,0 ADDWFC CNTH,W,0 MOVWF PP7H,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF PP7HH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF PP7HHH,0 MOVF XTRATIM,W,0 ADDWF PP7,W,0 MOVWF VELTIM,0 MOVLW 0 ADDWFC PP7H,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC PP7HH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC PP7HHH,W,0 MOVWF VELTIMHHH,0 F1_001018 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[0] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#0 MOVFF VELTIMHHH,VELMSB#0H F1_001019 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[0] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#0 MOVFF VELTIMH,VELLSB#0H F1_001020 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 TASK1 F1_001024 EQU $ ; IN [VIBI_MOTORS.BAS] RECALCMOTPOS_1 VARIABLE MAX_PARAMS=10,RECALCMOTPOS_1_RETURN=0,PRM_COUNT=0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH BTFSC DIRBYTE,4 BRA BC@LL16 MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BC BC@LL18 BSF DIRBYTE,4,0 MOVF HALFPROXTRAJ,W,0 SUBWF TRAJ,W,0 MOVWF MOTPOS,0 MOVLW 0 SUBWFB TRAJH,W,0 MOVWF MOTPOSH,0 BCF TRISA,3,0 BSF LATA,3,0 BC@LL18 BC@LL16 MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BNC BC@LL20 BCF DIRBYTE,4,0 BCF TRISA,3,0 BCF LATA,3,0 BC@LL20 F1_001025 EQU $ ; IN [VIBI_MOTORS.BAS] IF MOTPOS >= SOLLPOS THEN MOVF SOLLPOS,W,0 SUBWF MOTPOS,W,0 MOVF SOLLPOSH,W,0 SUBWFB MOTPOSH,W,0 BNC BC@LL201 F1_001026 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.1 BCF VELFLAGS,1,0 F1_001027 EQU $ ; IN [VIBI_MOTORS.BAS] HIGH PORTC.3 BCF TRISC,3,0 BSF LATC,3,0 F1_001028 EQU $ ; IN [VIBI_MOTORS.BAS] OLDSOLLPOS = SOLLPOS MOVFF SOLLPOS,OLDSOLLPOS MOVFF SOLLPOSH,OLDSOLLPOSH F1_001029 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 F1_001030 EQU $ ; IN [VIBI_MOTORS.BAS] END IF BC@LL201 F1_001032 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_001034 EQU $ ; IN [VIBI_MOTORS.BAS] INC MOTPOS INFSNZ MOTPOS,F,0 INCF MOTPOSH,F,0 F1_001035 EQU $ ; IN [VIBI_MOTORS.BAS] IF ACC > 0 THEN DEC ACC MOVF ACC,F,0 BTFSS STATUS,2 DECF ACC,F,0 BC@LL203 F1_001037 EQU $ ; IN [VIBI_MOTORS.BAS] REMWEG = SOLLPOS - MOTPOS MOVF MOTPOS,W,0 SUBWF SOLLPOS,W,0 MOVWF REMWEG,0 MOVF MOTPOSH,W,0 SUBWFB SOLLPOSH,W,0 MOVWF REMWEGH,0 F1_001038 EQU $ ; IN [VIBI_MOTORS.BAS] IF REMWEG < CC32 THEN MOVF REMWEGH,F,0 BNZ BC@LL205 MOVF CC32,W,0 SUBWF REMWEG,W,0 BC BC@LL205 F1_001039 EQU $ ; IN [VIBI_MOTORS.BAS] SLOWDOWN = CC32 - REMWEG.BYTE0 MOVF REMWEG,W,0 SUBWF CC32,W,0 MOVWF SLOWDOWN,0 BRA BC@LL206 BC@LL205 F1_001040 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001041 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR SLOWDOWN CLRF SLOWDOWN,0 F1_001042 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL206 F1_001043 EQU $ ; IN [VIBI_MOTORS.BAS] XTRATIM = ACC MAX SLOWDOWN MOVFF ACC,PP0 MOVF SLOWDOWN,W,0 CALL MAX@B MOVWF XTRATIM,0 F1_001045 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_001046 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + MOTORPERIOD + XTRATIM MOVF MOTORPERIOD,W,0 ADDWF CNT,W,0 MOVWF PP7,0 MOVF MOTORPERIODH,W,0 ADDWFC CNTH,W,0 MOVWF PP7H,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF PP7HH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF PP7HHH,0 MOVF XTRATIM,W,0 ADDWF PP7,W,0 MOVWF VELTIM,0 MOVLW 0 ADDWFC PP7H,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC PP7HH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC PP7HHH,W,0 MOVWF VELTIMHHH,0 F1_001047 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[1] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#1 MOVFF VELTIMHHH,VELMSB#1H F1_001048 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[1] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#1 MOVFF VELTIMH,VELLSB#1H F1_001049 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 TASK2 F1_001053 EQU $ ; IN [VIBI_MOTORS.BAS] IF LITES.0 = 0 THEN BTFSC LITES,0 BRA BC@LL208 F1_001054 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.2 BCF VELFLAGS,2,0 F1_001055 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM BRA BC@LL209 BC@LL208 F1_001056 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001058 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.2 BSF VELFLAGS,2,0 F1_001059 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_001060 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + TASK_RSI[2] MOVFF TASK_RSI#2,PBP#VAR0 MOVFF TASK_RSI#2H,PBP#VAR0H MOVF PBP#VAR0,W,0 ADDWF CNT,W,0 MOVWF VELTIM,0 MOVF PBP#VAR0H,W,0 ADDWFC CNTH,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF VELTIMHHH,0 F1_001061 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[2] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#2 MOVFF VELTIMHHH,VELMSB#2H F1_001062 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[2] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#2 MOVFF VELTIMH,VELLSB#2H F1_001063 EQU $ ; IN [VIBI_MOTORS.BAS] LITES.2 = ~LITES.2 BTG LITES,2,0 F1_001064 EQU $ ; IN [VIBI_MOTORS.BAS] IF LITES.2 = 0 THEN BTFSC LITES,2 BRA BC@LL211 F1_001065 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM BRA BC@LL212 BC@LL211 F1_001066 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001067 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 1, LITE0PWM, 2442 MOVFF LITE0PWM,GEN MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 1 CALL H@PWM F1_001068 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL212 F1_001069 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL209 F1_001070 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 TASK3 F1_001074 EQU $ ; IN [VIBI_MOTORS.BAS] IF LITES.1 = 0 THEN BTFSC LITES,1 BRA BC@LL214 F1_001075 EQU $ ; IN [VIBI_MOTORS.BAS] CLEAR VELFLAGS0.3 BCF VELFLAGS,3,0 F1_001076 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM BRA BC@LL215 BC@LL214 F1_001077 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001079 EQU $ ; IN [VIBI_MOTORS.BAS] SET VELFLAGS0.3 BSF VELFLAGS,3,0 F1_001080 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_001081 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + TASK_RSI[3] MOVFF TASK_RSI#3,PBP#VAR0 MOVFF TASK_RSI#3H,PBP#VAR0H MOVF PBP#VAR0,W,0 ADDWF CNT,W,0 MOVWF VELTIM,0 MOVF PBP#VAR0H,W,0 ADDWFC CNTH,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF VELTIMHHH,0 F1_001082 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[3] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#3 MOVFF VELTIMHHH,VELMSB#3H F1_001083 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[3] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#3 MOVFF VELTIMH,VELLSB#3H F1_001084 EQU $ ; IN [VIBI_MOTORS.BAS] LITES.3 = ~LITES.3 BTG LITES,3,0 F1_001085 EQU $ ; IN [VIBI_MOTORS.BAS] IF LITES.3 = 0 THEN BTFSC LITES,3 BRA BC@LL217 F1_001086 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, 0, 2442 CLRF GEN,0 MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM BRA BC@LL218 BC@LL217 F1_001087 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001088 EQU $ ; IN [VIBI_MOTORS.BAS] HPWM 2, LITE1PWM, 2442 MOVFF LITE1PWM,GEN MOVLW 138 MOVWF PP1,0 MOVLW 9 MOVWF PP1H,0 MOVLW 2 CALL H@PWM F1_001089 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL218 F1_001090 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL215 F1_001091 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 TASK4 F1_001095 EQU $ ; IN [VIBI_MOTORS.BAS] RECALCMOTPOS_4 VARIABLE MAX_PARAMS=10,RECALCMOTPOS_4_RETURN=0,PRM_COUNT=0 MOVLW 0 CALL RD@AD MOVWF PF_SENSOR,0 MOVFF PP7H,PF_SENSORH BTFSC DIRBYTE,4 BRA BC@LL22 MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BC BC@LL24 BSF DIRBYTE,4,0 BTFSS DIRBYTE,0 BRA BC@LL26 MOVFF HALFPROXTRAJ,MOTPOS CLRF MOTPOSH,0 BRA BC@LL27 BC@LL26 MOVF HALFPROXTRAJ,W,0 SUBWF TRAJ,W,0 MOVWF MOTPOS,0 MOVLW 0 SUBWFB TRAJH,W,0 MOVWF MOTPOSH,0 BC@LL27 BCF TRISA,3,0 BSF LATA,3,0 BC@LL24 BC@LL22 MOVF PF_SENSOR,W,0 SUBWF PROXVAL,W,0 MOVF PF_SENSORH,W,0 SUBWFB PROXVALH,W,0 BNC BC@LL29 BCF DIRBYTE,4,0 BCF TRISA,3,0 BCF LATA,3,0 BC@LL29 F1_001096 EQU $ ; IN [VIBI_MOTORS.BAS] PULSEOUT PORTA.4 , 10, HIGH MOVLW 10 MOVWF PP0,0 CLRF PP0H,0 BCF TRISA,4,0 BCF PORTA,4,0 MOVLW 128 MOVWF GEN,0 MOVLW 16 MOVWF GENH,0 CALL P@OUT F1_001097 EQU $ ; IN [VIBI_MOTORS.BAS] IF LEFT = 1 THEN BTFSS DIRBYTE,0 BRA BC@LL220 F1_001098 EQU $ ; IN [VIBI_MOTORS.BAS] IF MOTPOS > 0 THEN DEC MOTPOS MOVF MOTPOS,F,0 BNZ CP@LB23 MOVF MOTPOSH,F,0 BZ BC@LL222 CP@LB23 DECF MOTPOS,F,0 MOVLW 0 SUBWFB MOTPOSH,F,0 BC@LL222 BRA BC@LL223 BC@LL220 F1_001103 EQU $ ; IN [VIBI_MOTORS.BAS] ELSE F1_001104 EQU $ ; IN [VIBI_MOTORS.BAS] IF MOTPOS < TRAJ THEN INC MOTPOS MOVF TRAJ,W,0 SUBWF MOTPOS,W,0 MOVF TRAJH,W,0 SUBWFB MOTPOSH,W,0 BC BC@LL225 INFSNZ MOTPOS,F,0 INCF MOTPOSH,F,0 BC@LL225 F1_001109 EQU $ ; IN [VIBI_MOTORS.BAS] ENDIF BC@LL223 F1_001110 EQU $ ; IN [VIBI_MOTORS.BAS] IF ACC > 0 THEN DEC ACC MOVF ACC,F,0 BTFSS STATUS,2 DECF ACC,F,0 BC@LL227 F1_001112 EQU $ ; IN [VIBI_MOTORS.BAS] CNT.LOWWORD = _WTIMER0M MOVFF TMR0L,CNT MOVFF TMR0LH,CNTH F1_001113 EQU $ ; IN [VIBI_MOTORS.BAS] VELTIM = CNT + MOTORPERIOD + ACC MOVF MOTORPERIOD,W,0 ADDWF CNT,W,0 MOVWF PP7,0 MOVF MOTORPERIODH,W,0 ADDWFC CNTH,W,0 MOVWF PP7H,0 MOVLW 0 ADDWFC CNTHH,W,0 MOVWF PP7HH,0 MOVLW 0 ADDWFC CNTHHH,W,0 MOVWF PP7HHH,0 MOVF ACC,W,0 ADDWF PP7,W,0 MOVWF VELTIM,0 MOVLW 0 ADDWFC PP7H,W,0 MOVWF VELTIMH,0 MOVLW 0 ADDWFC PP7HH,W,0 MOVWF VELTIMHH,0 MOVLW 0 ADDWFC PP7HHH,W,0 MOVWF VELTIMHHH,0 F1_001114 EQU $ ; IN [VIBI_MOTORS.BAS] VELMSB[4] = VELTIM.WORD1 MOVFF VELTIMHH,VELMSB#4 MOVFF VELTIMHHH,VELMSB#4H F1_001115 EQU $ ; IN [VIBI_MOTORS.BAS] VELLSB[4] = VELTIM.WORD0 MOVFF VELTIM,VELLSB#4 MOVFF VELTIMH,VELLSB#4H F1_001116 EQU $ ; IN [VIBI_MOTORS.BAS] RETURN RETURN 0 F1_EOF EQU $ ; VIBI_MOTORS.BAS PB@LB229 BRA PB@LB229 __EOF CONFIG DEBUG = OFF CONFIG XINST = OFF CONFIG STVREN = ON CONFIG FCMEN = OFF CONFIG OSC = HSPLL CONFIG IESO = OFF CONFIG WDT = OFF CONFIG WDTPS = 128 CONFIG BOREN = SBORDIS CONFIG BORV = 2 CONFIG MCLRE = ON CONFIG LPT1OSC = ON CONFIG PBADEN = OFF CONFIG CCP2MX = PORTC CONFIG LVP = OFF CONFIG CP0 = OFF CONFIG CP1 = OFF CONFIG CPB = OFF CONFIG CPD = OFF CONFIG WRT0 = OFF CONFIG WRT1 = OFF CONFIG WRTB = OFF CONFIG WRTC = OFF CONFIG WRTD = OFF CONFIG EBTR0 = OFF CONFIG EBTR1 = OFF CONFIG EBTRB = OFF END