Secuenciador de 8 LED's usando el TMR0 y el conversor análogo a digital.
Por medio de un potenciometro conectado a uno de los canales del conversor análogo a digital, podemos variar la velocidad de los LED's conectados al PORTB, el valor en el potenciometro es leído por el AD y después almacenado en el TMR0.
Circuito
Código fuente
LIST P=16F886
INCLUDE P16F886.INC
ERRORLEVEL -302
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
CUENTA, PDel0, VALORAD
ENDC
ORG 0X00
GOTO CONFIGURA
ORG 0X04
GOTO INTERRUPCION
ORG 0X05
INTERRUPCION DECFSZ CUENTA,F
GOTO SALE
RLF PORTB
MOVLW .5
MOVWF CUENTA
SALE MOVF VALORAD,W
MOVWF TMR0
BCF INTCON,T0IF
RETFIE
RETAD movlw .123 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop0 clrwdt ; 1 clear watchdog
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
CONFIGURA CLRF PORTB
BANKSEL OSCCON
MOVLW B'01101100'
MOVWF OSCCON
BANKSEL ADCON1
MOVLW B'00000000' ; 7 justifica a la izq, 5 Vss ref, 4 Vdd ref
MOVWF ADCON1
BANKSEL ANSEL
MOVLW B'00000001'
MOVWF ANSEL
CLRF ANSELH
BANKSEL TRISB
MOVLW .1
MOVWF TRISA
CLRF TRISB
CLRF TRISC
BANKSEL OPTION_REG
MOVLW B'00000111'
MOVWF OPTION_REG
MOVLW B'10100000'
MOVWF INTCON
BANKSEL ADCON0
MOVLW B'11000001' ;7:6 FCR clock, 5:2 canal, 1 go, 0 AD ON
MOVWF ADCON0
BANKSEL PORTB
CLRF PORTA
CLRF PORTC
CLRF TMR0
MOVLW .1
MOVWF PORTB
MOVLW .20
MOVWF CUENTA
CICLO BSF ADCON0,GO
CALL RETAD
END_AD BTFSC ADCON0,GO
GOTO END_AD
MOVF ADRESH,W
MOVWF VALORAD
GOTO CICLO
END
Copyright 2012 edwtron
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o una version superior.
Leer la licencia GNU gpl para mas detalles.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
No hay comentarios:
Publicar un comentario