📄 servos(1).asm
字号:
FOTO1 EQU P2.0
FOTO2 EQU P2.1
FOTO3 EQU P2.2
FOTO4 EQU P2.3
PULSO EQU P3.0
PULSO1 EQU P3.1
DATOS EQU P2
RS EQU P3.4
E EQU P3.5
RW EQU P3.6
ORG 0
JMP MAIN
ORG 03H
JMP SERVO1
ORG 0BH
JMP PWM
ORG 13H
JMP SERVO2
MAIN: MOV SP, #70H
MOV IE, #10000111B
MOV TMOD, #00010001B
SETB IT0
SETB IT1
MOV TH0, #0FFH
MOV TL0, #9CH
SETB E
MOV TH1, #0C5h ;Constante para 15ms
MOV TL1, #68h
CLR RW ;RW = 0
CLR RS ;RS = 0
SETB TR1
JNB TF1, $ ;Esperar 15ms
CLR TR1
SETB E
MOV P1, #00111000b ;Palabra de control 1
CLR E
NOP
NOP ;esperar mas de 4.7u
NOP
SETB E
MOV P1, #00110000b ;Palabra de control 2
CLR E
SETB TR1
JNB TF1, $ ;esperar 15ms
CLR TR1
SETB E
MOV P1, #00110000b ;Palabra de control 3
CLR E
NOP
NOP
SETB E
MOV P1, #00110000B ;palabra con N y F
CLR E
NOP
NOP
SETB E
MOV P1, #00001100B ;Enciende LCD
CLR E
NOP
NOP
SETB E
MOV P1, #00000001 ;Limpiar Pantalla
CLR E
NOP
NOP
SETB E
MOV P1, #00000110b ;Modo de Entrada
CLR E
TRABAJA: SETB RS ;RS = 1
SETB E
MOV P1,#' '
CALL ESC
SETB RS
MOV P1,#'E'
CALL ESC
SETB RS
MOV P1,#'S'
CALL ESC
SETB RS
MOV P1,#'C'
CALL ESC
SETB RS
MOV P1,#'O'
CALL ESC
SETB RS
MOV P1,#'J'
CALL ESC
SETB RS
MOV P1,#'A'
CALL ESC
SETB RS
MOV P1,#' '
CALL ESC
SETB RS
MOV P1,#'A'
CALL ESC
SETB RS
MOV P1,#'U'
CALL ESC
SETB RS
MOV P1,#'T'
CALL ESC
SETB RS
MOV P1,#'O'
CALL ESC
SETB RS
MOV P1,#' '
CALL ESC
SETB RS
MOV P1,#'M'
CALL ESC
SETB RS
MOV P1,#'A'
CALL ESC
SETB RS
MOV P1,#'N'
CALL ESC
SETB RS
MOV P1,#'U'
CALL ESC
SETB RS
MOV P1,#'A'
CALL ESC
SETB RS
MOV P1,#'L'
CALL ESC
NOP
NOP
JMP ACA
ESC: CLR E
NOP
NOP
SETB E
MOV R3,#30
DJNZ R3,$
RET
ACA: MOV R4, #50
MOV R6, #23
MOV 21H, #23
MOV 25H, #23
CLR 20H.6
CLR 20H.0
SETB TR0
SETB PULSO
JNB 20H.0, $
SETB PULSO1
MOV R6, #23
MOV 23H, #23
SETB TR0
SETB 20H.6
JB 20H.6, $
OTRA: SETB 20H.1
CLR 20H.6
MOV A, DATOS
ANL A, #0FH
MOV 22H, A
CJNE A, #15, VAS
JMP OTRA
VAS: ANL A, #03H
CJNE A, #3, MOVH
REV: MOV A, 22H
ANL A, #0CH
MOV 25H, A
CJNE A, #12, MOVV
JMP OTRA
MOVH: SETB IE0
CLR 20H.1
JNB 20H.1 , $
JMP REV
MOVV: SETB IE1
SETB 20H.6
JB 20H.6 , $
JMP OTRA
PWM: MOV TH0, #0FFH
MOV TL0, #9CH
CJNE R6, #0, BAJO
JMP BAJO1
BAJO: DJNZ R6, SALIR
JNB 20H.6, CIS
CPL PULSO1
JMP SER
CIS: CPL PULSO
SER: CLR C
MOV A, #200
SUBB A, 25H
MOV R5, A
BAJO1: DJNZ R5, SALIR
MOV R6, 25H
JNB 20H.6, CIS1
CPL PULSO1
JMP SER1
CIS1: CPL PULSO
SER1: DJNZ R4, SALIR
MOV R4, #50
CLR TR0
JB 20H.6, DE
SETB 20H.0
SETB 20H.1
JMP SALIR
DE: CLR 20H.6
SALIR: RETI
SERVO1: MOV A, 21H
CJNE A, #23, COM
MOV R6, #13
MOV 25H, #13
SETB TR0
JMP SALIR
COM: CJNE A, #13, COM2
JNB FOTO2, COM1
MOV R6, #3
MOV 25H, #3
SETB TR0
JMP SALIR
COM1: MOV R6, #13
MOV 25H, #13
SETB TR0
JMP SALIR
COM2: MOV R6, #13
MOV 25H, #13
SETB TR0
SALIR: MOV 25H, 21H
RETI
SERVO2: MOV A, 23H
CJNE A, #23, COM3
JNB FOTO3, SALIR1
MOV R6, #18
MOV 25H, #18
SETB TR0
JMP SALIR
COM3: CJNE A, #18, COM5
JNB FOTO3, COM4
MOV R6, #13
MOV 25H, #13
SETB TR0
JMP SALIR
COM4: MOV R6, #23
MOV 25H, #23
SETB TR0
JMP SALIR
COM5: JNB FOTO4, SALIR
MOV R6, #18
MOV 25H, #18
SETB TR0
SALIR1: MOV 23H, 25H
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -