??? 02/15/05 06:08 Modified: 02/15/05 06:17 Read: times Msg Score: +1 -1 Message Not Useful +1 Informative +1 Good Answer/Helpful |
#87480 - It is useful! Responding to: ???'s previous message |
I know maybe somebody say my idea is bad and the code is Gimmee .
But i want only only and only help my freinds. Everey body must know if i don't want to learn one thing any body can't help me Therefore i think this is not bad. Many years ago that i wanted to starting 8051 i read other codes and learnt very good thing so,I hope the following code be useful for others. Excuse me if my code is without description. If you have question about it,be sure i help you. ;MCU : AT89C52 ;DISPLAY : LCD 4*20 ;DATA ENTERING : KEYPAD 4*4 ;MOTOR CONTROLLING ROUTINE : PWM ;YOU CAN INCREASE AND DECREASE YOUR MOTOR SPEED MANUALLY ;OR WITH REMOTE CONTROL ;THE SPPED IS SHOWN IN LCD DISPLAY IN BCD FORMAT. ;IN MANUAL CONTROL YOU ENTER A START POINT AND STEP AND ;AMOUNT DELAY AND UP/DOWN DIRECTION THEN YOU PRESS ;START KEY AND MOTOR SPEED INCREASED OR DECREASED ... ;THE RANGE OF REMOTE CONTROL IS MAXIMUM 70 METER. ;IF ANYBODY NEED TO REMOTE CONTROL OR TOTAL SCHEMATIC ;FOR LEARNING MORE, I CAN SEND IT TO HIS/HER EMAIL. ORG 00H LJMP MAIN ORG 1BH JNB TF1,SUB_000 CLR TF1 SJMP SUB_007 SUB_000: LCALL PRESKEY JNC SUB_007 LCALL START0 CJNE A,#47,SUB_002 MOV A,SPEED DEC A CJNE A,#40,$+3 JNC SUB_001 CLR FLAG4 SUB_001: CJNE A,#0,SUB_006 SJMP SUB_007 SUB_002: CJNE A,#31,SUB_005 MOV A,SPEED INC A JNB FLAG8,SUB_003 CLR FLAG8 LCALL TEKANEH SJMP SUB_004 SUB_003: SUB_004: CJNE A,#0,SUB_006 SJMP SUB_007 SUB_005: CJNE A,#15,SUB_007 SETB FLAG2 RETI SUB_006: MOV SPEED,A MOV TH1,#0 MOV TL1,#0 SUB_007: CLR FLAG2 RETI MAIN: REC EQU P2.3 MOTOR EQU P2.0 TRANS EQU P2.6 LCD_RS EQU P3.5 LCD_RW EQU P3.6 LCD_EN EQU P3.7 SPEED EQU 40H FLAG0 EQU 03H FLAG1 EQU 04H FLAG2 EQU 05H FLAG3 EQU 06H FLAG4 EQU 07H FLAG5 EQU 08H FLAG8 EQU 09H FLAG9 EQU 0AH FLAG10 EQU 0BH FLAG11 EQU 0CH FLAG12 EQU 0DH FLAG13 EQU 0EH BC0 EQU 39H BC1 EQU 38H BC2 EQU 37H STP1 EQU 50H STP2 EQU 51H DLY1 EQU 52H DLY2 EQU 53H DIR EQU 54H STR1 EQU 56H STR2 EQU 57H STR3 EQU 58H STP EQU 59H MOV STP2,#0 MOV STP1,#1 MOV DLY2,#0 MOV DLY1,#1 MOV DIR,#1 MOV STR3,#0 MOV STR2,#0 MOV STR1,#1 MOV SPEED,#1 ACALL INITIALIZE LCALL CLEAR_SCREEN MOV A,#80H LCALL ADDRESS MOV DPTR,#MESS00 LCALL TRANSFER MOV A,#0C0H LCALL ADDRESS MOV DPTR,#MESS01 LCALL TRANSFER MOV A,#94H LCALL ADDRESS MOV DPTR,#MESS02 LCALL TRANSFER MOV A,#0D4H LCALL ADDRESS MOV DPTR,#MESS03 LCALL TRANSFER LCALL DELAY12 LCALL DELAY12 LCALL DELAY12 LCALL DELAY12 SUB_008: LCALL CLEAR_SCREEN MOV A,#80H LCALL ADDRESS MOV DPTR,#MESS2 LCALL TRANSFER MOV A,#0C0H LCALL ADDRESS MOV DPTR,#MESS3 LCALL TRANSFER SETB MOTOR SUB_009: LCALL START CJNE A,#4,SUB_018 SUB_010: LCALL CLEAR_SCREEN SUB_011: LCALL SHOW_CONDITION MOV A,#80H LCALL ADDRESS MOV DPTR,#MESS4 LCALL TRANSFER MOV A,#0C0H LCALL ADDRESS MOV DPTR,#MESS5 LCALL TRANSFER MOV A,#94H LCALL ADDRESS MOV DPTR,#MESS6 LCALL TRANSFER MOV A,#0D4H LCALL ADDRESS MOV DPTR,#MESS7 LCALL TRANSFER SUB_012: LCALL START CJNE A,#15,SUB_013 AJMP SUB_008 SUB_013: CJNE A,#1,SUB_014 LCALL EDIT_STEP SJMP SUB_011 SUB_014: CJNE A,#4,SUB_015 LCALL EDIT_DELAY SJMP SUB_011 SUB_015: CJNE A,#7,SUB_016 LCALL EDIT_DIRECTION SJMP SUB_011 SUB_016: CJNE A,#63,SUB_017 LCALL EDIT_START_POINT SJMP SUB_011 SUB_017: CJNE A,#95,SUB_012 LCALL PROFILE MOV BC2,STR3 MOV BC1,STR2 MOV BC0,STR1 LCALL BCD_HEX CLR FLAG4 LCALL START_MOTOR SJMP SUB_010 SUB_018: CJNE A,#1,SUB_009 LCALL CLEAR_SCREEN MOV A,#80H LCALL ADDRESS MOV DPTR,#MESS8 LCALL TRANSFER MOV A,#0C0H LCALL ADDRESS MOV DPTR,#MESS9 LCALL TRANSFER MOV A,#0C0H LCALL ADDRESS LCALL CURSOR_BLINK LCALL GET_SPEED LCALL CURSOR_OFF JNB FLAG10,SUB_END AJMP SUB_008 SUB_END: LCALL DELAY12 LCALL CLEAR_SCREEN MOV A,#80H LCALL ADDRESS MOV DPTR,#MESS10 LCALL TRANSFER MOV A,#0D4H LCALL ADDRESS MOV DPTR,#MESS11 LCALL TRANSFER LCALL BCD_HEX ;MOV IE,#10001000B MOV TH1,#0 MOV TL1,#1 MOV TMOD,#00010001B SETB TR1 CLR FLAG4 SUB_019: CLR IE.7 LCALL MOTOR_ON LCALL MOTOR_OFF MOV TMOD,#00010001B LCALL SHOW JNB FLAG2,SUB_020 LCALL CURSOR_OFF CLR IE.7 AJMP SUB_008 SUB_020: ;SETB IE.7 SJMP SUB_019 SHOW: LCALL HEX_BCD MOV A,#8FH LCALL ADDRESS MOV A,BC1 ORL A,#30H LCALL WRITE_ON MOV A,BC0 ANL A,#0F0H SWAP A ORL A,#30H LCALL WRITE_ON MOV A,BC0 ANL A,#0FH ORL A,#30H LCALL WRITE_ON RET HEX_BCD: MOV A,SPEED ANL A,#0FH MOV DPTR,#INTIGER0 MOVC A,@A+DPTR MOV BC0,A MOV A,SPEED ANL A,#0F0H SWAP A JNZ SUB_021 MOV BC1,#0 SJMP SUB_024 SUB_021: MOV R2,A MOV A,BC0 MOV R1,#0 SUB_022: ADD A,#16H DA A JNC SUB_023 INC R1 SUB_023: DJNZ R2,SUB_022 MOV BC1,R1 MOV BC0,A SUB_024: RET GET_SPEED: CLR FLAG10 SUB_025: LCALL MASK_0 CJNE A,#15,SUB_026 SETB FLAG10 RET SUB_026: CJNE A,#3,$+3 JNC SUB_025 MOV BC2,A MOV STR3,A CJNE A,#2,SUB_031 ORL A,#30H LCALL WRITE_ON SUB_027: LCALL MASK_0 CJNE A,#15,SUB_028 SETB FLAG10 RET SUB_028: CJNE A,#6,$+3 JNC SUB_027 MOV BC1,A MOV STR2,A CJNE A,#5,SUB_033 ORL A,#30H LCALL WRITE_ON SUB_029: LCALL MASK_0 CJNE A,#15,SUB_030 SETB FLAG10 RET SUB_030: CJNE A,#6,$+3 JNC SUB_029 MOV BC0,A MOV STR1,A ORL A,#30H LCALL WRITE_ON LCALL CURSOR_OFF RET SUB_031: SETB FLAG8 ORL A,#30H LCALL WRITE_ON LCALL MASK_0 CJNE A,#15,SUB_032 SETB FLAG10 RET SUB_032: MOV BC1,A MOV STR2,A SUB_033: ORL A,#30H LCALL WRITE_ON MOV A,STR2 CJNE A,#4,$+3 JNC SUB_034 MOV A,STR3 JNZ SUB_034 CLR FLAG8 SUB_034: LCALL MASK_0 CJNE A,#15,SUB_035 SETB FLAG10 RET SUB_035: MOV BC0,A MOV STR1,A ORL A,#30H LCALL WRITE_ON LCALL CURSOR_OFF RET EDIT_STEP: MOV A,#90H LCALL ADDRESS LCALL CURSOR_BLINK CLR FLAG3 LCALL MASK_0 JNZ SUB_036 SETB FLAG3 SUB_036: CJNE A,#15,SUB_037 LCALL CURSOR_OFF RET SUB_037: MOV STP2,A ORL A,#30H LCALL WRITE_ON SUB_038: LCALL MASK_0 JNB FLAG3,SUB_039 JZ SUB_038 SUB_039: CJNE A,#15,SUB_040 LCALL CURSOR_OFF RET SUB_040: MOV STP1,A ORL A,#30H LCALL WRITE_ON LCALL CURSOR_OFF RET EDIT_DELAY: LCALL SUB_071 MOV A,#0D0H LCALL ADDRESS LCALL CURSOR_BLINK CLR FLAG9 LCALL MASK_0 JNZ SUB_041 SETB FLAG9 SUB_041: CJNE A,#15,SUB_042 LCALL CURSOR_OFF RET SUB_042: MOV DLY2,A ORL A,#30H LCALL WRITE_ON SUB_043: LCALL MASK_0 JNB FLAG9,SUB_044 JZ SUB_043 SUB_044: CJNE A,#15,SUB_045 LCALL CURSOR_OFF RET SUB_045: MOV DLY1,A ORL A,#30H LCALL WRITE_ON LCALL CURSOR_OFF RET EDIT_DIRECTION: MOV A,#0A3H LCALL ADDRESS LCALL CURSOR_BLINK LCALL START CJNE A,#15,SUB_046 LCALL CURSOR_OFF RET SUB_046: CJNE A,#31,SUB_047 MOV DIR,#1 LCALL CURSOR_OFF RET SUB_047: CJNE A,#47,EDIT_DIRECTION MOV DIR,#0 LCALL CURSOR_OFF RET EDIT_START_POINT: MOV A,#0E4H LCALL ADDRESS LCALL CURSOR_BLINK LCALL GET_SPEED LCALL CURSOR_OFF RET SHOW_CONDITION: MOV A,#90H LCALL ADDRESS MOV A,STP2 ORL A,#30H LCALL WRITE_ON MOV A,STP1 ORL A,#30H LCALL WRITE_ON MOV A,#0D0H LCALL ADDRESS MOV A,DLY2 ORL A,#30H LCALL WRITE_ON MOV A,DLY1 ORL A,#30H LCALL WRITE_ON MOV A,#0A4H LCALL ADDRESS MOV A,DIR JZ SUB_048 MOV DPTR,#UP_GO SJMP SUB_049 SUB_048: MOV DPTR,#DOWN_GO SUB_049: LCALL TRANSFER MOV A,#0E4H LCALL ADDRESS MOV A,STR3 ORL A,#30H LCALL WRITE_ON MOV A,STR2 ORL A,#30H LCALL WRITE_ON MOV A,STR1 ORL A,#30H LCALL WRITE_ON RET START_MOTOR: ACALL START_MOTOR1 MOV TH1,#0 MOV TL1,#1 MOV TMOD,#00010001B SETB TR1 SUB_050: MOV A,DLY2 MOV B,#10 MUL AB ADD A,DLY1 MOV R5,A ROTATE: LCALL MOTOR_ON LCALL MOTOR_OFF MOV TMOD,#00010001B LCALL SHOW LCALL PRESKEY JNC SUB_051 LCALL START0 CJNE A,#15,SUB_051 SETB MOTOR RET SUB_051: DJNZ R5,ROTATE SJMP START_MOTOR PROFILE: LCALL CLEAR_SCREEN MOV A,#80H LCALL ADDRESS MOV DPTR,#PROFILE0 LCALL TRANSFER MOV A,#0C0H LCALL ADDRESS MOV DPTR,#PROFILE1 LCALL TRANSFER MOV A,#94H LCALL ADDRESS MOV DPTR,#PROFILE2 LCALL TRANSFER MOV A,#0D4H LCALL ADDRESS MOV DPTR,#PROFILE3 LCALL TRANSFER MOV A,#89H LCALL ADDRESS MOV DPTR,#PROFILE4 LCALL TRANSFER MOV A,DLY2 MOV B,#10 MUL AB ADD A,DLY1 MOV R3,A MOV B,#5 MOV R5,#0 CLR A SUB_052: ADD A,B DA A JNC SUB_053 INC R5 SUB_053: DJNZ R3,SUB_052 MOV R3,A MOV A,#0C4H LCALL ADDRESS MOV A,R5 ORL A,#30H LCALL WRITE_ON MOV A,#'.' LCALL WRITE_ON MOV A,R3 ANL A,#0F0H SWAP A ORL A,#30H LCALL WRITE_ON MOV A,R3 ANL A,#0FH ORL A,#30H LCALL WRITE_ON MOV A,#0C9H LCALL ADDRESS MOV DPTR,#SECON LCALL TRANSFER MOV A,#84H LCALL ADDRESS MOV A,STP2 ORL A,#30H LCALL WRITE_ON MOV A,STP1 ORL A,#30H LCALL WRITE_ON MOV A,#98H LCALL ADDRESS MOV A,DIR JZ SUB_054 MOV DPTR,#UP_GO SJMP SUB_055 SUB_054: MOV DPTR,#DOWN_GO SUB_055: LCALL TRANSFER MOV A,#0D8H LCALL ADDRESS MOV A,STR3 ORL A,#30H LCALL WRITE_ON MOV A,STR2 ORL A,#30H LCALL WRITE_ON MOV A,STR1 ORL A,#30H LCALL WRITE_ON RET START_MOTOR1: MOV A,DIR JNZ UP_ROUTINE DOWN_ROUTINE: MOV A,STP2 MOV B,#10 MUL AB ADD A,STP1 MOV STP,A MOV A,SPEED MOV B,STP SUBB A,B JNZ END_SUB2 MOV SPEED,#1 END_SUB2: JNC SUB_056 MOV SPEED,#1 RET SUB_056: JZ SUB_058 SUB_057: MOV SPEED,A MOV TH1,#0 MOV TL1,#0 SUB_058: RET UP_ROUTINE: MOV A,STP2 MOV B,#10 MUL AB ADD A,STP1 MOV STP,A MOV A,SPEED MOV B,STP ADD A,B JNC SUB_059 MOV SPEED,#255 RET SUB_059: JZ SUB_060 MOV SPEED,A MOV TH1,#0 MOV TL1,#0 SUB_060: RET START: LCALL RELKEY LCALL START0 RET START0: SUB_0: MOV R3,#04H MOV R2,#0FEH MOV R4,#00H SUB_1: MOV A,R2 MOV P0,A LCALL DELAY4 MOV A,P0 ANL A,#0F0H CJNE A,#0F0H,SUB_2 INC R4 MOV A,R2 RL A MOV R2,A DJNZ R3,SUB_1 LJMP SUB_0 SUB_2: CJNE A,#0E0H,SUB_3 MOV R6,#00H LJMP SUB_7 SUB_3: CJNE A,#0D0H,SUB_5 SUB_4: MOV R6,#01H LJMP SUB_7 SUB_5: CJNE A,#0B0H,SUB_6 MOV R6,#02H LJMP SUB_7 SUB_6: CJNE A,#70H,SUB_0 MOV R6,#03H SUB_7: MOV A,R4 MOV DPTR,#INTIGER MOV B,#4 MUL AB ADD A,R6 MOVC A,@A+DPTR RET RELKEY: CLR LCD_EN PUSH ACC SUB_061: MOV P0,#0F0H LCALL DELAY5 MOV A,P0 ANL A,#0F0H CJNE A,#0F0H,SUB_061 POP ACC RET PRESKEY: MOV P0,#0F0H LCALL DELAY5 MOV A,P0 ANL A,#0F0H CJNE A,#0F0H,$+3 RET MASK_0: LCALL START SUB_062: CJNE A,#1FH,SUB_063 LJMP MASK_0 SUB_063: CJNE A,#2FH,SUB_064 LJMP MASK_0 SUB_064: CJNE A,#3FH,SUB_065 LJMP MASK_0 SUB_065: CJNE A,#4FH,SUB_066 LJMP MASK_0 SUB_066: CJNE A,#5FH,SUB_067 LJMP MASK_0 SUB_067: CLR P2.1 LCALL DELAY7 SETB P2.1 RET ;*********************************************************** ;*********************************************************** ;*********************************************************** BCD_HEX: MOV A,BC2 MOV B,#100 MUL AB MOV R3,A MOV R2,#0 SUB_068: INC R2 DJNZ R3,SUB_068 MOV A,BC1 MOV B,#10 MUL AB MOV R3,A SUB_069: INC R2 DJNZ R3,SUB_069 MOV R3,BC0 SUB_070: INC R2 DJNZ R3,SUB_070 MOV SPEED,R2 RET SUB_071: MOV A,#0C8H LCALL ADDRESS LCALL CURSOR_BLINK LCALL DELAY6 MOV A,#0C9H LCALL ADDRESS LCALL DELAY6 MOV A,#0CAH LCALL ADDRESS LCALL DELAY6 MOV A,#0CCH LCALL ADDRESS LCALL DELAY6 MOV A,#0CDH LCALL ADDRESS LCALL DELAY6 MOV A,#0CEH LCALL ADDRESS LCALL DELAY6 RET TEKANEH: CLR MOTOR LCALL DELAY8 LCALL DELAY8 LCALL DELAY8 SETB MOTOR RET ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;LCD PACKAGE ;****************************;***************************************** INITIALIZE: SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV A,#00110000B MOV P1,A MOV C,ACC.4 MOV P3.0,C CLR LCD_EN LCALL DELAY0 SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV A,#00110000B MOV P1,A MOV C,ACC.4 MOV P3.0,C CLR LCD_EN LCALL DELAY0 SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV A,#00110000B MOV P1,A MOV C,ACC.4 MOV P3.0,C CLR LCD_EN LCALL DELAY0 SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV A,#00111000B MOV P1,A MOV C,ACC.4 MOV P3.0,C CLR LCD_EN LCALL DELAY0 SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV A,#00001100B MOV P1,A MOV C,ACC.4 MOV P3.0,C CLR LCD_EN LCALL DELAY0 SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV A,#00000110B MOV P1,A MOV C,ACC.4 MOV P3.0,C CLR LCD_EN LCALL DELAY0 RET CURSOR_BLINK: MOV A,#0FH LCALL COMMAND RET CURSOR_OFF: MOV A,#0CH LCALL COMMAND RET CURSOR_CUSTOM: MOV A,#0C0H LCALL COMMAND RET SHIFT_LEFT_SCREEN: MOV A,#18H LCALL COMMAND RET SHIFT_RIGHT_SCREEN: MOV A,#1CH LCALL COMMAND RET COMMAND: MOV P1,A MOV C,ACC.4 MOV P3.0,C SETB LCD_EN CLR LCD_RW CLR LCD_RS LCALL DELAYH CLR LCD_EN LCALL DELAYH RET CLEAR_SCREEN: SETB LCD_EN CLR LCD_RS CLR LCD_RW MOV A,#00000001B MOV P1,A MOV C,ACC.4 MOV P3.0,C LCALL DELAYH CLR LCD_EN LCALL DELAYH RET ADDRESS: SETB LCD_EN CLR LCD_RW CLR LCD_RS MOV P1,A MOV C,ACC.4 MOV P3.0,C LCALL DELAYH CLR LCD_EN LCALL DELAYH RET WRITE_ON: MOV P1,A MOV C,ACC.4 MOV P3.0,C SETB LCD_EN CLR LCD_RW SETB LCD_RS LCALL DELAYH CLR LCD_EN LCALL DELAYH RET TRANSFER: CLR A MOVC A,@A+DPTR INC DPTR CJNE A,#0FFH,TRANSZ LJMP EXIT3 TRANSZ: MOV P1,A MOV C,ACC.4 MOV P3.0,C LCALL WRITE_ON LJMP TRANSFER EXIT3: RET TRANSFER1: CLR A MOVC A,@A+DPTR INC DPTR CJNE A,#0FFH,TRANS1 LJMP EXIT13 TRANS1: MOV P1,A MOV C,ACC.4 MOV P3.0,C LCALL WRITE_ON LCALL DELAYX LJMP TRANSFER1 EXIT13: RET ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;DELAY SECTION ************************;******************************************** DELAYH: MOV R6,#1 SUB_DELAY: MOV TMOD,#00000001B MOV TH0,#0FAH MOV TL0,#00H SETB TR0 TF0?: JNB TF0,TF0? CLR TR0 CLR TF0 DJNZ R6,SUB_DELAY RET DELAY0: MOV TMOD,#00000001B MOV TH0,#0F0H MOV TL0,#00H SETB TR0 TF0??: JNB TF0,TF0?? CLR TR0 CLR TF0 RET DELAY1: PUSH 1 MOV R1,#1 MOV TMOD,#00000001B MOV TH0,#0FCH MOV TL0,#24H SETF: SETB TR0 TF0???: JNB TF0,TF0??? CLR TR0 CLR TF0 DJNZ R1,SETF POP 1 RET DELAY2: MOV TMOD,#00000001B MOV TH0,#0FEH MOV TL0,#34H SETB TR0 TF0????: JNB TF0,TF0???? CLR TR0 CLR TF0 RET DELAY3: MOV TMOD,#00000001B MOV TH0,#0DFH MOV TL0,#9AH SETB TR0 TF0?????: JNB TF0,TF0????? CLR TR0 CLR TF0 RET DELAY4: MOV TMOD,#00000001B MOV TH0,#0FAH MOV TL0,#00H SETB TR0 TF0??????: JNB TF0,TF0?????? CLR TR0 CLR TF0 RET DELAY5: MOV TMOD,#00000001B MOV TH0,#90H MOV TL0,#00H SETB TR0 TF0???????: JNB TF0,TF0??????? CLR TR0 CLR TF0 RET DELAY6: PUSH 7 MOV R7,#2 LOOPS: MOV TMOD,#00000001B MOV TH0,#00H MOV TL0,#00H SETB TR0 TF0????????: JNB TF0,TF0???????? CLR TR0 CLR TF0 DJNZ R7,LOOPS POP 7 RET DELAY7: PUSH 7 MOV R7,#5 LOOOP: MOV TMOD,#00000001B MOV TH0,#00H MOV TL0,#00H SETB TR0 TF0?????????: JNB TF0,TF0????????? CLR TR0 CLR TF0 DJNZ R7,LOOOP POP 7 RET DELAY8: PUSH 7 MOV R7,#1 LOOOOP: MOV TMOD,#00000001B MOV TH0,#00H MOV TL0,#00H SETB TR0 TF0??????????: JNB TF0,TF0?????????? CLR TR0 CLR TF0 DJNZ R7,LOOOOP POP 7 RET DELAY9: PUSH 7 MOV R7,#50 L1P: MOV TMOD,#00000001B MOV TH0,#0DCH MOV TL0,#00H SETB TR0 TF01?: JNB TF0,TF01? CLR TR0 CLR TF0 DJNZ R7,L1P POP 7 RET MOTOR_OFF: MOV R6,#1 LOA2: MOV R7,SPEED JB FLAG4,LAKS CJNE R7,#40,$+3 JC LAKS SETB FLAG4 LCALL TEKANEH LAKS: CJNE R7,#254,$+3 JC LH RET LH: MOV TMOD,#00000001B MOV TL0,#0FFH MOV TH0,R7 SETB TR0 TF21?: SETB MOTOR JNB TF0,TF21? CLR TR0 CLR TF0 DJNZ R6,LOA2 RET MOTOR_ON: MOV R6,#1 LOA1: MOV R7,SPEED CJNE R7,#3,$+3 JNC LH1 RET LH1: MOV A,#255 SUBB A,SPEED MOV R7,A L4P: MOV TMOD,#00000001B MOV TL0,#0FFH MOV TH0,R7 SETB TR0 TF41?: CLR MOTOR JNB TF0,TF41? CLR TR0 CLR TF0 DJNZ R6,LOA1 RET DELAYX: PUSH 7 MOV R7,#1 SUB_DELAYX: MOV TMOD,#00000001B MOV TH0,#0A0H MOV TL0,#00H SETB TR0 TF0X?: JNB TF0,TF0X? CLR TR0 CLR TF0 DJNZ R7,SUB_DELAYX POP 7 RET DELAY12: PUSH 7 MOV R7,#30 LA4P: MOV TMOD,#00000001B MOV TH0,#00H MOV TL0,#00H SETB TR0 TFA41?: JNB TF0,TFA41? CLR TR0 CLR TF0 DJNZ R7,LA4P POP 7 RET ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;*****************************************;***************************************** ;DEFINITION BYTES*************************;***************************************** INTIGER: DB 1,2,3,15,4,5,6,31,7,8,9,47,63,0,79,95 INTIGER0: DB 0,1,2,3,4,5,6,7,8,9,10H DB 11H,12H,13H,14H,15H,16H,17H,18H,19H,20H DB 21H,22H,23H,24H,25H,26H,27H,28H,29H,30H DB 31H,32H,33H,34H,35H,36H,37H,38H,39H,40H DB 41H,42H,43H,44H,45H,46H,47H,48H,49H,50H DB 51H,52H,53H,54H,55H,56H,57H,58H,59H,60H DB 61H,62H,63H,64H,65H,66H,67H,68H,69H,70H DB 71H,72H,73H,74H,75H,76H,77H,78H,79H,80H DB 81H,82H,83H,84H,85H,86H,87H,88H,89H,90H DB 91H,92H,93H,94H,95H,96H,97H,98H,99H DIGIT: DB "0123456789" SECON: DB "Second",0FFH MESS00: DB "**Motor Controller**",0FFH MESS01: DB "Designed by: ",0FFH MESS02: DB " Mehdi ",0FFH MESS03: DB " N.Rahni ",0FFH MESS2: DB 7EH,"Manual ",0FFH MESS3: DB 7EH,"Auto Control ",0FFH MESS4: DB 7EH,"Step",0FFH MESS5: DB 7EH,"Delay .05 Sec*",0FFH MESS6: DB 7EH,"Direction",0FFH MESS7: DB 7EH,"Start Point",0FFH MESS8: DB "Enter Start Point: ",0FFH MESS9: DB "---",0FFH MESS10: DB "Desired Speed: ",0FFH MESS11: DB "Up Down Esc ",0FFH UP_GO: DB "Up ",0FFH DOWN_GO: DB "Down",0FFH PROFILE0: DB "Stp:",0FFH PROFILE1: DB "Dly:",0FFH PROFILE2: DB "Dir:",0FFH PROFILE3: DB "Spo:",0FFH PROFILE4: DB "Speed:",0FFH END |
Topic | Author | Date |
PWM? | 01/01/70 00:00 | |
PWM | 01/01/70 00:00 | |
I hope this helps | 01/01/70 00:00 | |
It is useful! | 01/01/70 00:00 | |
Thanks mehdi! | 01/01/70 00:00 | |
not very educational/useful | 01/01/70 00:00 | |
Oh well | 01/01/70 00:00 | |
to ERIK/ANDY | 01/01/70 00:00 | |
Slap in the face!![]() | 01/01/70 00:00 | |
if you are to do it | 01/01/70 00:00 |