⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 final.asm

📁 imagenes de reconocimeito facial que serviran para procesar rostros
💻 ASM
字号:
$MOD51	; This includes 8051 definitions for the metalink assembler

FOTO1 EQU P0.0
FOTO2 EQU P0.1
FOTO3 EQU P0.2
FOTO4 EQU P0.3
PULSO EQU P3.0
PULSO1 EQU P3.1
DATOS EQU P0 
RS EQU P3.4 
E EQU P3.5	
RW EQU P3.6 
CONT1 EQU 18H
CONT2 EQU 19H

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, #00111000B  ;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,#'O'   
           CALL ESC
           
           SETB RS
           MOV P1,#'P' 
           CALL ESC

           SETB RS
           MOV P1,#'E' 
           CALL ESC

           SETB RS
           MOV P1,#'R'	
           CALL ESC
 
           SETB RS
           MOV P1,#'A'  
           CALL ESC

           SETB RS
           MOV P1,#'T'   
           CALL ESC
 
           SETB RS
           MOV P1,#'I'   
           CALL ESC

           SETB RS
           MOV P1,#'O'   
           CALL ESC

           SETB RS
           MOV P1,#'N'   
           CALL ESC

           SETB RS
           MOV P1,#' '   
           CALL ESC

           SETB RS
           MOV P1,#'M'   
           CALL ESC

           SETB RS
			  MOV P1,#'O'   
			  CALL ESC

           SETB RS
           MOV P1,#'D'   
			  CALL ESC 

           SETB RS
           MOV P1,#'E'   
           CALL ESC

           SETB RS
           MOV P1,#'?'   
           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, $
		     JMP AUTO
		  
OTRA432:   CLR RS
           MOV P1, #00000001   ;Limpiar Pantalla
           CALL ESC
     	   SETB RS

           SETB RS			;RS = 1
           SETB E
           MOV P1,#'A'   
           CALL ESC

		   SETB RS			;RS = 1
           MOV P1,#'U'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'T'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'O'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'M'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'A'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'T'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'I'   
           CALL ESC

           SETB RS			;RS = 1
           MOV P1,#'C'   
           CALL ESC


OTRA:		  CALL TECLADO
			  CJNE R7, #12, ACA1
			  JMP MANUAL
ACA1:		  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
           
AUTO:      CLR P0.4
		   CALL TECLADO
           CJNE R7, #11, MANUAL       
           JMP OTRA432

MANUAL:    CJNE R7, #12, AUTO
VERTI23:   CALL MANUAL23
VERTI:     CALL TECLADO           
           CJNE R7, #11, VASACA
YEAH:      JMP OTRA432
VASACA:    CJNE R7, #13, HORIZON; PREGUNTAMO SI NOS MOVEMOS VERTICALMENTE PRIMERO 

DIGV1:     CALL MANUAL23
		   CALL VERTIN
DIGV:	   CALL TECLADO
           CJNE R7, #11, VASACA1
           JMP OTRA432
VASACA1:   CJNE R7, #14, VASACA2
           JMP DIGH1
VASACA2:   MOV A, R7
           CLR C
           SUBB A, #0AH
           JNC DIGV
           MOV 16H, R7
		   CALL NU
DAS:       CALL TECLADO
           CJNE R7, #11, VASACA3
           JMP OTRA432
VASACA3:   CJNE R7, #14, VASACA4
           JMP DIGH1
VASACA4:   CJNE R7, #13, VASACA23
           JMP DIGV1
VASACA23:  CJNE R7, #15, SADA
           CALL ENTER
		   JMP CORRECTOV
SADA:      JMP DAS
ALLA:      JMP VERTI23


HORIZON:   CJNE R7, #11, VASACA5
           JMP YEAH
VASACA5:   CJNE R7, #14, VERTI; PREGUNTAMOS SI NOS MOVEMOS HORIZONTALMETE PRIMERO           
DIGH1:     CALL MANUAL23
		   CALL HORIN
DIGH:	   CALL TECLADO
           CJNE R7, #11, VASACA6
           JMP YEAH
VASACA6:   CJNE R7, #13, VASACA7
           JMP DIGV1
VASACA7:   MOV A, R7
           CLR C
           SUBB A, #0AH
           JNC DIGH
		   CALL NU
           MOV 17H, R7
VAS34:     CALL TECLADO
           CJNE R7, #11, VASACA8
           JMP YEAH
VASACA8:   CJNE R7, #13, VASACA9
           JMP DIGV1
VASACA9:   CJNE R7, #14, VASACA11
           JMP DIGH1
VASACA11:  CJNE R7, #15, VASACA10
           CALL ENTER
		   JMP CORRECTOH
VASACA10:  JMP VAS34
           
CORRECTOV: CLR C
           MOV A, #23
           SUBB A, 16H
           MOV R6, A
           MOV 25H, R6
           SETB TR0
           SETB 20H.6
           JB 20H.6 , $
           JMP ALLA
  

CORRECTOH: MOV B, #2
           MOV A, 17H
           MUL AB
           ADD A, #3
           MOV R6, A
           MOV 25H, R6
           SETB TR0
           CLR 20H.1
           JNB 20H.1 , $
           JMP ALLA


Teclado: Mov R5,#4                       ;contador de filas
         Mov R2,#0fEh                    ;Codigo de barrido de filas
         Mov R7,#03                      ;Valor mayor de la 1ra fila

otra1:   Mov P2,R2                       ; sacar codigo
         Mov A,P2                        ; Leer columnas
         ORL A,#0fh  
         CJNE A, #0ffh,ver_tecla         ;Si hubo tecla oprimida
         Mov A, R2                       ;No hubo tecla oprimida
         RL A                            ;rotar codigo para siguiente fila
         Mov R2,A
         Mov  A, R7
         ADD A,#4                        ; valor mayor de la fila siguiente
         Mov R7,A
         DJNZ R5, otra1                   ; repetir para fila siguiente
 
         Mov R7, #0ffh                   ; Devuelve FFh  si no hay tecla oprimida
         RET

ver_tecla:Call RETARDO10               ;eliminar rebote
          Mov A, P2
          ORL A,#0Fh
          CJNE A, #0ffh, sigue           ;la tecla sigue oprimida
          Mov R7,#0ffh                   ; no hay tecla oprimida
          RET

sigue:    RLC A                          ;Encontrar valor de la tecla oprimida
          JNC soltar
          DEC R7
          JMP sigue

soltar:  Mov A, P2                       ; Esperar que se suelte la tecla
         ORL A,#0fh
         CJNE A,#0ffh, soltar
         Call RETARDO10
         RET
     
RETARDO10: MOV CONT1, #25;retardo 10ms
			  CIC1: MOV CONT2, #200
	    	  CIC2: DJNZ CONT2, CIC2
	   	  		  DJNZ CONT1, CIC1
			        RET

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 R1, A
BAJO1:	   DJNZ R1, 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 SALIR2
COM:       CJNE A, #13, COM2
           JNB FOTO2, COM1
           MOV R6, #3
           MOV 25H, #3
           SETB TR0
           JMP SALIR2
COM1:      MOV R6, #13
           MOV 25H, #13
           SETB TR0
           JMP SALIR2
COM2:      MOV R6, #13
           MOV 25H, #13
           SETB TR0
SALIR2:    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

VERTIN:	   SETB RS
           SETB E
           MOV P1,#' '   
           CALL ESC
		   SETB RS
           MOV P1,#'V'   
           CALL ESC
		   SETB RS
           MOV P1,#'E'   
           CALL ESC
		   SETB RS
           MOV P1,#'R'   
           CALL ESC
		   SETB RS
           MOV P1,#'T'   
           CALL ESC
		   SETB RS
           MOV P1,#'I'   
           CALL ESC
		   SETB RS
           MOV P1,#'C'   
           CALL ESC
		   SETB RS
           MOV P1,#'A'   
           CALL ESC
		   SETB RS
           MOV P1,#'L'   
           CALL ESC
		   SETB RS
		   MOV P1,#' '
		   CALL ESC
		   RET

MANUAL23:  CLR RS
           MOV P1, #00000001   ;Limpiar Pantalla
           CALL ESC
     	   SETB RS
           SETB RS			
           SETB E
           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
		   RET

NU:		   SETB RS			
           SETB E
           MOV P1,#' '   
           CALL ESC
		   CJNE R7, #0, N1
		   SETB RS
           MOV P1,#'0'   
           CALL ESC
		   JMP SALIRNU
N1:		   CJNE R7, #1, N2
		   SETB RS
           MOV P1,#'1'   
           CALL ESC
		   JMP SALIRNU
N2:		   CJNE R7, #2, N3
		   SETB RS
           MOV P1,#'2'   
           CALL ESC
		   JMP SALIRNU
N3:		   CJNE R7, #3, N4
		   SETB RS
           MOV P1,#'3'   
           CALL ESC
		   JMP SALIRNU
N4:		   CJNE R7, #4, N5
		   SETB RS
           MOV P1,#'4'   
           CALL ESC
		   JMP SALIRNU
N5:		   CJNE R7, #5, N6
		   SETB RS
           MOV P1,#'5'   
           CALL ESC
		   JMP SALIRNU
N6:		   CJNE R7, #6, N7
		   SETB RS
           MOV P1,#'6'   
           CALL ESC
		   JMP SALIRNU
N7:		   CJNE R7, #7, N8
		   SETB RS
           MOV P1,#'7'   
           CALL ESC
		   JMP SALIRNU
N8:		   CJNE R7, #8, N9
		   SETB RS
           MOV P1,#'8'   
           CALL ESC
		   JMP SALIRNU
N9:		   CJNE R7, #9, SALIRNU
		   SETB RS
           MOV P1,#'9'   
           CALL ESC
SALIRNU:   RET

ENTER:	   SETB RS			
           SETB E
           MOV P1,#' '   
           CALL ESC
		   SETB RS			
           MOV P1,#'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -