rotacion con adcdocx
DESCRIPTION
Rotacion-con-ADCdocxTRANSCRIPT
; CONVERTIDOR ADC 0804 UTILIZANDO WR E INT DEL CONVERTIDOR
WRINT EQU P3.7
;***** RUTINA DE ROTACION
MOV A,#01H
;***** ROTACION IZQ
INICIO: MOV R3,#07
MOV P0, A
MOV R7, A ; Guarda el valor del Acumulador
CALL ADC
CALL COMPARA
CALL DELAY3
MOV A, R7 ; Regresa el valor al Acumulador
LOOP1: RL A
MOV P0, A
MOV R7, A ; Guarda el valor del Aumulador
CALL ADC
CALL COMPARA
CALL DELAY3
MOV A,R7 ; Regresa el valor del Acumulador
DJNZ R3, LOOP1
;***** ROTACION DER
MOV R4,#07
LOOP2: RR A
MOV P0,A
MOV R7,A ; Guarda el valor del Acumulador
CALL ADC
CALL COMPARA
CALL DELAY3
MOV A,R7 ; Regresa el valor del Acumulador
DJNZ R4, LOOP2
JMP INICIO
;***** RUTINA DE ADC PARA EL VALOR DEL PUERTO 1**********
ADC: SETB WRINT
CALL DELAY4
CLR WRINT
MOV R5, P1
SETB WRINT
CALL DELAY4
RET
DELAY4: MOV R6,#51 ; Tiempo minimo para la conversion.
DJNZ R6, $
RET
; TUTINA DE COMPRION DEL VALOR DEL ADC PARA ACTIVAR EL P3.0
COMPARA:MOV R1,#04H
MOV A,R5
SUBB A, R1 ; SI ES MENOR QUE ELDATO ES OSCURO Y SE ACTIVA EL CARRIE
JC NEGA
CLR P3.0 ; SI ESTA CLARO SE APAGA EL PUERTO
RET
NEGA: SETB P3.0 ; SI ESTA OSCURO SE ENCIENDE
RET
;******** RUTINAS DE RETARDO DEPENDIENDO DEL PUERTO 1
DELAY3: MOV R2,P1
SALTO2: CALL DELAY2
DJNZ R2, SALTO2
RET
DELAY2: MOV R1,#20
SALTO1: CALL DELAY1
DJNZ R1, SALTO1
RET
DELAY1: MOV R0,#200
DJNZ R0, $
RET
END