;Initilization $ NOMOD51 $ INCLUDE (REG515.inc) PUBLIC RPMDECREASE1, RPMDECREASE2 EXTRN DATA(CONTSIG1, CONTSIG2, COUNT, ADDSAVE1, ADDSAVE2) EXTRN CODE(WAIT, ADCIN, LCDOUT, HEXTOA) ;EXTRN BIT() RPMDEC SEGMENT CODE RSEG RPMDEC USING 0 ;***********************MOTOR1**************************************** RPMDECREASE1: ;RPMDECREASE FUNCTION CHECKS TO SEE IF THE ; PWM COMPLEMENT POINT IS IN THE SPECIFIED ; BOUND OF 63535-65535. IT THEN ADDS 1 TO ; THE SAVED VALUES OF TH0SAVE AND TL0SAVE ; THUS REDUCING THE PWM DUTY CYCLE MOV A,CONTSIG1 JZ NOPOWER1 CLR C MOV A,#0FFH ;CHECK TO SEE IF TH0SAVE IS IN BOUND SUBB A,CCH1 JZ RPMDECREASELOWER1 ;IF OUT OF BOUND CHECK TL0SAVE LJMP NOBOUNDDEC1 ;IN BOUNDS SO ADD 1 TO TL0SAVE RPMDECREASELOWER1: CLR C MOV A,#0FFH SUBB A,CCL1 ;CHECK TO SEE IF TL0SAVE IS IN BOUND JC EXIT1 NOBOUNDDEC1: ;SINCE TL0SAVE AND TH0SAVE ARE IN BOUNDS ADD 1 CLR C MOV A,ADDSAVE1 ;SAVE VALUE FROM AD FUNCTION SUBB A,CONTSIG1 ;TEST TO SEE IF MEASURED VALUE SUBB A,#2 JC EXIT1 MOV A,ADDSAVE1 ;SAVE VALUE FROM AD FUNCTION SUBB A,CONTSIG1 ;TEST TO SEE IF MEASURED VALUE SUBB A,#20 JC SUBB1_1 MOV A,ADDSAVE1 ;SAVE VALUE FROM AD FUNCTION SUBB A,CONTSIG1 ;TEST TO SEE IF MEASURED VALUE SUBB A,#40 JC SUBB3_1 LJMP SUBB10_1 RET EXIT1: RET SUBB1_1: CLR C MOV A,CCL1 ADD A,#5 MOV CCL1,A MOV A,CCH1 ADDC A,#0 MOV CCH1,A RET SUBB3_1: CLR C MOV A,CCL1 ADD A,#10 MOV CCL1,A MOV A,CCH1 ADDC A,#0 MOV CCH1,A RET SUBB10_1: CLR C MOV A,CCH1 SUBB A,#0FFH JZ SUBB3_1 CLR C MOV A,CCL1 ADD A,#50 MOV CCL1,A MOV A,CCH1 ADDC A,#0 MOV CCH1,A RET NOPOWER1: MOV A,#0FFH MOV CCH1,A MOV A,#0FFH MOV CCL1,A RET ;***********************MOTOR2**************************************** RPMDECREASE2: ;RPMDECREASE FUNCTION CHECKS TO SEE IF THE ; PWM COMPLEMENT POINT IS IN THE SPECIFIED ; BOUND OF 63535-65535. IT THEN ADDS 1 TO ; THE SAVED VALUES OF TH0SAVE AND TL0SAVE ; THUS REDUCING THE PWM DUTY CYCLE MOV A,CONTSIG2 JZ NOPOWER2 CLR C MOV A,#0FFH ;CHECK TO SEE IF TH0SAVE IS IN BOUND SUBB A,CCH2 JZ RPMDECREASELOWER2 ;IF OUT OF BOUND CHECK TL0SAVE LJMP NOBOUNDDEC2 ;IN BOUNDS SO ADD 1 TO TL0SAVE RPMDECREASELOWER2: CLR C MOV A,#0FFH SUBB A,CCL2 ;CHECK TO SEE IF TL0SAVE IS IN BOUND JC EXIT2 NOBOUNDDEC2: ;SINCE TL0SAVE AND TH0SAVE ARE IN BOUNDS ADD 1 CLR C MOV A,ADDSAVE2 ;SAVE VALUE FROM AD FUNCTION SUBB A,CONTSIG2 ;TEST TO SEE IF MEASURED VALUE SUBB A,#2 JC EXIT2 MOV A,ADDSAVE2 ;SAVE VALUE FROM AD FUNCTION SUBB A,CONTSIG2 ;TEST TO SEE IF MEASURED VALUE SUBB A,#20 JC SUBB1_2 MOV A,ADDSAVE2 ;SAVE VALUE FROM AD FUNCTION SUBB A,CONTSIG2 ;TEST TO SEE IF MEASURED VALUE SUBB A,#40 JC SUBB3_2 LJMP SUBB10_2 RET EXIT2: RET SUBB1_2: CLR C MOV A,CCL2 ADD A,#5 MOV CCL2,A MOV A,CCH2 ADDC A,#0 MOV CCH2,A RET SUBB3_2: CLR C MOV A,CCL2 ADD A,#10 MOV CCL2,A MOV A,CCH2 ADDC A,#0 MOV CCH2,A RET SUBB10_2: CLR C MOV A,CCH2 SUBB A,#0FFH JZ SUBB3_2 CLR C MOV A,CCL2 ADD A,#50 MOV CCL2,A MOV A,CCH2 ADDC A,#0 MOV CCH2,A RET NOPOWER2: MOV A,#0FFH MOV CCH2,A MOV A,#0FFH MOV CCL2,A RET END