Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
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







List of 10 messages in thread
TopicAuthorDate
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      

Back to Subject List