;Initilization $ NOMOD51 $ INCLUDE (REG515.inc) PUBLIC DISPLAY_RIGHT EXTRN DATA(CHECK180, KEYCOUNT, TURN_1, TURN_180, KEYPAD_FLAG, DISPFLAG, CONTSIG1, CONTSIG2, COUNT, ADDSAVE1, ADDSAVE2, GO_MOVE_HIGH, GO_MOVE_LOW) EXTRN CODE(DLAYA, TURN_LEFT, TURN_RIGHT, FORWARD, BACKWARD,DLAYZ,ADCIN, LCDOUT, HEXTOA, RPMINCREASE1, RPMINCREASE2, RPMDECREASE1, RPMDECREASE2) ;EXTRN BIT() DISPRIGHT SEGMENT CODE RSEG DISPRIGHT USING 0 DISPLAY_RIGHT: MOV A,#0 MOV KEYCOUNT,A ;CLEAR KEY COUNT MOV CHECK180,A ;CLEAR 180 CHECK MOV A,#0FFH MOV KEYPAD_FLAG,A ;CLEAR KEYPAD FLAG MOV A,#1AH ;CLEAR HOME LCALL LCDOUT MOV DPTR, #LCDDATA MOV R0,#0 DISPLOOP: MOV A,R0 MOVC A,@A+DPTR CALL LCDOUT INC R0 CJNE R0,#20,DISPLOOP MOV A,#0DH ;NEXT LINE CODE LCALL LCDOUT LCALL DLAYZ MOV A,#0AH LCALL LCDOUT MOV DPTR, #LCDDATA2 MOV R0,#0 DISPLOOP2: MOV A,R0 MOVC A,@A+DPTR CALL LCDOUT INC R0 CJNE R0,#17,DISPLOOP2 INPUTWAIT: MOV A,KEYPAD_FLAG CJNE A,#0FFH,KEY0 LJMP INPUTWAIT KEY0: CJNE A,#0,KEY1 MOV A,KEYCOUNT ;INCREMENT KEY COUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH ;CLEAR KEYPAD FLAG MOV KEYPAD_FLAG,A MOV A,#0 MOV B,#0 PUSH ACC LCALL HEXTOA LCALL LCDOUT ;OUTPUT CURRENT CHARACTER LJMP INPUTWAIT KEY1: CJNE A,#1,KEY2 MOV A,KEYCOUNT ;INCREMENT KEY COUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH ;CLEAR KEYPAD FLAG MOV KEYPAD_FLAG,A MOV A,#1 MOV B,#1 PUSH ACC LCALL HEXTOA LCALL LCDOUT ;OUTPUT CURRENT CHARACTER LJMP INPUTWAIT KEY2: CJNE A,#2,KEY3 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#2 MOV B,#2 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY3: CJNE A,#3,KEY4 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#3 MOV B,#3 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY4: CJNE A,#4,KEY5 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#4 MOV B,#4 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY5: CJNE A,#5,KEY6 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#5 MOV B,#5 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY6: CJNE A,#6,KEY7 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#6 MOV B,#6 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY7: CJNE A,#7,KEY8 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#7 MOV B,#7 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY8: CJNE A,#8,KEY9 MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#8 MOV B,#8 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEY9: CJNE A,#9,KEYA MOV A,KEYCOUNT ADD A,#1 MOV KEYCOUNT,A MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,#9 MOV B,#9 PUSH ACC LCALL HEXTOA LCALL LCDOUT LJMP INPUTWAIT KEYA: CJNE A,#0AH,KEYB MOV A,#0FFH MOV KEYPAD_FLAG,A LJMP INPUTWAIT KEYB: CJNE A,#0BH,KEYC MOV A,#0FFH MOV KEYPAD_FLAG,A LJMP INPUTWAIT KEYC: CJNE A,#0CH,KEYD MOV A,#0FFH MOV KEYPAD_FLAG,A LJMP INPUTWAIT KEYD: CJNE A,#0DH,KEYE MOV A,#0FFH MOV KEYPAD_FLAG,A LJMP INPUTWAIT KEYF_JMP: LJMP KEYF KEYE: CJNE A,#0EH,KEYF_JMP MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,CHECK180 JNZ CONVERT1DEG CONVERT180DEG: MOV A,#1 MOV CHECK180,A CONVERT1_180: MOV A,#0 MOV TURN_180,A MOV A,KEYCOUNT JZ CONTINUE_180 POP ACC MOV TURN_180,A MOV A,KEYCOUNT CJNE A,#1,CONVERT10_180 LJMP CONTINUE_180 CONVERT10_180: POP ACC MOV B,#10 MUL AB ADDC A,TURN_180 MOV TURN_180,A MOV A,KEYCOUNT CJNE A,#2,CONVERT100_180 LJMP CONTINUE_180 CONVERT100_180: POP ACC MOV B,#100 MUL AB ADDC A,TURN_180 MOV TURN_180,A MOV A,KEYCOUNT CONTINUE_180: MOV A,#1AH ;CLEAR HOME LCALL LCDOUT MOV DPTR, #LCDDATA MOV R0,#0 MOV A,#0 MOV KEYCOUNT,A DISPLOOP3: MOV A,R0 MOVC A,@A+DPTR CALL LCDOUT INC R0 CJNE R0,#20,DISPLOOP3 MOV A,#0DH ;NEXT LINE CODE LCALL LCDOUT LCALL DLAYZ MOV A,#0AH LCALL LCDOUT MOV DPTR, #LCDDATA3 MOV R0,#0 DISPLOOP4: MOV A,R0 MOVC A,@A+DPTR CALL LCDOUT INC R0 CJNE R0,#15,DISPLOOP4 MOV A,#0FFH MOV KEYPAD_FLAG,A ;CLEAR KEYPAD FLAG LJMP INPUTWAIT CONVERT1DEG: CONVERT1_1: MOV A,#0 MOV TURN_1,A MOV A,KEYCOUNT JZ CONTINUE_1 POP ACC MOV TURN_1,A MOV A,KEYCOUNT CJNE A,#1,CONVERT10_1 LJMP CONTINUE_1 CONVERT10_1: POP ACC MOV B,#10 MUL AB ADDC A,TURN_1 MOV TURN_1,A MOV A,KEYCOUNT CJNE A,#2,CONVERT100_1 LJMP CONTINUE_1 CONVERT100_1: POP ACC MOV B,#100 MUL AB ADDC A,TURN_1 MOV TURN_1,A MOV A,KEYCOUNT CONTINUE_1: LCALL TURN_RIGHT RET KEYF: CJNE A,#0FH,NOKEY MOV A,#0FFH MOV KEYPAD_FLAG,A MOV A,KEYCOUNT CJNE A,#0,EXIT1 RET EXIT1: CJNE A,#1,EXIT2 POP ACC RET EXIT2: CJNE A,#2,EXIT3 POP ACC POP ACC RET EXIT3: CJNE A,#3,EXIT4 POP ACC POP ACC POP ACC RET EXIT4: CJNE A,#48,EXIT5 POP ACC POP ACC POP ACC POP ACC RET EXIT5: POP ACC POP ACC POP ACC POP ACC POP ACC RET NOKEY: MOV A,#0FFH MOV KEYPAD_FLAG,A LJMP INPUTWAIT LCDDATA: DB "Turn Right (Degrees)" LCDDATA2: DB "Number of 180's: " LCDDATA3: DB "Number of 1's: " END