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".
Translate, Traductor
Mostrando entradas con la etiqueta fusibles. Mostrar todas las entradas
Mostrando entradas con la etiqueta fusibles. Mostrar todas las entradas
viernes, 6 de julio de 2012
Secuenciador Variable usando el TMR0 y el AD
Etiquetas:
16f886,
analogo,
assembler,
conversor,
ensamblador,
fusibles,
interrupcion,
interrupciones,
LED,
microchip,
microcontrolador,
PIC,
secuenciador,
temporizador,
timer,
TMR0
jueves, 14 de junio de 2012
Conversor Analogo Adigital con PIC 16F886
En una entrada anterior usamos el conversor análogo a digital del microcontrolador PIC 12f675 ( http://xorwf.blogspot.com/2012/06/conversor-analogo-digital-con-pic.html ), esta es para usar el conversor del microcontrolador PIC 16F886.
El programa mide el voltaje entregado por el potenciometro, si es menor a un voltio, activa el pin RC0 y desactiva el pin RC7, si es mayor a un voltio activa el RC7 y desactiva el RC0.
Circuito
En el caso de querer trabajar con algún sensor análogo, como una fotoresistencia, un fotodiodo(infrarojo), entre otros, simplemente cambiamos el potenciometro por el sensor que elegimos y cambiamos el valor de la comparación, que para este caso es .51 (decimal) que equivale a un voltio medido por el AD.
QR para el celular
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
PDel0, VALORAD
ENDC
ORG 00
GOTO CONFIGURA
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 TRISA
MOVLW B'00000001'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BANKSEL ANSEL
MOVLW B'00000001'
MOVWF ANSEL
CLRF ANSELH
BANKSEL ADCON0
MOVLW B'11000001' ;7:6 FCR clock, 5:2 canal, 1 go, 0 AD ON
MOVWF ADCON0
CLRF PORTC
INICIO BSF ADCON0,GO
CALL RETAD
END_AD BTFSC ADCON0,GO
GOTO END_AD
MOVF ADRESH,W
MOVWF VALORAD
MOVLW .51 ;Pregunto si el valor medido por el AD es menor a 1 V
SUBWF VALORAD,W
BTFSS STATUS,C
GOTO MENOR
GOTO MAYOR
MAYOR BCF PORTC,0
BSF PORTC,7
GOTO INICIO
MENOR BCF PORTC,7
BSF PORTC,0
GOTO INICIO
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".
El programa mide el voltaje entregado por el potenciometro, si es menor a un voltio, activa el pin RC0 y desactiva el pin RC7, si es mayor a un voltio activa el RC7 y desactiva el RC0.
Circuito
En el caso de querer trabajar con algún sensor análogo, como una fotoresistencia, un fotodiodo(infrarojo), entre otros, simplemente cambiamos el potenciometro por el sensor que elegimos y cambiamos el valor de la comparación, que para este caso es .51 (decimal) que equivale a un voltio medido por el AD.
QR para el celular
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
PDel0, VALORAD
ENDC
ORG 00
GOTO CONFIGURA
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 TRISA
MOVLW B'00000001'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BANKSEL ANSEL
MOVLW B'00000001'
MOVWF ANSEL
CLRF ANSELH
BANKSEL ADCON0
MOVLW B'11000001' ;7:6 FCR clock, 5:2 canal, 1 go, 0 AD ON
MOVWF ADCON0
CLRF PORTC
INICIO BSF ADCON0,GO
CALL RETAD
END_AD BTFSC ADCON0,GO
GOTO END_AD
MOVF ADRESH,W
MOVWF VALORAD
MOVLW .51 ;Pregunto si el valor medido por el AD es menor a 1 V
SUBWF VALORAD,W
BTFSS STATUS,C
GOTO MENOR
GOTO MAYOR
MAYOR BCF PORTC,0
BSF PORTC,7
GOTO INICIO
MENOR BCF PORTC,7
BSF PORTC,0
GOTO INICIO
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".
Etiquetas:
16f886,
AD,
analogo,
assembler,
conversor,
digital,
ensamblador,
fusibles,
microchip,
microcontrolador
sábado, 2 de junio de 2012
Contador de 0 a 9999 con pulsador
Cada vez que se pulse se incrementa una unidad y se muestra en los displays
Circuito esquematico
Código fuente
LIST P=16F886
INCLUDE P16F886.INC
ERRORLEVEL -302
; hay que cacharrear
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
PDel0, PDel1, DECENAS, UNIDADES, CENTENAS, UMIL
ENDC
ORG 00
GOTO CONFIGURA
; hay que cacharrear
;-------------------------------------------------------------
; Code generated by PDEL ver 1.0 on 10/13/2010 at 10:24:44 PM
; Description: Waits 10000 cycles
;-------------------------------------------------------------
RET_10MS movlw .8 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .249 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111100'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'
MOSTRAR CLRF PORTC
MOVF UNIDADES,W ;cargo el valor de las unidades
CALL TABLA
BSF PORTC,5 ;activo el display unidad
MOVWF PORTB
CALL RET_10MS
BCF PORTC,5
MOVF DECENAS,W
CALL TABLA
BSF PORTC,4
MOVWF PORTB
CALL RET_10MS
BCF PORTC,4
MOVF CENTENAS,W
CALL TABLA
BSF PORTC,3
MOVWF PORTB
CALL RET_10MS
BCF PORTC,3
MOVF UMIL,W
CALL TABLA
MOVWF PORTB
BSF PORTC,2
CALL RET_10MS
BCF PORTC,2
RETURN
VER CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR ;LOGRO UN RETARDO DE 160ms
RETURN
CONFIGURA NOP
BANKSEL ANSEL ;paso al banco 3
CLRF ANSEL
CLRF ANSELH
BANKSEL TRISB
MOVLW B'01101100'
MOVWF OSCCON
MOVLW B'00000011'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BANKSEL PORTB ;paso al banco 0
; hay que cacharrear
CLRF PORTB
CLRF UMIL
CLRF CENTENAS
CLRF DECENAS
CLRF UNIDADES
INICIO CALL MOSTRAR
BTFSS PORTA,0
GOTO INICIO
; hay que cacharrear
CALL VER
INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
END
Circuito esquematico
Código fuente
LIST P=16F886
INCLUDE P16F886.INC
ERRORLEVEL -302
; hay que cacharrear
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
PDel0, PDel1, DECENAS, UNIDADES, CENTENAS, UMIL
ENDC
ORG 00
GOTO CONFIGURA
; hay que cacharrear
;-------------------------------------------------------------
; Code generated by PDEL ver 1.0 on 10/13/2010 at 10:24:44 PM
; Description: Waits 10000 cycles
;-------------------------------------------------------------
RET_10MS movlw .8 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .249 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111100'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'
MOSTRAR CLRF PORTC
MOVF UNIDADES,W ;cargo el valor de las unidades
CALL TABLA
BSF PORTC,5 ;activo el display unidad
MOVWF PORTB
CALL RET_10MS
BCF PORTC,5
MOVF DECENAS,W
CALL TABLA
BSF PORTC,4
MOVWF PORTB
CALL RET_10MS
BCF PORTC,4
MOVF CENTENAS,W
CALL TABLA
BSF PORTC,3
MOVWF PORTB
CALL RET_10MS
BCF PORTC,3
MOVF UMIL,W
CALL TABLA
MOVWF PORTB
BSF PORTC,2
CALL RET_10MS
BCF PORTC,2
RETURN
VER CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR ;LOGRO UN RETARDO DE 160ms
RETURN
CONFIGURA NOP
BANKSEL ANSEL ;paso al banco 3
CLRF ANSEL
CLRF ANSELH
BANKSEL TRISB
MOVLW B'01101100'
MOVWF OSCCON
MOVLW B'00000011'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BANKSEL PORTB ;paso al banco 0
; hay que cacharrear
CLRF PORTB
CLRF UMIL
CLRF CENTENAS
CLRF DECENAS
CLRF UNIDADES
INICIO CALL MOSTRAR
BTFSS PORTA,0
GOTO INICIO
; hay que cacharrear
CALL VER
INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
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".
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".
Etiquetas:
assembler,
compilar,
contador,
display,
ensamblador,
fusibles,
microchip,
microcontrolador,
PIC
martes, 29 de mayo de 2012
Contador de 0 a 99 con pulsadores
El contador es de 0 a 99 usando la tecnica de la multiplexion, tiene un pulsador para la cuenta ascendente y otro para la cuenta descendente.
IMPORTANTE recomiendo comparar este codigo con el que no tiene pulsadores.
Video de la implementacion
Video de la implementacion
y el codigo fuente
LIST P=16F886
INCLUDE P16F886.INC
ERRORLEVEL -302
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOR_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
PDel0, PDel1, DECENAS, UNIDADES
ENDC
ORG 00
GOTO CONFIGURA
RET_10MS movlw .8 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .249 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111100'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'
MOSTRAR MOVF UNIDADES,W ;cargo el valor de las unidades
CALL TABLA
BSF PORTC,5 ;activo el display unidad
BCF PORTC,4 ;desactivo el display decena
MOVWF PORTB
CALL RET_10MS
MOVF DECENAS,W ;cargo el valor de las decenas
CALL TABLA
BCF PORTC,5 ;desactivo el display unidad
BSF PORTC,4 ;activo el display decena
MOVWF PORTB
CALL RET_10MS
RETURN
VER CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR
CALL MOSTRAR ;LOGRO UN RETARDO DE 160ms
RETURN
CONFIGURA NOP
BANKSEL ANSEL ;paso al banco 3
CLRF ANSEL
CLRF ANSELH
BANKSEL TRISB
MOVLW B'01101100'
MOVWF OSCCON
MOVLW B'00000011'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BANKSEL PORTB ;paso al banco 0
CLRF PORTB
CLRF DECENAS
CLRF UNIDADES
INICIO CALL MOSTRAR
BTFSC PORTA,0
GOTO UP
BTFSC PORTA,1
GOTO DOWN
GOTO INICIO
UP CALL VER
INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSC STATUS,Z
GOTO INC_DECENAS
CALL MOSTRAR
GOTO INICIO
INC_DECENAS CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSC STATUS,Z
CLRF DECENAS
CALL MOSTRAR
GOTO INICIO
DOWN CALL VER
DECF UNIDADES,F
MOVLW .255
XORWF UNIDADES,W
BTFSC STATUS,Z
GOTO DEC_DECENAS
CALL MOSTRAR
GOTO INICIO
DEC_DECENAS MOVLW .9
MOVWF UNIDADES
DECF DECENAS,F
MOVLW .255
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF DECENAS
CALL MOSTRAR
GOTO INICIO
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".
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".
Etiquetas:
16f886,
display,
ensamblador,
fusibles,
microchip,
microcontrolador,
multiplexion,
PIC,
programacion
miércoles, 13 de octubre de 2010
plantilla para pic de 8 pines el P12F629
Plantilla para un PIC que solo tiene 8 pines de los cuales podemos usar 6 pines, entre las diferencias con los pics que estamos acostumbrados a manejar es que el puerto es llamado GPIO y el para entradas o salidas digitales es el TRISIO. Como tiene comparadores, hay que configurar sl CMCON para que los pines finciones como digitales. Solo tiene dos bancos de memoria, es un PIC relativamente muy facil de usar.
LIST P=12F629
INCLUDE P12F629.INC
ERRORLEVEL -302
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
CBLOCK 0X20
;espacio para la declaracion de variables
ENDC
ORG 00
GOTO CONFIGURA
;espacio para las subrrutinas
CONFIGURA NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines
MOVWF CMCON ; digitales
BANKSEL OSCCAL ;para calibrar el oscilador interno
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL
CLRF TRISIO
BANKSEL GPIO
;Programa principal
CICLO
GOTO CICLO
END
Etiquetas:
assembler,
bit's,
circuito integrado,
ensamblador,
fusibles,
microchip,
microcontrolador,
P12F629,
PIC,
plantilla,
software
Plantilla para programar con el 16f883
Esta es una plantilla para trabajar con el PIC 16F883 (y toda su familia), tiene diferencias con los viejos P16F873A (y su familia) en los bits de configuración, y que ya los pines digitales y análogos no se configuran en el ADCON1, ya se configuran en el ANSEL (para el porta) y ANSELH (para el portb), y se diferencia del P16F88 en que el ANSEL esta en el banco 1 de memoria, mientras que en el P16F883 están en el banco 3 de memoria.
Hay que tener en cuenta que tienes mas diferencias, como que el P16F883 tiene oscilador interno, entre otras, pero como siempre digo, "Hay que leer el manual".
LIST P=16F883
INCLUDE P16F883.INC
ERRORLEVEL -302
__CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
__CONFIG _CONFIG2, _WRT_OFF
CBLOCK 0X20
ENDC
ORG 00
GOTO CONFIGURA
;LUGAR PARA SUBRRUTINAS
CONFIGURA NOP
BANKSEL ANSEL ;paso al banco 3
CLRF ANSEL ;Configura el porta como digital
CLRF ANSELH ;Configura el portb como digital
BANKSEL TRISB ;paso al banco 1
CLRF ANSEL
MOVLW 0X00
MOVWF TRISA
MOVLW 0X00
MOVWF TRISB
MOVLW 0X00
MOVWF TRISC
BANKSEL PORTB ;paso al banco 0
;PROGRAMA PRINCIPAL
CICLO
GOTO CICLO
END
Hay que tener en cuenta que tienes mas diferencias, como que el P16F883 tiene oscilador interno, entre otras, pero como siempre digo, "Hay que leer el manual".
LIST P=16F883
INCLUDE P16F883.INC
ERRORLEVEL -302
__CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
__CONFIG _CONFIG2, _WRT_OFF
CBLOCK 0X20
ENDC
ORG 00
GOTO CONFIGURA
;LUGAR PARA SUBRRUTINAS
CONFIGURA NOP
BANKSEL ANSEL ;paso al banco 3
CLRF ANSEL ;Configura el porta como digital
CLRF ANSELH ;Configura el portb como digital
BANKSEL TRISB ;paso al banco 1
CLRF ANSEL
MOVLW 0X00
MOVWF TRISA
MOVLW 0X00
MOVWF TRISB
MOVLW 0X00
MOVWF TRISC
BANKSEL PORTB ;paso al banco 0
;PROGRAMA PRINCIPAL
CICLO
GOTO CICLO
END
viernes, 13 de agosto de 2010
Fusibles de configuracion "Bit's de configuracion" de los PIC's
Los bit's de configuracion o mas comunmente llamados "fusibles" permiten confugurar ciertas funciones en los microcontroladores PIC, como el tipo de cristal para el oscilador, permiten proteger el codigo en el micro, entre muchas funciones. La cantidad de funciones que se pueden configurar con los fusibles dependen del microcontrolador, si tenemos en el 16F84A 4 funciones, en el 16F88 son alrededor de 13 funciones.
Bueno y para que sirven?
Como lo dije antes son para configurar algunas funciones del micro, como el tipo de oscilador, la proteccion de codigo, habilitar el perro guardian ( por que si no este los muerde), habilitar el reset maestro, habilitar un reset inicial, habilitar reset por bajo voltage en la fuente, y otros que como les dije depende del micro usado.
Ahhh y cuando se usan??
En el momento en que se quiere programar el micro se le deben configurar los fusibles ( esto es usando un software como el WINPIC800, me parece necesario agradecer a los creadores de este software quienes nos permiten descargarlo y usarlo sin ningun problema, www.winpic800.com, GRACIAS!!!!!!) y si estamos usando alguno de los programadores de MICROCHIP como el pickit2 o el pickit3 debemos escribir la configuracion de estos fusibles en la cabecera de nuestro fuente antes de compilar.
Como se que fusibles usa mi pequeño monstruo?
Como siempre digo "pues en el manual del micro", jeje suena obvio, y los podes obtener del fichero que incluimos en la cabecera del fuente, el P16F88.INC por ejemplo, que se encuentra en la carpeta "MPASM suite" que esta dentro de la carpeta "microchip" donde instalamos el MPLAB, ojo que el nombre del fichero depende del micro.
De los ficheros antes mencionados obtube lo siguiente:
Para el 16F84A
_CP_ON EQU H'000F'
_CP_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_PWRTE_OFF EQU H'3FFF'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LP_OSC EQU H'3FFC'
_XT_OSC EQU H'3FFD'
_HS_OSC EQU H'3FFE'
_RC_OSC EQU H'3FFF'
de donde se arma nuestra palabra de configuracion anteponiendo la directiva "__CONFIG"
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
Que es lo que debemos poner en la cabecera del fuente.
Aqui va la del 16F88
_CONFIG1 EQU H'2007'
_CONFIG2 EQU H'2008'
;Configuration Byte 1 Options
_CP_ALL EQU H'1FFF'
_CP_OFF EQU H'3FFF'
_CCP1_RB0 EQU H'3FFF'
_CCP1_RB3 EQU H'2FFF'
_DEBUG_OFF EQU H'3FFF'
_DEBUG_ON EQU H'37FF'
_WRT_PROTECT_OFF EQU H'3FFF' ;No program memory write protection
_WRT_PROTECT_256 EQU H'3DFF' ;First 256 program memory protected
_WRT_PROTECT_2048 EQU H'3BFF' ;First 2048 program memory protected
_WRT_PROTECT_ALL EQU H'39FF' ;All of program memory protected
_CPD_ON EQU H'3EFF'
_CPD_OFF EQU H'3FFF'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_MCLR_ON EQU H'3FFF'
_MCLR_OFF EQU H'3FDF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_EXTRC_CLKOUT EQU H'3FFF'
_EXTRC_IO EQU H'3FFE'
_INTRC_CLKOUT EQU H'3FFD'
_INTRC_IO EQU H'3FFC'
_EXTCLK EQU H'3FEF'
_HS_OSC EQU H'3FEE'
_XT_OSC EQU H'3FED'
_LP_OSC EQU H'3FEC'
;Configuration Byte 2 Options
_IESO_ON EQU H'3FFF'
_IESO_OFF EQU H'3FFD'
_FCMEN_ON EQU H'3FFF'
_FCMEN_OFF EQU H'3FFE'
Si necesitan de otro micro la pueden consultar el el fichero del micro como les comente antes, ahhh bueno pues!!!! me pueden escribir yo se las pongo aqui.
Bueno y para que sirven?
Como lo dije antes son para configurar algunas funciones del micro, como el tipo de oscilador, la proteccion de codigo, habilitar el perro guardian ( por que si no este los muerde), habilitar el reset maestro, habilitar un reset inicial, habilitar reset por bajo voltage en la fuente, y otros que como les dije depende del micro usado.
Ahhh y cuando se usan??
En el momento en que se quiere programar el micro se le deben configurar los fusibles ( esto es usando un software como el WINPIC800, me parece necesario agradecer a los creadores de este software quienes nos permiten descargarlo y usarlo sin ningun problema, www.winpic800.com, GRACIAS!!!!!!) y si estamos usando alguno de los programadores de MICROCHIP como el pickit2 o el pickit3 debemos escribir la configuracion de estos fusibles en la cabecera de nuestro fuente antes de compilar.
Como se que fusibles usa mi pequeño monstruo?
Como siempre digo "pues en el manual del micro", jeje suena obvio, y los podes obtener del fichero que incluimos en la cabecera del fuente, el P16F88.INC por ejemplo, que se encuentra en la carpeta "MPASM suite" que esta dentro de la carpeta "microchip" donde instalamos el MPLAB, ojo que el nombre del fichero depende del micro.
De los ficheros antes mencionados obtube lo siguiente:
Para el 16F84A
_CP_ON EQU H'000F'
_CP_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_PWRTE_OFF EQU H'3FFF'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LP_OSC EQU H'3FFC'
_XT_OSC EQU H'3FFD'
_HS_OSC EQU H'3FFE'
_RC_OSC EQU H'3FFF'
de donde se arma nuestra palabra de configuracion anteponiendo la directiva "__CONFIG"
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
Que es lo que debemos poner en la cabecera del fuente.
Aqui va la del 16F88
_CONFIG1 EQU H'2007'
_CONFIG2 EQU H'2008'
;Configuration Byte 1 Options
_CP_ALL EQU H'1FFF'
_CP_OFF EQU H'3FFF'
_CCP1_RB0 EQU H'3FFF'
_CCP1_RB3 EQU H'2FFF'
_DEBUG_OFF EQU H'3FFF'
_DEBUG_ON EQU H'37FF'
_WRT_PROTECT_OFF EQU H'3FFF' ;No program memory write protection
_WRT_PROTECT_256 EQU H'3DFF' ;First 256 program memory protected
_WRT_PROTECT_2048 EQU H'3BFF' ;First 2048 program memory protected
_WRT_PROTECT_ALL EQU H'39FF' ;All of program memory protected
_CPD_ON EQU H'3EFF'
_CPD_OFF EQU H'3FFF'
_LVP_ON EQU H'3FFF'
_LVP_OFF EQU H'3F7F'
_BODEN_ON EQU H'3FFF'
_BODEN_OFF EQU H'3FBF'
_MCLR_ON EQU H'3FFF'
_MCLR_OFF EQU H'3FDF'
_PWRTE_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_EXTRC_CLKOUT EQU H'3FFF'
_EXTRC_IO EQU H'3FFE'
_INTRC_CLKOUT EQU H'3FFD'
_INTRC_IO EQU H'3FFC'
_EXTCLK EQU H'3FEF'
_HS_OSC EQU H'3FEE'
_XT_OSC EQU H'3FED'
_LP_OSC EQU H'3FEC'
;Configuration Byte 2 Options
_IESO_ON EQU H'3FFF'
_IESO_OFF EQU H'3FFD'
_FCMEN_ON EQU H'3FFF'
_FCMEN_OFF EQU H'3FFE'
y la palabra seria algo como esto:
__CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;Program Configuration Register 2
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
Si necesitan de otro micro la pueden consultar el el fichero del micro como les comente antes, ahhh bueno pues!!!! me pueden escribir yo se las pongo aqui.
Etiquetas:
16F84A,
16F88,
bit's,
cristal,
fusibles,
memoria,
microchip,
microcontrolador,
MPLAB IDE,
oscilador,
perro guardian
Suscribirse a:
Entradas (Atom)