;---------------------------------------------------------- ; Code Produced by the Proton Compiler. Ver 3.5.8.6 ; Written by Les Johnson. June 2016 ;---------------------------------------------------------- ; #define CONFIG_REQ 1 #define DEBUG@REQ 1 LIST P = 18F2525, 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 EEADRH equ 0X0FAA 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 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 DEBUG equ 0X0FD4 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 T0CKI=4 AN4=5 SS=5 NOT_SS=5 LVDIN=5 HLVDIN=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 LVDIE=2 BCLIE=3 EEIE=4 CMIE=6 OSCFIE=7 HLVDIE=2 CCP2IF=0 TMR3IF=1 LVDIF=2 BCLIF=3 EEIF=4 CMIF=6 OSCFIF=7 HLVDIF=2 CCP2IP=0 TMR3IP=1 LVDIP=2 BCLIP=3 EEIP=4 CMIP=6 OSCFIP=7 HLVDIP=2 RD=0 PP_RD=0 WR=1 PP_WR=1 WREN=2 PP_WREN=2 WRERR=3 PP_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 PP_SENDB=3 SYNC=4 TXEN=5 TX9=6 CSRC=7 TMR3ON=0 TMR3CS=1 T3SYNC=2 T3CCP1=3 PP_T3CCP1=3 T3CKPS0=4 T3CKPS1=5 T3CCP2=6 PP_T3CCP2=6 RD16=7 PP_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 ABDEN=0 WUE=1 BRG16=3 PP_BRG16=3 SCKP=4 RCIDL=6 ABDOVF=7 TXCKP=4 RXDTP=5 RCMT=6 CCP2M0=0 CCP2M1=1 CCP2M2=2 CCP2M3=3 CCP2Y=4 CCP2X=5 DC2B0=4 DC2B1=5 CCP1M0=0 CCP1M1=1 CCP1M2=2 CCP1M3=3 CCP1Y=4 CCP1X=5 DC1B0=4 DC1B1=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 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 TOUTPS0=3 TOUTPS1=4 TOUTPS2=5 TOUTPS3=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 T016BIT=6 TMR0ON=7 T08BIT=6 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 STKPTR0=0 STKPTR1=1 STKPTR2=2 STKPTR3=3 STKPTR4=4 STKUNF=6 STKOVF=7 SP0=0 SP1=1 SP2=2 SP3=3 SP4=4 STKFUL=7 __MAXRAM 0X0FFF __BADRAM 0X0F83 __BADRAM 0X0F85-0X0F88 __BADRAM 0X0F8C-0X0F91 __BADRAM 0X0F95-0X0F9A __BADRAM 0X0F9C __BADRAM 0X0FA3-0X0FA5 __BADRAM 0X0FB6-0X0FB7 __BADRAM 0X0FB9 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 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 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 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 __18F2525 1 #define XTAL 40 #define _CORE 16 #define _MAXRAM 3955 #define _RAM_END 3967 #define _MAXMEM 0XC000 #define _ADC 10 #define _ADC_RES 10 #define _EEPROM 1024 #define RAM_BANKS 15 #define _USART 1 #define _USB 0 #define _USB#RAM_START 0 #define _FLASH 1 #define _CWRITE_BLOCK 64 #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 BANK6_START 1536 #define BANK6_END 1791 #define BANK7_START 1792 #define BANK7_END 2047 #define BANK8_START 2048 #define BANK8_END 2303 #define BANK9_START 2304 #define BANK9_END 2559 #define BANK10_START 2560 #define BANK10_END 2815 #define BANK11_START 2816 #define BANK11_END 3071 #define BANK12_START 3072 #define BANK12_END 3327 #define BANK13_START 3328 #define BANK13_END 3583 #define BANK14_START 3584 #define BANK14_END 3839 #define BANKA_START 0 #define BANKA_END 127 #define _SYSTEM_VARIABLE_COUNT 77 #define LCD#TYPE 0 #define __INTERRUPTS_ENABLED 1 #define __HIGH_INTERRUPTS_ENABLED 1 #define __LOW_INTERRUPTS_ENABLED 1 #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 GEN = 0 PBP#VAR0 = 1 PBP#VAR0H = 2 PBP#VAR0HH = 3 PBP#VAR0HHH = 4 PBP#VAR1 = 5 PBP#VAR1H = 6 PBP#VAR1HH = 7 PBP#VAR1HHH = 8 PP0 = 9 PP0H = 10 PP1 = 11 PP1H = 12 PP2 = 13 PP2H = 14 PP3 = 15 PP3H = 16 PP4 = 17 PP4H = 18 PP5 = 19 PP6H = 20 PP7 = 21 PP7H = 22 PP8 = 23 PP8H = 24 Cnt = 25 CntH = 26 CntHH = 27 CntHHH = 28 Bytein = 29 _I = 30 statusbyte = 31 noteUit = 32 release = 33 noteAan = 34 velo = 35 notePres = 36 pres = 37 Ctrl = 38 value = 39 prog = 40 aft = 41 pblsb = 42 pbmsb = 43 newtim = 44 newtimH = 45 newtimHH = 46 newtimHHH = 47 CC21 = 48 CC22 = 49 CC23 = 50 CC66 = 51 st = 52 b1 = 53 b2 = 54 SensorVal = 55 SensorValH = 56 nowval = 57 nowvalH = 58 oldpos = 59 nowpos = 60 Sollpos = 61 tBit = 62 MinSpeed = 63 MaxSpeed = 64 Traj = 65 Speed = 66 SpeedH = 67 torque = 68 pitch = 69 CC67 = 70 Direction = 71 olddir = 72 USART_FSR1_Save = 73 USART_FSR1_SaveH = 74 IndexIn = 75 IndexOut = 76 flags = 77 Ringbuffer = 78 variable Ringbuffer#0=78,Ringbuffer#1=79,Ringbuffer#2=80,Ringbuffer#3=81 variable Ringbuffer#4=82,Ringbuffer#5=83,Ringbuffer#6=84,Ringbuffer#7=85 variable Ringbuffer#8=86,Ringbuffer#9=87,Ringbuffer#10=88,Ringbuffer#11=89 variable Ringbuffer#12=90,Ringbuffer#13=91,Ringbuffer#14=92,Ringbuffer#15=93 variable Ringbuffer#16=94,Ringbuffer#17=95,Ringbuffer#18=96,Ringbuffer#19=97 variable Ringbuffer#20=98,Ringbuffer#21=99,Ringbuffer#22=100,Ringbuffer#23=101 variable Ringbuffer#24=102,Ringbuffer#25=103,Ringbuffer#26=104,Ringbuffer#27=105 variable Ringbuffer#28=106,Ringbuffer#29=107,Ringbuffer#30=108,Ringbuffer#31=109 variable Ringbuffer#32=110,Ringbuffer#33=111,Ringbuffer#34=112,Ringbuffer#35=113 variable Ringbuffer#36=114,Ringbuffer#37=115,Ringbuffer#38=116,Ringbuffer#39=117 variable Ringbuffer#40=118,Ringbuffer#41=119,Ringbuffer#42=120,Ringbuffer#43=121 variable Ringbuffer#44=122,Ringbuffer#45=123,Ringbuffer#46=124,Ringbuffer#47=125 variable Ringbuffer#48=126,Ringbuffer#49=127,Ringbuffer#50=128,Ringbuffer#51=129 variable Ringbuffer#52=130,Ringbuffer#53=131,Ringbuffer#54=132,Ringbuffer#55=133 variable Ringbuffer#56=134,Ringbuffer#57=135,Ringbuffer#58=136,Ringbuffer#59=137 variable Ringbuffer#60=138,Ringbuffer#61=139,Ringbuffer#62=140,Ringbuffer#63=141 variable Ringbuffer#64=142,Ringbuffer#65=143,Ringbuffer#66=144,Ringbuffer#67=145 variable Ringbuffer#68=146,Ringbuffer#69=147,Ringbuffer#70=148,Ringbuffer#71=149 variable Ringbuffer#72=150,Ringbuffer#73=151,Ringbuffer#74=152,Ringbuffer#75=153 variable Ringbuffer#76=154,Ringbuffer#77=155,Ringbuffer#78=156,Ringbuffer#79=157 variable Ringbuffer#80=158,Ringbuffer#81=159,Ringbuffer#82=160,Ringbuffer#83=161 variable Ringbuffer#84=162,Ringbuffer#85=163,Ringbuffer#86=164,Ringbuffer#87=165 variable Ringbuffer#88=166,Ringbuffer#89=167,Ringbuffer#90=168,Ringbuffer#91=169 variable Ringbuffer#92=170,Ringbuffer#93=171,Ringbuffer#94=172,Ringbuffer#95=173 variable Ringbuffer#96=174,Ringbuffer#97=175,Ringbuffer#98=176,Ringbuffer#99=177 variable Ringbuffer#100=178,Ringbuffer#101=179,Ringbuffer#102=180,Ringbuffer#103=181 variable Ringbuffer#104=182,Ringbuffer#105=183,Ringbuffer#106=184,Ringbuffer#107=185 variable Ringbuffer#108=186,Ringbuffer#109=187,Ringbuffer#110=188,Ringbuffer#111=189 variable Ringbuffer#112=190,Ringbuffer#113=191,Ringbuffer#114=192,Ringbuffer#115=193 variable Ringbuffer#116=194,Ringbuffer#117=195,Ringbuffer#118=196,Ringbuffer#119=197 variable Ringbuffer#120=198,Ringbuffer#121=199,Ringbuffer#122=200,Ringbuffer#123=201 variable Ringbuffer#124=202,Ringbuffer#125=203,Ringbuffer#126=204,Ringbuffer#127=205 variable Ringbuffer#128=206,Ringbuffer#129=207,Ringbuffer#130=208,Ringbuffer#131=209 variable Ringbuffer#132=210,Ringbuffer#133=211,Ringbuffer#134=212,Ringbuffer#135=213 variable Ringbuffer#136=214,Ringbuffer#137=215,Ringbuffer#138=216,Ringbuffer#139=217 variable Ringbuffer#140=218,Ringbuffer#141=219,Ringbuffer#142=220,Ringbuffer#143=221 variable Ringbuffer#144=222,Ringbuffer#145=223,Ringbuffer#146=224,Ringbuffer#147=225 variable Ringbuffer#148=226,Ringbuffer#149=227,Ringbuffer#150=228,Ringbuffer#151=229 variable Ringbuffer#152=230,Ringbuffer#153=231,Ringbuffer#154=232,Ringbuffer#155=233 variable Ringbuffer#156=234,Ringbuffer#157=235,Ringbuffer#158=236,Ringbuffer#159=237 variable Ringbuffer#160=238,Ringbuffer#161=239,Ringbuffer#162=240,Ringbuffer#163=241 variable Ringbuffer#164=242,Ringbuffer#165=243,Ringbuffer#166=244,Ringbuffer#167=245 variable Ringbuffer#168=246,Ringbuffer#169=247,Ringbuffer#170=248,Ringbuffer#171=249 variable Ringbuffer#172=250,Ringbuffer#173=251,Ringbuffer#174=252,Ringbuffer#175=253 variable Ringbuffer#176=254,Ringbuffer#177=255,Ringbuffer#178=256,Ringbuffer#179=257 variable Ringbuffer#180=258,Ringbuffer#181=259,Ringbuffer#182=260,Ringbuffer#183=261 variable Ringbuffer#184=262,Ringbuffer#185=263,Ringbuffer#186=264,Ringbuffer#187=265 variable Ringbuffer#188=266,Ringbuffer#189=267,Ringbuffer#190=268,Ringbuffer#191=269 variable Ringbuffer#192=270,Ringbuffer#193=271,Ringbuffer#194=272,Ringbuffer#195=273 variable Ringbuffer#196=274,Ringbuffer#197=275,Ringbuffer#198=276,Ringbuffer#199=277 variable Ringbuffer#200=278,Ringbuffer#201=279,Ringbuffer#202=280,Ringbuffer#203=281 variable Ringbuffer#204=282,Ringbuffer#205=283,Ringbuffer#206=284,Ringbuffer#207=285 variable Ringbuffer#208=286,Ringbuffer#209=287,Ringbuffer#210=288,Ringbuffer#211=289 variable Ringbuffer#212=290,Ringbuffer#213=291,Ringbuffer#214=292,Ringbuffer#215=293 variable Ringbuffer#216=294,Ringbuffer#217=295,Ringbuffer#218=296,Ringbuffer#219=297 variable Ringbuffer#220=298,Ringbuffer#221=299,Ringbuffer#222=300,Ringbuffer#223=301 variable Ringbuffer#224=302,Ringbuffer#225=303,Ringbuffer#226=304,Ringbuffer#227=305 variable Ringbuffer#228=306,Ringbuffer#229=307,Ringbuffer#230=308,Ringbuffer#231=309 variable Ringbuffer#232=310,Ringbuffer#233=311,Ringbuffer#234=312,Ringbuffer#235=313 variable Ringbuffer#236=314,Ringbuffer#237=315,Ringbuffer#238=316,Ringbuffer#239=317 variable Ringbuffer#240=318,Ringbuffer#241=319,Ringbuffer#242=320,Ringbuffer#243=321 variable Ringbuffer#244=322,Ringbuffer#245=323,Ringbuffer#246=324,Ringbuffer#247=325 variable Ringbuffer#248=326,Ringbuffer#249=327,Ringbuffer#250=328,Ringbuffer#251=329 variable Ringbuffer#252=330,Ringbuffer#253=331,Ringbuffer#254=332,Ringbuffer#255=333 _Low__Context_Store = 334 variable _Low__Context_Store#0=334,_Low__Context_Store#1=335,_Low__Context_Store#2=336,_Low__Context_Store#3=337 variable _Low__Context_Store#4=338,_Low__Context_Store#5=339,_Low__Context_Store#6=340,_Low__Context_Store#7=341 variable _Low__Context_Store#8=342,_Low__Context_Store#9=343,_Low__Context_Store#10=344,_Low__Context_Store#11=345 variable _Low__Context_Store#12=346,_Low__Context_Store#13=347 #define CntHw CntHH #define CntHwH CntHHH #define CntLw TMR0L #define CntLwH TMR0LH #define Tim3 TMR3L #define Tim3H TMR3LH #define StBit Bytein,7 #define PowerOn CC66,0 #define automove CC67,0 #define silent flags,0 #define stalling flags,1 #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 __OPTIMISER_LEVEL 3 #define __XTAL 40 #define PWMminF 2442 #define PWMminFH 9 #define __ADIN_RES 10 #define __ADIN_DELAY 50 #define Midichannel 15 #define NoteOff_Status 143 #define NoteOn_Status 159 #define Keypres_Status 175 #define Control_Status 191 #define ProgChange_Status 207 #define Aftertouch_Status 223 #define Pitchbend_Status 239 #define PWMFreq 19536 #define PWMFreqH 76 #define SensorMin 366 #define SensorMinH 1 #define SensorMax 592 #define SensorMaxH 2 #define MinPos 0 #define MaxPos 226 #define EqPos 95 #define MaxTraj 226 #define VoorMaxTraj 131 #define AchterMaxTraj 95 #define CC21_default 10 #define CC22_default 0 #define CC23_default 110 #define Backwards 0 #define still 64 #define Forwards 127 #define __HSERIAL_TXSTA 36 proton#code#start org 0X000000 nop nop goto proton#main#start org 0X000008 bra High_Prior_Interrupt org 0X000018 bra Low_Prior_Interrupt HRSIN#REQ = 1 HRSINX#REQ = 1 HRSIN#CLROERR = 1 __HPWM_ movwf PP4H,0 movlw 150 movwf PP0,0 movlw 152 movwf PP0H,0 rcall __DIVIDE_U1616_ btfsc STATUS,2,0 bcf 4042,PP_T2CKPS0,0 btfss STATUS,2,0 bsf 4042,PP_T2CKPS0,0 addlw 252 btfss STATUS,0,0 bcf 4042,PP_T2CKPS1,0 btfsc STATUS,0,0 bsf 4042,PP_T2CKPS1,0 movlw 128 movwf PP0,0 movlw 150 movwf PP0H,0 movlw 152 movwf PP2,0 clrf PP2H,0 btfsc 4042,PP_T2CKPS0,0 rcall HPW@2S btfsc 4042,PP_T2CKPS1,0 rcall HPW@2S rcall __DIVIDE_INT_U1616_ decf PP0,W,0 movwf 4043,0 movff PP0,PP1 movff PP0H,PP1H movf GEN,W,0 movwf PP3,0 movwf PP3H,0 incfsz GEN,W,0 clrf PP3H,0 rcall __MULTIPLY_U1616_ movf PP2H,W,0 decfsz PP4H,F,0 bra HPW@SK1 movwf 4030,0 movlw 12 movwf 4029,0 btfsc PP2,7,0 bsf 4029,5,0 btfsc PP2,6,0 bsf 4029,4,0 bcf TRISB,2,0 HPWM@FIN bsf 4042,PP_TMR2ON,0 return HPW@SK1 movwf 4027,0 movlw 12 movwf 4026,0 btfsc PP2,7,0 bsf 4026,5,0 btfsc PP2,6,0 bsf 4026,4,0 bcf TRISC,1,0 bra HPWM@FIN HPW@2S rcall HPW@2L HPW@2L bcf STATUS,0,0 rrcf PP2,F,0 rrcf PP0H,F,0 rrcf PP0,F,0 return ADIN_STIME = 50 ADIN_TAD = 3 ADIN_RES = 10 __ADIN_ rlcf WREG,F,0 rlcf WREG,F,0 andlw 252 iorlw 1 iorwf ADCON0,F,0 iorlw 192 andwf ADCON0,F,0 movf ADCON2,W,0 andlw 248 iorlw 3 movwf ADCON2,0 movlw 50 rcall __DELAY_US_ bsf ADCON0,PP_GO_DONE,0 btfsc ADCON0,PP_GO_DONE,0 bra $ - 2 movff ADRESH,PP7H movf ADRESL,W,0 movwf PP7,0 return __DELAY_MS_ clrf PP1H,0 __DELAY_MS_W_ movwf PP1,0 DLY@P movlw 255 addwf PP1,F,0 addwfc PP1H,F,0 bra $ + 2 btfss STATUS,0,0 return movlw 3 movwf PP0H,0 movlw 230 rcall __DELAY_US_W_ bra DLY@P __DELAY_US_ clrf PP0H,0 __DELAY_US_W_ addlw 254 movwf PP0,0 clrf WREG,0 subwfb PP0H,F,0 btfss STATUS,0,0 return nop decf PP0,F,0 bra $ + 2 bra $ - 14 __DIVIDE_U1616_ clrf PP2H,0 clrf PP2,0 __DIVIDE_INT_U1616_ movlw 16 movwf PRODL,0 DV@LP rlcf PP0H,W,0 rlcf PP2,F,0 rlcf PP2H,F,0 movf PP1,W,0 subwf PP2,W,0 movf PP1H,W,0 subwfb PP2H,W,0 bnc D@K movf PP1,W,0 subwf PP2,F,0 movf PP1H,W,0 subwfb PP2H,F,0 bsf STATUS,0,0 D@K rlcf PP0,F,0 rlcf PP0H,F,0 decfsz PRODL,F,0 bra DV@LP movf PP0,W,0 return __MULTIPLY_U1616_ movf PP1,W,0 mulwf PP3,0 movff PRODL,PP2 movff PRODH,PP2H movf PP1H,W,0 mulwf PP3,0 movf PRODL,W,0 addwf PP2H,F,0 movf PP1,W,0 mulwf PP3H,0 movf PRODL,W,0 addwf PP2H,F,0 movf PP2,W,0 return proton#main#start ; UART1_ACTUALBAUD = 31250 ; UART1_BAUDERROR = 0 movlw 79 movwf SPBRG,0 movlw 36 movwf TXSTA,0 movlw 144 movwf RCSTA,0 movlb 0 F1_SOF equ $ ; FA_MOTOR.BAS F2_SOF equ $ ; 18F2525.INC F2_EOF equ $ ; 18F2525.INC F1_000075 equ $ ; IN [FA_MOTOR.BAS] CLEAR SSPCON1.5 bcf SSPCON1,5,0 F1_000076 equ $ ; IN [FA_MOTOR.BAS] TRISA = %01000011 movlw 67 movwf TRISA,0 F1_000077 equ $ ; IN [FA_MOTOR.BAS] TRISB = %11100000 movlw 224 movwf TRISB,0 F1_000078 equ $ ; IN [FA_MOTOR.BAS] TRISC = %11000000 movlw 192 movwf TRISC,0 F1_000083 equ $ ; IN [FA_MOTOR.BAS] ADCON2 = %10001010 movlw 138 movwf ADCON2,0 F1_000084 equ $ ; IN [FA_MOTOR.BAS] ADCON1 = %00001110 movlw 14 movwf ADCON1,0 F1_000085 equ $ ; IN [FA_MOTOR.BAS] ADCON0 = %00000001 movlw 1 movwf ADCON0,0 F3_SOF equ $ ; FA_MOT_IRQ.INC F3_000060 equ $ ; IN [FA_MOT_IRQ.INC] GOTO _OVER_IRQ_HANDLER bra _Over_IRQ_Handler High_Prior_Interrupt _Timer0_IRQ F3_000072 equ $ ; IN [FA_MOT_IRQ.INC] IF INTCON.2 = 1 THEN btfss INTCON,2,0 bra _LBL__3 F3_000073 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR INTCON.2 bcf INTCON,2,0 F3_000078 equ $ ; IN [FA_MOT_IRQ.INC] BTG PORTB,5 btg PORTB,5 F3_000079 equ $ ; IN [FA_MOT_IRQ.INC] RETFIE FAST retfie 1 F3_000080 equ $ ; IN [FA_MOT_IRQ.INC] ENDIF _LBL__3 _UART_IRQ F3_000082 equ $ ; IN [FA_MOT_IRQ.INC] IF PIR1.5 = 1 THEN btfss PIR1,5,0 bra _LBL__5 F3_000083 equ $ ; IN [FA_MOT_IRQ.INC] MOVLW 6 movlw 6 F3_000084 equ $ ; IN [FA_MOT_IRQ.INC] ANDWF RCSTA,W andwf RCSTA,W F3_000085 equ $ ; IN [FA_MOT_IRQ.INC] BNZ _UART_ERROR bnz _Uart_Error F3_000086 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR1_SAVE = USART_FSR1 movff FSR1LH,USART_FSR1_SaveH movff FSR1L,USART_FSR1_Save F3_000087 equ $ ; IN [FA_MOT_IRQ.INC] INC INDEXIN incf IndexIn,F,0 F3_000097 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR1 = VARPTR RINGBUFFER lfsr 1,78 F3_000098 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR1 = USART_FSR1 + INDEXIN movf IndexIn,W,0 addwf FSR1L,F,0 movlw 0 addwfc FSR1LH,F,0 F3_000099 equ $ ; IN [FA_MOT_IRQ.INC] INDF1 = RCREG movff RCREG,INDF1 F3_000100 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR1 = USART_FSR1_SAVE movff USART_FSR1_SaveH,FSR1LH movff USART_FSR1_Save,FSR1L F3_000102 equ $ ; IN [FA_MOT_IRQ.INC] RETFIE FAST retfie 1 _Uart_Error F3_000104 equ $ ; IN [FA_MOT_IRQ.INC] WREG = RCREG movf RCREG,W,0 F3_000105 equ $ ; IN [FA_MOT_IRQ.INC] WREG = RCREG movf RCREG,W,0 F3_000106 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR RCSTA.4 bcf RCSTA,4,0 F3_000107 equ $ ; IN [FA_MOT_IRQ.INC] SET RCSTA.4 bsf RCSTA,4,0 F3_000108 equ $ ; IN [FA_MOT_IRQ.INC] ENDIF _LBL__5 F3_000109 equ $ ; IN [FA_MOT_IRQ.INC] RETFIE FAST retfie 1 HRSIN: F3_000114 equ $ ; IN [FA_MOT_IRQ.INC] IF INDEXIN <> INDEXOUT THEN movf IndexIn,W,0 subwf IndexOut,W,0 bz _LBL__7 F3_000115 equ $ ; IN [FA_MOT_IRQ.INC] INC INDEXOUT incf IndexOut,F,0 F3_000116 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR0_SAVE = USART_FSR0 movff FSR0LH,FSR0SaveIntH movff FSR0L,FSR0SaveInt F3_000117 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR0 = VARPTR RINGBUFFER lfsr 0,78 F3_000118 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR0 = USART_FSR0 + INDEXOUT movf IndexOut,W,0 addwf FSR0L,F,0 movlw 0 addwfc FSR0LH,F,0 F3_000119 equ $ ; IN [FA_MOT_IRQ.INC] WREG = INDF0 movf INDF0,W,0 F3_000120 equ $ ; IN [FA_MOT_IRQ.INC] PP0 = WREG movwf PP0,0 F3_000121 equ $ ; IN [FA_MOT_IRQ.INC] USART_FSR0 = USART_FSR0_SAVE movff FSR0SaveIntH,FSR0LH movff FSR0SaveInt,FSR0L F3_000122 equ $ ; IN [FA_MOT_IRQ.INC] SET STATUS.0 bsf STATUS,0,0 F3_000123 equ $ ; IN [FA_MOT_IRQ.INC] RET return 0 bra _LBL__8 _LBL__7 F3_000124 equ $ ; IN [FA_MOT_IRQ.INC] ELSE F3_000125 equ $ ; IN [FA_MOT_IRQ.INC] WREG = 255 setf WREG,0 F3_000126 equ $ ; IN [FA_MOT_IRQ.INC] PP0 = WREG movwf PP0,0 F3_000127 equ $ ; IN [FA_MOT_IRQ.INC] BTFSS STATUS,C btfss STATUS,C F3_000128 equ $ ; IN [FA_MOT_IRQ.INC] RET return 0 F3_000129 equ $ ; IN [FA_MOT_IRQ.INC] ENDIF _LBL__8 F3_000130 equ $ ; IN [FA_MOT_IRQ.INC] RET return 0 _Init_Usart F3_000146 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR INDEXIN clrf IndexIn,0 F3_000147 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR INDEXOUT clrf IndexOut,0 F3_000148 equ $ ; IN [FA_MOT_IRQ.INC] SET PIE1.5 bsf PIE1,5,0 F3_000150 equ $ ; IN [FA_MOT_IRQ.INC] SET IPR1.5 bsf IPR1,5,0 F3_000152 equ $ ; IN [FA_MOT_IRQ.INC] SET INTCON.7 bsf INTCON,7,0 F3_000153 equ $ ; IN [FA_MOT_IRQ.INC] SET INTCON.6 bsf INTCON,6,0 F3_000155 equ $ ; IN [FA_MOT_IRQ.INC] RETURN return 0 _Clear_Usart_Buffer F3_000170 equ $ ; IN [FA_MOT_IRQ.INC] PIE1.5 = 0 bcf PIE1,5,0 F3_000171 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR RINGBUFFER lfsr 0,Ringbuffer movlw 1 movwf PRODLH,0 clrf PRODL,0 _PBLB__9 decf PRODL,F,0 movlw 0 subwfb PRODLH,F,0 clrf POSTINC0,0 movf PRODH,W,0 iorwf PRODL,W,0 bnz _PBLB__9 F3_000172 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR INDEXIN clrf IndexIn,0 F3_000173 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR INDEXOUT clrf IndexOut,0 F3_000174 equ $ ; IN [FA_MOT_IRQ.INC] SET PIE1.5 bsf PIE1,5,0 F3_000175 equ $ ; IN [FA_MOT_IRQ.INC] RETURN return 0 Low_Prior_Interrupt Timer3_ISR F3_000183 equ $ ; IN [FA_MOT_IRQ.INC] CONTEXT SAVE bcf INTCON,7,0 movff ADCON0,_Low__Context_Store#0 movff ADCON1,_Low__Context_Store#1 movff ADCON2,_Low__Context_Store#2 movff ADRESH,_Low__Context_Store#3 movff ADRESL,_Low__Context_Store#4 movff BSR,_Low__Context_Store#5 movff PP0,_Low__Context_Store#6 movff PP0H,_Low__Context_Store#7 movff PP3,_Low__Context_Store#8 movff PP4,_Low__Context_Store#9 movff PP7,_Low__Context_Store#10 movff PP7H,_Low__Context_Store#11 movff STATUS,_Low__Context_Store#12 movff WREG,_Low__Context_Store#13 bsf INTCON,7,0 movlb 0 F3_000184 equ $ ; IN [FA_MOT_IRQ.INC] CLEAR PIR2.1 bcf PIR2,1,0 F3_000185 equ $ ; IN [FA_MOT_IRQ.INC] TIM3 = 46036 movlw 179 movwf TMR3LH,0 movlw 212 movwf TMR3L,0 F3_000186 equ $ ; IN [FA_MOT_IRQ.INC] NOWVAL = ADIN 0 movlw 0 rcall __ADIN_ movwf nowval,0 movff PP7H,nowvalH F3_000189 equ $ ; IN [FA_MOT_IRQ.INC] SENSORVAL = SENSORVAL + NOWVAL movf nowval,W,0 addwf SensorVal,F,0 movf nowvalH,W,0 addwfc SensorValH,F,0 F3_000190 equ $ ; IN [FA_MOT_IRQ.INC] SENSORVAL = SENSORVAL >> 1 bcf STATUS,0,0 rrcf SensorValH,F,0 rrcf SensorVal,F,0 F3_000192 equ $ ; IN [FA_MOT_IRQ.INC] IF SENSORVAL < SENSORMIN THEN SENSORVAL = SENSORMIN movlw 1 subwf SensorValH,W,0 movlw 110 btfsc STATUS,2,0 subwf SensorVal,W,0 bc _LBL__11 movlw 1 movwf SensorValH,0 movlw 110 movwf SensorVal,0 _LBL__11 F3_000193 equ $ ; IN [FA_MOT_IRQ.INC] IF SENSORVAL > SENSORMAX THEN SENSORVAL = SENSORMAX movlw 2 subwf SensorValH,W,0 bnc _LBL__13 bnz _CPLB__2 movlw 81 subwf SensorVal,W,0 bnc _LBL__13 _CPLB__2 movlw 2 movwf SensorValH,0 movlw 80 movwf SensorVal,0 _LBL__13 movlb 0 F3_000194 equ $ ; IN [FA_MOT_IRQ.INC] NOWPOS = SENSORVAL - SENSORMIN movlw 110 subwf SensorVal,W,0 movwf nowpos,0 F3_000196 equ $ ; IN [FA_MOT_IRQ.INC] BTG PORTC.0 btg PORTC,0 F3_000197 equ $ ; IN [FA_MOT_IRQ.INC] CONTEXT RESTORE bcf INTCON,7,0 movff _Low__Context_Store#0,ADCON0 movff _Low__Context_Store#1,ADCON1 movff _Low__Context_Store#2,ADCON2 movff _Low__Context_Store#3,ADRESH movff _Low__Context_Store#4,ADRESL movff _Low__Context_Store#5,BSR movff _Low__Context_Store#6,PP0 movff _Low__Context_Store#7,PP0H movff _Low__Context_Store#8,PP3 movff _Low__Context_Store#9,PP4 movff _Low__Context_Store#10,PP7 movff _Low__Context_Store#11,PP7H movff _Low__Context_Store#12,STATUS movff _Low__Context_Store#13,WREG bsf INTCON,7,0 retfie HRSOUT F3_000209 equ $ ; IN [FA_MOT_IRQ.INC] BTFSS PIR1.4 btfss PIR1,4 F3_000210 equ $ ; IN [FA_MOT_IRQ.INC] BRA ($ - 2) bra ($ - 2) F3_000211 equ $ ; IN [FA_MOT_IRQ.INC] MOVWF TXREG movwf TXREG F3_000212 equ $ ; IN [FA_MOT_IRQ.INC] RETURN return 0 _Over_IRQ_Handler F3_EOF equ $ ; FA_MOT_IRQ.INC F1_000199 equ $ ; IN [FA_MOTOR.BAS] LOW PORTA.2 bcf TRISA,2,0 bcf LATA,2,0 F1_000200 equ $ ; IN [FA_MOTOR.BAS] HIGH PORTA.3 bcf TRISA,3,0 bsf LATA,3,0 F1_000201 equ $ ; IN [FA_MOTOR.BAS] LOW PORTB.5 bcf TRISB,5,0 bcf LATB,5,0 F1_000202 equ $ ; IN [FA_MOTOR.BAS] HPWM 2, 0, PWMFREQ clrf GEN,0 movlw 76 movwf PP1H,0 movlw 80 movwf PP1,0 movlw 2 rcall __HPWM_ F1_000203 equ $ ; IN [FA_MOTOR.BAS] LOW PORTC.2 bcf TRISC,2,0 bcf LATC,2,0 F1_000204 equ $ ; IN [FA_MOTOR.BAS] LOW PORTC.3 bcf TRISC,3,0 bcf LATC,3,0 F1_000205 equ $ ; IN [FA_MOTOR.BAS] LOW PORTB.2 bcf TRISB,2,0 bcf LATB,2,0 F1_000206 equ $ ; IN [FA_MOTOR.BAS] CLEAR CC66 clrf CC66,0 F1_000207 equ $ ; IN [FA_MOTOR.BAS] CLEAR CC67 clrf CC67,0 F1_000208 equ $ ; IN [FA_MOTOR.BAS] CLEAR PITCH clrf pitch,0 F1_000209 equ $ ; IN [FA_MOTOR.BAS] CLEAR TORQUE clrf torque,0 F1_000210 equ $ ; IN [FA_MOTOR.BAS] CC21 = CC21_DEFAULT movlw 10 movwf CC21,0 F1_000211 equ $ ; IN [FA_MOTOR.BAS] CC22 = CC22_DEFAULT clrf CC22,0 F1_000212 equ $ ; IN [FA_MOTOR.BAS] CC23 = CC23_DEFAULT movlw 110 movwf CC23,0 F1_000213 equ $ ; IN [FA_MOTOR.BAS] CLEAR SOLLPOS clrf Sollpos,0 F1_000214 equ $ ; IN [FA_MOTOR.BAS] MINSPEED = CC21 movff CC21,MinSpeed F1_000215 equ $ ; IN [FA_MOTOR.BAS] MAXSPEED = CC23 << 1 bcf STATUS,0,0 rlcf CC23,W,0 movwf MaxSpeed,0 MAIN F1_000222 equ $ ; IN [FA_MOTOR.BAS] HIGH PORTB.5 bcf TRISB,5,0 bsf LATB,5,0 F1_000223 equ $ ; IN [FA_MOTOR.BAS] DELAYMS 10 movlw 10 rcall __DELAY_MS_ F1_000224 equ $ ; IN [FA_MOTOR.BAS] LOW PORTB.5 bcf TRISB,5,0 bcf LATB,5,0 F1_000227 equ $ ; IN [FA_MOTOR.BAS] INIT_USART_INTERRUPT variable max_params=10,INIT_USART_INTERRUPT_RETURN=0,prm_count=0 rcall _Init_Usart F1_000229 equ $ ; IN [FA_MOTOR.BAS] CLEAR_SERIAL_BUFFER variable max_params=10,CLEAR_SERIAL_BUFFER_RETURN=0,prm_count=0 rcall _Clear_Usart_Buffer F1_000239 equ $ ; IN [FA_MOTOR.BAS] CLEAR T1CON clrf T1CON,0 F1_000240 equ $ ; IN [FA_MOTOR.BAS] CLEAR INTCON.2 bcf INTCON,2,0 F1_000241 equ $ ; IN [FA_MOTOR.BAS] SET INTCON.5 bsf INTCON,5,0 F1_000242 equ $ ; IN [FA_MOTOR.BAS] T0CON = %10000111 movlw 135 movwf T0CON,0 F1_000250 equ $ ; IN [FA_MOTOR.BAS] SENSORVAL = ADIN 0 movlw 0 rcall __ADIN_ movwf SensorVal,0 movff PP7H,SensorValH F1_000252 equ $ ; IN [FA_MOTOR.BAS] IF SENSORVAL < SENSORMIN THEN SENSORVAL = SENSORMIN movlw 1 subwf SensorValH,W,0 movlw 110 btfsc STATUS,2,0 subwf SensorVal,W,0 bc _LBL__15 movlw 1 movwf SensorValH,0 movlw 110 movwf SensorVal,0 _LBL__15 F1_000253 equ $ ; IN [FA_MOTOR.BAS] IF SENSORVAL > SENSORMAX THEN SENSORVAL = SENSORMAX movlw 2 subwf SensorValH,W,0 bnc _LBL__17 bnz _CPLB__3 movlw 81 subwf SensorVal,W,0 bnc _LBL__17 _CPLB__3 movlw 2 movwf SensorValH,0 movlw 80 movwf SensorVal,0 _LBL__17 movlb 0 F1_000254 equ $ ; IN [FA_MOTOR.BAS] NOWPOS = SENSORVAL - SENSORMIN movlw 110 subwf SensorVal,W,0 movwf nowpos,0 F1_000255 equ $ ; IN [FA_MOTOR.BAS] OLDPOS = NOWPOS movff nowpos,oldpos F1_000258 equ $ ; IN [FA_MOTOR.BAS] CLEAR T3CON clrf T3CON,0 F1_000259 equ $ ; IN [FA_MOTOR.BAS] CLEAR PIR2.1 bcf PIR2,1,0 F1_000260 equ $ ; IN [FA_MOTOR.BAS] SET PIE2.1 bsf PIE2,1,0 F1_000261 equ $ ; IN [FA_MOTOR.BAS] CLEAR TIM3 clrf TMR3LH,0 clrf TMR3L,0 F1_000262 equ $ ; IN [FA_MOTOR.BAS] SET RCON.7 bsf RCON,7,0 F1_000263 equ $ ; IN [FA_MOTOR.BAS] CLEAR IPR2.1 bcf IPR2,1,0 F1_000265 equ $ ; IN [FA_MOTOR.BAS] T3CON = %10110001 movlw 177 movwf T3CON,0 LOOP F1_000276 equ $ ; IN [FA_MOTOR.BAS] BYTEIN = HRSIN rcall HRSIN movwf Bytein,0 Midi_Parse F1_000279 equ $ ; IN [FA_MOTOR.BAS] IF BYTEIN > CONTROL_STATUS THEN movlw 192 subwf Bytein,W,0 bnc _LBL__19 F1_000280 equ $ ; IN [FA_MOTOR.BAS] IF BYTEIN > 253 THEN movlw 254 subwf Bytein,W,0 bnc _LBL__21 F1_000284 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers bra _LBL__22 _LBL__21 F1_000285 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000286 equ $ ; IN [FA_MOTOR.BAS] CLEAR STATUSBYTE clrf statusbyte,0 F1_000287 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers F1_000288 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__22 F1_000289 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__19 F1_000290 equ $ ; IN [FA_MOTOR.BAS] IF STBIT =1 THEN btfss Bytein,7,0 bra _LBL__24 F1_000292 equ $ ; IN [FA_MOTOR.BAS] CLEAR STATUSBYTE clrf statusbyte,0 F1_000293 equ $ ; IN [FA_MOTOR.BAS] SELECT BYTEIN F1_000294 equ $ ; IN [FA_MOTOR.BAS] CASE NOTEOFF_STATUS movlw 143 subwf Bytein,W,0 bnz _LBL__26 F1_000295 equ $ ; IN [FA_MOTOR.BAS] STATUSBYTE = BYTEIN movff Bytein,statusbyte F1_000296 equ $ ; IN [FA_MOTOR.BAS] SET NOTEUIT setf noteUit,0 F1_000297 equ $ ; IN [FA_MOTOR.BAS] SET RELEASE setf release,0 bra _LBL__25 _LBL__26 F1_000298 equ $ ; IN [FA_MOTOR.BAS] CASE NOTEON_STATUS movlw 159 subwf Bytein,W,0 bnz _LBL__29 F1_000299 equ $ ; IN [FA_MOTOR.BAS] STATUSBYTE = BYTEIN movff Bytein,statusbyte F1_000300 equ $ ; IN [FA_MOTOR.BAS] SET NOTEAAN setf noteAan,0 F1_000301 equ $ ; IN [FA_MOTOR.BAS] SET VELO setf velo,0 bra _LBL__25 _LBL__29 F1_000302 equ $ ; IN [FA_MOTOR.BAS] CASE KEYPRES_STATUS movlw 175 subwf Bytein,W,0 bnz _LBL__31 F1_000303 equ $ ; IN [FA_MOTOR.BAS] STATUSBYTE = BYTEIN movff Bytein,statusbyte F1_000304 equ $ ; IN [FA_MOTOR.BAS] SET NOTEPRES setf notePres,0 F1_000305 equ $ ; IN [FA_MOTOR.BAS] SET PRES setf pres,0 bra _LBL__25 _LBL__31 F1_000306 equ $ ; IN [FA_MOTOR.BAS] CASE CONTROL_STATUS movlw 191 subwf Bytein,W,0 bnz _LBL__33 F1_000307 equ $ ; IN [FA_MOTOR.BAS] STATUSBYTE = BYTEIN movff Bytein,statusbyte F1_000308 equ $ ; IN [FA_MOTOR.BAS] SET CTRL setf Ctrl,0 F1_000309 equ $ ; IN [FA_MOTOR.BAS] SET VALUE setf value,0 F1_000320 equ $ ; IN [FA_MOTOR.BAS] ENDSELECT _LBL__33 _LBL__25 bra _LBL__34 _LBL__24 F1_000321 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000322 equ $ ; IN [FA_MOTOR.BAS] SELECT STATUSBYTE F1_000323 equ $ ; IN [FA_MOTOR.BAS] CASE 0 movf statusbyte,F,0 bnz _LBL__36 F1_000324 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers bra _LBL__35 _LBL__36 F1_000325 equ $ ; IN [FA_MOTOR.BAS] CASE NOTEOFF_STATUS movlw 143 subwf statusbyte,W,0 bnz _LBL__39 F1_000326 equ $ ; IN [FA_MOTOR.BAS] IF NOTEUIT = 255 THEN incf noteUit,W,0 bnz _LBL__41 F1_000327 equ $ ; IN [FA_MOTOR.BAS] NOTEUIT = BYTEIN movff Bytein,noteUit bra _LBL__42 _LBL__41 F1_000328 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000329 equ $ ; IN [FA_MOTOR.BAS] RELEASE = BYTEIN movff Bytein,release F1_000330 equ $ ; IN [FA_MOTOR.BAS] SELECT NOTEUIT F1_000331 equ $ ; IN [FA_MOTOR.BAS] CASE 34 TO 91 movlw 34 subwf noteUit,W,0 bnc _LBL__44 movlw 92 subwf noteUit,W,0 bc _LBL__44 F1_000332 equ $ ; IN [FA_MOTOR.BAS] IF PITCH > 0 THEN DEC PITCH movf pitch,F,0 btfss STATUS,2,0 decf pitch,F,0 _LBL__47 F1_000333 equ $ ; IN [FA_MOTOR.BAS] SET SILENT bsf flags,0,0 F1_000334 equ $ ; IN [FA_MOTOR.BAS] ENDSELECT _LBL__44 _LBL__43 F1_000335 equ $ ; IN [FA_MOTOR.BAS] SET NOTEUIT setf noteUit,0 F1_000336 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__42 F1_000337 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers bra _LBL__35 _LBL__39 F1_000338 equ $ ; IN [FA_MOTOR.BAS] CASE NOTEON_STATUS movlw 159 subwf statusbyte,W,0 bnz _LBL__49 F1_000339 equ $ ; IN [FA_MOTOR.BAS] IF NOTEAAN = 255 THEN incf noteAan,W,0 bnz _LBL__51 F1_000340 equ $ ; IN [FA_MOTOR.BAS] NOTEAAN = BYTEIN movff Bytein,noteAan bra _LBL__52 _LBL__51 F1_000341 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000342 equ $ ; IN [FA_MOTOR.BAS] VELO = BYTEIN movff Bytein,velo F1_000343 equ $ ; IN [FA_MOTOR.BAS] IF VELO = 0 THEN movf velo,F,0 bnz _LBL__54 F1_000344 equ $ ; IN [FA_MOTOR.BAS] SELECT NOTEAAN F1_000345 equ $ ; IN [FA_MOTOR.BAS] CASE 34 TO 91 movlw 34 subwf noteAan,W,0 bnc _LBL__56 movlw 92 subwf noteAan,W,0 bc _LBL__56 F1_000346 equ $ ; IN [FA_MOTOR.BAS] IF PITCH > 0 THEN DEC PITCH movf pitch,F,0 btfss STATUS,2,0 decf pitch,F,0 _LBL__59 F1_000347 equ $ ; IN [FA_MOTOR.BAS] SET SILENT bsf flags,0,0 F1_000348 equ $ ; IN [FA_MOTOR.BAS] ENDSELECT _LBL__56 _LBL__55 F1_000349 equ $ ; IN [FA_MOTOR.BAS] SET NOTEAAN setf noteAan,0 F1_000350 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers bra _LBL__60 _LBL__54 F1_000351 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000352 equ $ ; IN [FA_MOTOR.BAS] SELECT NOTEAAN F1_000353 equ $ ; IN [FA_MOTOR.BAS] CASE 34 TO 91 movlw 34 subwf noteAan,W,0 bnc _LBL__62 movlw 92 subwf noteAan,W,0 bc _LBL__62 F1_000354 equ $ ; IN [FA_MOTOR.BAS] PITCH = PITCH + PITCH + PITCH + (NOTEAAN - 33) clrf PP7H,0 movff pitch,PP7 movf pitch,W,0 addwf PP7,F,0 movlw 0 addwfc PP7H,F,0 movf pitch,W,0 addwf PP7,F,0 movlw 0 addwfc PP7H,F,0 clrf PP8H,0 movff noteAan,PP8 movlw 33 subwf PP8,F,0 movlw 0 subwfb PP8H,F,0 movf PP7,W,0 addwf PP8,W,0 movwf pitch,0 F1_000355 equ $ ; IN [FA_MOTOR.BAS] PITCH = PITCH >> 2 bcf STATUS,0,0 rrcf pitch,F,0 bcf STATUS,0,0 rrcf pitch,F,0 F1_000356 equ $ ; IN [FA_MOTOR.BAS] CLEAR SILENT bcf flags,0,0 F1_000357 equ $ ; IN [FA_MOTOR.BAS] ENDSELECT _LBL__62 _LBL__61 F1_000358 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__60 F1_000359 equ $ ; IN [FA_MOTOR.BAS] SET NOTEAAN setf noteAan,0 F1_000360 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__52 F1_000361 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers bra _LBL__35 _LBL__49 F1_000362 equ $ ; IN [FA_MOTOR.BAS] CASE KEYPRES_STATUS movlw 175 subwf statusbyte,W,0 bnz _LBL__65 F1_000363 equ $ ; IN [FA_MOTOR.BAS] IF NOTEPRES = 255 THEN incf notePres,W,0 bnz _LBL__67 F1_000364 equ $ ; IN [FA_MOTOR.BAS] NOTEPRES = BYTEIN movff Bytein,notePres bra _LBL__68 _LBL__67 F1_000365 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000366 equ $ ; IN [FA_MOTOR.BAS] PRES = BYTEIN movff Bytein,pres F1_000368 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__68 F1_000369 equ $ ; IN [FA_MOTOR.BAS] SET NOTEPRES setf notePres,0 F1_000370 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers bra _LBL__35 _LBL__65 F1_000371 equ $ ; IN [FA_MOTOR.BAS] CASE CONTROL_STATUS movlw 191 subwf statusbyte,W,0 bnz _LBL__70 F1_000372 equ $ ; IN [FA_MOTOR.BAS] IF CTRL = 255 THEN incf Ctrl,W,0 bnz _LBL__72 F1_000373 equ $ ; IN [FA_MOTOR.BAS] CTRL = BYTEIN movff Bytein,Ctrl bra _LBL__73 _LBL__72 F1_000374 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000375 equ $ ; IN [FA_MOTOR.BAS] VALUE = BYTEIN movff Bytein,value F1_000376 equ $ ; IN [FA_MOTOR.BAS] GOSUB CONTROLLER rcall Controller F1_000377 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__73 F1_000378 equ $ ; IN [FA_MOTOR.BAS] GOTO CHECK_TIMERS bra Check_Timers F1_000384 equ $ ; IN [FA_MOTOR.BAS] ENDSELECT _LBL__70 _LBL__35 F1_000385 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__34 Check_Timers Motor_Check F1_000391 equ $ ; IN [FA_MOTOR.BAS] CNT.WORD0 = CNTLW movff TMR0LH,CntH movff TMR0L,Cnt F1_000392 equ $ ; IN [FA_MOTOR.BAS] IF CNT.10 <> TBIT THEN movf tBit,W,0 btfsc CntH,2,0 sublw 1 btfsc STATUS,2,0 bra _LBL__75 F1_000398 equ $ ; IN [FA_MOTOR.BAS] TBIT = CNT.10 clrf tBit,0 btfsc CntH,2,0 incf tBit,F,0 F1_000406 equ $ ; IN [FA_MOTOR.BAS] IF AUTOMOVE = 1 THEN btfss CC67,0,0 bra _LBL__77 F1_000407 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = PITCH << 2 bcf STATUS,0,0 rlcf pitch,W,0 movwf Sollpos,0 bcf STATUS,0,0 rlcf Sollpos,F,0 F1_000408 equ $ ; IN [FA_MOTOR.BAS] IF SOLLPOS > MAXPOS THEN SOLLPOS = MAXPOS movlw 227 subwf Sollpos,W,0 bnc _LBL__79 movlw 226 movwf Sollpos,0 _LBL__79 F1_000409 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__77 F1_000412 equ $ ; IN [FA_MOTOR.BAS] IF NOWPOS = OLDPOS THEN movf nowpos,W,0 subwf oldpos,W,0 bnz _LBL__81 F1_000413 equ $ ; IN [FA_MOTOR.BAS] IF NOWPOS <> SOLLPOS THEN movf nowpos,W,0 subwf Sollpos,W,0 bz _LBL__83 F1_000414 equ $ ; IN [FA_MOTOR.BAS] SET STALLING bsf flags,1,0 F1_000415 equ $ ; IN [FA_MOTOR.BAS] IF TORQUE < 253 THEN movlw 253 subwf torque,W,0 btfss STATUS,0,0 F1_000416 equ $ ; IN [FA_MOTOR.BAS] INC TORQUE incf torque,F,0 F1_000418 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__85 bra _LBL__86 _LBL__83 F1_000419 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000420 equ $ ; IN [FA_MOTOR.BAS] CLEAR TORQUE clrf torque,0 F1_000421 equ $ ; IN [FA_MOTOR.BAS] CLEAR STALLING bcf flags,1,0 F1_000422 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__86 bra _LBL__87 _LBL__81 F1_000423 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000424 equ $ ; IN [FA_MOTOR.BAS] OLDPOS = NOWPOS movff nowpos,oldpos F1_000425 equ $ ; IN [FA_MOTOR.BAS] CLEAR STALLING bcf flags,1,0 F1_000426 equ $ ; IN [FA_MOTOR.BAS] IF TORQUE > 1 THEN movlw 2 subwf torque,W,0 btfsc STATUS,0,0 F1_000427 equ $ ; IN [FA_MOTOR.BAS] DEC TORQUE decf torque,F,0 F1_000428 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__89 F1_000429 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__87 F1_000432 equ $ ; IN [FA_MOTOR.BAS] IF NOWPOS = SOLLPOS -1 THEN movlw 255 addwf Sollpos,W,0 movwf PBP#VAR0,0 clrf PBP#VAR0H,0 movlw 255 addwfc PBP#VAR0H,F,0 movf PBP#VAR0H,F,0 bnz _LBL__91 movf PBP#VAR0,W,0 subwf nowpos,W,0 bnz _LBL__91 F1_000433 equ $ ; IN [FA_MOTOR.BAS] NOWPOS = SOLLPOS movff Sollpos,nowpos F1_000434 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__91 F1_000435 equ $ ; IN [FA_MOTOR.BAS] IF NOWPOS = SOLLPOS + 1 THEN clrf PBP#VAR0H,0 incf Sollpos,W,0 movwf PBP#VAR0,0 btfsc STATUS,2,0 incf PBP#VAR0H,F,0 movf PBP#VAR0H,F,0 bnz _LBL__93 movf PBP#VAR0,W,0 subwf nowpos,W,0 bnz _LBL__93 F1_000436 equ $ ; IN [FA_MOTOR.BAS] NOWPOS = SOLLPOS movff Sollpos,nowpos F1_000437 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__93 F1_000439 equ $ ; IN [FA_MOTOR.BAS] SELECT NOWPOS >> 2 clrf PBP#VAR0HH,0 clrf PBP#VAR0HHH,0 clrf PBP#VAR0H,0 bcf STATUS,0,0 rrcf nowpos,W,0 bcf STATUS,0,0 rrcf WREG,F,0 movwf PBP#VAR0,0 clrf PBP#VAR1HH,0 clrf PBP#VAR1HHH,0 clrf PBP#VAR1H,0 bcf STATUS,0,0 rrcf Sollpos,W,0 bcf STATUS,0,0 rrcf WREG,F,0 movwf PBP#VAR1,0 F1_000440 equ $ ; IN [FA_MOTOR.BAS] CASE SOLLPOS >> 2 movf PBP#VAR1,W,0 subwf PBP#VAR0,W,0 bnz _LBL__95 movf PBP#VAR1H,W,0 subwf PBP#VAR0H,W,0 bnz _LBL__95 movf PBP#VAR1HH,W,0 subwf PBP#VAR0HH,W,0 bnz _LBL__95 movf PBP#VAR1HHH,W,0 subwf PBP#VAR0HHH,W,0 bnz _LBL__95 F1_000443 equ $ ; IN [FA_MOTOR.BAS] PORTA.2 = ~ PORTA.3 clrf WREG,0 btfss PORTA,3,0 addlw 1 btfsc STATUS,2,0 bcf PORTA,2,0 btfss STATUS,2,0 bsf PORTA,2,0 F1_000444 equ $ ; IN [FA_MOTOR.BAS] HPWM 2, 0, PWMFREQ clrf GEN,0 movlw 76 movwf PP1H,0 movlw 80 movwf PP1,0 movlw 2 call __HPWM_ F1_000445 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTC.2 bcf LATC,2,0 F1_000446 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTC.3 bcf LATC,3,0 F1_000447 equ $ ; IN [FA_MOTOR.BAS] SET PORTB.2 bsf LATB,2,0 F1_000448 equ $ ; IN [FA_MOTOR.BAS] DIRECTION = STILL movlw 64 movwf Direction,0 bra _LBL__94 _LBL__95 clrf PBP#VAR1HH,0 clrf PBP#VAR1HHH,0 clrf PBP#VAR1H,0 bcf STATUS,0,0 rrcf Sollpos,W,0 bcf STATUS,0,0 rrcf WREG,F,0 movwf PBP#VAR1,0 F1_000449 equ $ ; IN [FA_MOTOR.BAS] CASE > SOLLPOS >> 2 movf PBP#VAR0,W,0 subwf PBP#VAR1,W,0 movf PBP#VAR0H,W,0 subwfb PBP#VAR1H,W,0 movf PBP#VAR0HH,W,0 subwfb PBP#VAR1HH,W,0 movf PBP#VAR0HHH,W,0 subwfb PBP#VAR1HHH,W,0 bc _LBL__98 F1_000450 equ $ ; IN [FA_MOTOR.BAS] IF DIRECTION = FORWARDS THEN movlw 127 subwf Direction,W,0 btfsc STATUS,2,0 F1_000451 equ $ ; IN [FA_MOTOR.BAS] CLEAR TORQUE clrf torque,0 F1_000452 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__100 F1_000456 equ $ ; IN [FA_MOTOR.BAS] SET PORTA.3 bsf LATA,3,0 F1_000457 equ $ ; IN [FA_MOTOR.BAS] SET PORTA.2 bsf LATA,2,0 F1_000459 equ $ ; IN [FA_MOTOR.BAS] IF NOWPOS < EQPOS THEN movlw 95 subwf nowpos,W,0 bc _LBL__102 F1_000462 equ $ ; IN [FA_MOTOR.BAS] TRAJ = EQPOS - NOWPOS movf nowpos,W,0 sublw 95 movwf Traj,0 F1_000463 equ $ ; IN [FA_MOTOR.BAS] TRAJ = TRAJ >> 1 bcf STATUS,0,0 rrcf Traj,F,0 bra _LBL__103 _LBL__102 F1_000467 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000469 equ $ ; IN [FA_MOTOR.BAS] TRAJ = NOWPOS - EQPOS movlw 95 subwf nowpos,W,0 movwf Traj,0 F1_000473 equ $ ; IN [FA_MOTOR.BAS] END IF _LBL__103 F1_000474 equ $ ; IN [FA_MOTOR.BAS] SPEED = TORQUE clrf SpeedH,0 movff torque,Speed F1_000475 equ $ ; IN [FA_MOTOR.BAS] IF SPEED > MAXSPEED THEN SPEED = MAXSPEED movf SpeedH,F,0 bnz _CPLB__4 movf Speed,W,0 subwf MaxSpeed,W,0 bc _LBL__105 _CPLB__4 clrf SpeedH,0 movff MaxSpeed,Speed _LBL__105 movlb 0 F1_000477 equ $ ; IN [FA_MOTOR.BAS] HPWM 2, SPEED, PWMFREQ movff Speed,GEN movlw 76 movwf PP1H,0 movlw 80 movwf PP1,0 movlw 2 call __HPWM_ F1_000478 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTC.2 bcf LATC,2,0 F1_000479 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTB.2 bcf LATB,2,0 F1_000480 equ $ ; IN [FA_MOTOR.BAS] SET PORTC.3 bsf LATC,3,0 F1_000481 equ $ ; IN [FA_MOTOR.BAS] DIRECTION = BACKWARDS clrf Direction,0 F1_000482 equ $ ; IN [FA_MOTOR.BAS] CASE ELSE bra _LBL__107 _LBL__98 F1_000483 equ $ ; IN [FA_MOTOR.BAS] IF DIRECTION = BACKWARDS THEN movf Direction,F,0 btfsc STATUS,2,0 F1_000484 equ $ ; IN [FA_MOTOR.BAS] CLEAR TORQUE clrf torque,0 F1_000485 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__109 F1_000486 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTA.3 bcf LATA,3,0 F1_000487 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTA.2 bcf LATA,2,0 F1_000504 equ $ ; IN [FA_MOTOR.BAS] SPEED = TORQUE clrf SpeedH,0 movff torque,Speed F1_000505 equ $ ; IN [FA_MOTOR.BAS] IF SPEED > MAXSPEED THEN SPEED = MAXSPEED movf SpeedH,F,0 bnz _CPLB__5 movf Speed,W,0 subwf MaxSpeed,W,0 bc _LBL__111 _CPLB__5 clrf SpeedH,0 movff MaxSpeed,Speed _LBL__111 movlb 0 F1_000507 equ $ ; IN [FA_MOTOR.BAS] HPWM 2, SPEED, PWMFREQ movff Speed,GEN movlw 76 movwf PP1H,0 movlw 80 movwf PP1,0 movlw 2 call __HPWM_ F1_000508 equ $ ; IN [FA_MOTOR.BAS] SET PORTC.2 bsf LATC,2,0 F1_000509 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTC.3 bcf LATC,3,0 F1_000510 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTB.2 bcf LATB,2,0 F1_000511 equ $ ; IN [FA_MOTOR.BAS] DIRECTION = FORWARDS movlw 127 movwf Direction,0 F1_000512 equ $ ; IN [FA_MOTOR.BAS] ENDSELECT _LBL__107 _LBL__94 F1_000513 equ $ ; IN [FA_MOTOR.BAS] IF SILENT = 1 THEN btfss flags,0,0 bra _LBL__113 F1_000514 equ $ ; IN [FA_MOTOR.BAS] IF PITCH > 0 THEN DEC PITCH movf pitch,F,0 btfss STATUS,2,0 decf pitch,F,0 _LBL__115 F1_000516 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__113 F1_000518 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__75 F1_000519 equ $ ; IN [FA_MOTOR.BAS] BTG PORTC.4 btg PORTC,4 F1_000520 equ $ ; IN [FA_MOTOR.BAS] GOTO LOOP bra LOOP ProgChange F1_000523 equ $ ; IN [FA_MOTOR.BAS] SET PROG setf prog,0 F1_000524 equ $ ; IN [FA_MOTOR.BAS] RETURN return 0 Pitchbend F1_000528 equ $ ; IN [FA_MOTOR.BAS] SET PBLSB setf pblsb,0 F1_000529 equ $ ; IN [FA_MOTOR.BAS] RETURN return 0 Aftertouch F1_000533 equ $ ; IN [FA_MOTOR.BAS] SET AFT setf aft,0 F1_000534 equ $ ; IN [FA_MOTOR.BAS] RETURN return 0 Controller F1_000537 equ $ ; IN [FA_MOTOR.BAS] SELECT CTRL F1_000538 equ $ ; IN [FA_MOTOR.BAS] CASE 21 movlw 21 subwf Ctrl,W,0 bnz _LBL__117 F1_000549 equ $ ; IN [FA_MOTOR.BAS] CC21 = VALUE movff value,CC21 F1_000550 equ $ ; IN [FA_MOTOR.BAS] IF CC21 > 123 THEN CC21 = 123 movlw 124 subwf CC21,W,0 bnc _LBL__120 movlw 123 movwf CC21,0 _LBL__120 F1_000551 equ $ ; IN [FA_MOTOR.BAS] MINSPEED = CC21 movff CC21,MinSpeed bra _LBL__116 _LBL__117 F1_000556 equ $ ; IN [FA_MOTOR.BAS] CASE 22 movlw 22 subwf Ctrl,W,0 bnz _LBL__122 F1_000557 equ $ ; IN [FA_MOTOR.BAS] IF POWERON = 1 THEN btfss CC66,0,0 bra _LBL__124 F1_000559 equ $ ; IN [FA_MOTOR.BAS] CC22 = VALUE movff value,CC22 F1_000560 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = CC22 << 1 bcf STATUS,0,0 rlcf CC22,W,0 movwf Sollpos,0 F1_000562 equ $ ; IN [FA_MOTOR.BAS] IF SOLLPOS > MAXPOS THEN SOLLPOS = MAXPOS movlw 227 subwf Sollpos,W,0 bnc _LBL__126 movlw 226 movwf Sollpos,0 _LBL__126 bra _LBL__127 _LBL__124 F1_000563 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000564 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = MINPOS clrf Sollpos,0 F1_000565 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__127 F1_000566 equ $ ; IN [FA_MOTOR.BAS] CC22 = SOLLPOS >> 1 bcf STATUS,0,0 rrcf Sollpos,W,0 movwf CC22,0 bra _LBL__116 _LBL__122 F1_000567 equ $ ; IN [FA_MOTOR.BAS] CASE 23 movlw 23 subwf Ctrl,W,0 bnz _LBL__129 F1_000569 equ $ ; IN [FA_MOTOR.BAS] CC23 = VALUE movff value,CC23 F1_000570 equ $ ; IN [FA_MOTOR.BAS] MAXSPEED = CC23 << 1 bcf STATUS,0,0 rlcf CC23,W,0 movwf MaxSpeed,0 F1_000571 equ $ ; IN [FA_MOTOR.BAS] IF MAXSPEED <= MINSPEED THEN MAXSPEED = MINSPEED + 1 movf MaxSpeed,W,0 subwf MinSpeed,W,0 bnc _LBL__131 incf MinSpeed,W,0 movwf MaxSpeed,0 _LBL__131 F1_000572 equ $ ; IN [FA_MOTOR.BAS] CC23 = MAXSPEED >> 1 bcf STATUS,0,0 rrcf MaxSpeed,W,0 movwf CC23,0 bra _LBL__116 _LBL__129 F1_000573 equ $ ; IN [FA_MOTOR.BAS] CASE 66 movlw 66 subwf Ctrl,W,0 bnz _LBL__133 F1_000575 equ $ ; IN [FA_MOTOR.BAS] IF VALUE = 0 THEN movf value,F,0 bnz _LBL__135 F1_000576 equ $ ; IN [FA_MOTOR.BAS] CLEAR POWERON bcf CC66,0,0 F1_000577 equ $ ; IN [FA_MOTOR.BAS] GOSUB POWERDOWN rcall PowerDown bra _LBL__136 _LBL__135 F1_000578 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000579 equ $ ; IN [FA_MOTOR.BAS] SET POWERON bsf CC66,0,0 F1_000580 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = MINPOS clrf Sollpos,0 F1_000582 equ $ ; IN [FA_MOTOR.BAS] CLEAR CC22 clrf CC22,0 F1_000583 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__136 bra _LBL__116 _LBL__133 F1_000584 equ $ ; IN [FA_MOTOR.BAS] CASE 67 movlw 67 subwf Ctrl,W,0 bnz _LBL__138 F1_000585 equ $ ; IN [FA_MOTOR.BAS] IF POWERON = 1 THEN btfss CC66,0,0 bra _LBL__140 F1_000586 equ $ ; IN [FA_MOTOR.BAS] CC67 = VALUE movff value,CC67 F1_000587 equ $ ; IN [FA_MOTOR.BAS] IF VALUE > 0 THEN movf value,F,0 bz _LBL__142 F1_000588 equ $ ; IN [FA_MOTOR.BAS] SET AUTOMOVE bsf CC67,0,0 bra _LBL__143 _LBL__142 F1_000589 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000590 equ $ ; IN [FA_MOTOR.BAS] CLEAR AUTOMOVE bcf CC67,0,0 F1_000591 equ $ ; IN [FA_MOTOR.BAS] CLEAR PITCH clrf pitch,0 F1_000592 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__143 F1_000593 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__140 bra _LBL__116 _LBL__138 F1_000594 equ $ ; IN [FA_MOTOR.BAS] CASE 123 movlw 123 subwf Ctrl,W,0 bnz _LBL__145 F1_000595 equ $ ; IN [FA_MOTOR.BAS] CLEAR PITCH clrf pitch,0 F1_000596 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = MINPOS clrf Sollpos,0 F1_000598 equ $ ; IN [FA_MOTOR.BAS] CLEAR CC22 clrf CC22,0 F1_000599 equ $ ; IN [FA_MOTOR.BAS] END SELECT _LBL__145 _LBL__116 F1_000600 equ $ ; IN [FA_MOTOR.BAS] SET CTRL setf Ctrl,0 F1_000601 equ $ ; IN [FA_MOTOR.BAS] RETURN return 0 PowerDown F1_000606 equ $ ; IN [FA_MOTOR.BAS] IF NOWPOS <= MINPOS THEN movf nowpos,F,0 bnz _LBL__147 F1_000607 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = MINPOS clrf Sollpos,0 F1_000608 equ $ ; IN [FA_MOTOR.BAS] HPWM 2, 0, PWMFREQ clrf GEN,0 movlw 76 movwf PP1H,0 movlw 80 movwf PP1,0 movlw 2 call __HPWM_ F1_000609 equ $ ; IN [FA_MOTOR.BAS] SET PORTA.2 bsf LATA,2,0 F1_000610 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTA.3 bcf LATA,3,0 F1_000611 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTC.3 bcf LATC,3,0 F1_000612 equ $ ; IN [FA_MOTOR.BAS] CLEAR PORTC.2 bcf LATC,2,0 F1_000613 equ $ ; IN [FA_MOTOR.BAS] SET PORTB.2 bsf LATB,2,0 bra _LBL__148 _LBL__147 F1_000614 equ $ ; IN [FA_MOTOR.BAS] ELSE F1_000615 equ $ ; IN [FA_MOTOR.BAS] SOLLPOS = MINPOS clrf Sollpos,0 F1_000616 equ $ ; IN [FA_MOTOR.BAS] ENDIF _LBL__148 F1_000618 equ $ ; IN [FA_MOTOR.BAS] CC21 = CC21_DEFAULT movlw 10 movwf CC21,0 F1_000619 equ $ ; IN [FA_MOTOR.BAS] CC22 = CC22_DEFAULT clrf CC22,0 F1_000620 equ $ ; IN [FA_MOTOR.BAS] CC23 = CC23_DEFAULT movlw 110 movwf CC23,0 F1_000621 equ $ ; IN [FA_MOTOR.BAS] MINSPEED = CC21 movff CC21,MinSpeed F1_000622 equ $ ; IN [FA_MOTOR.BAS] MAXSPEED = CC23 >> 1 bcf STATUS,0,0 rrcf CC23,W,0 movwf MaxSpeed,0 F1_000623 equ $ ; IN [FA_MOTOR.BAS] CLEAR CC67 clrf CC67,0 F1_000624 equ $ ; IN [FA_MOTOR.BAS] CLEAR PITCH clrf pitch,0 F1_000625 equ $ ; IN [FA_MOTOR.BAS] CLEAR AUTOMOVE bcf CC67,0,0 F1_000626 equ $ ; IN [FA_MOTOR.BAS] RETURN return 0 F1_EOF equ $ ; FA_MOTOR.BAS _PBLB__149 bra _PBLB__149 __EOF config DEBUG = off config XINST = off config STVREN = off 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