Interrupciones en los microcontroladores
Una interrupcion es un evento que hace que el micro deje lo que esta haciendo (ejecutando el programa
principal) y atienda el evento o interrupcion.
Vamos a suponer que ud esta en su trabajo(programa principal) y su jefe le hace una llamada(fuente de
interrupcion) y le pide que por favor se dirija a la sucursal de la zona sur a resolver un problema, ud
imediatamente detiene lo que esta haciendo y se dirige a la sucursal a solucionar el problema(rutina de
interrupcion), cuando termina vuelve a su oficina(programa principal).
mirando el ejemplo anterior la fuente de interrupcion es su jefe y la rutina de atencion es ir a la
sucursal y solucionar el problema.
Dependiendo del microcontrolador hay diferentes fuentes de interrupcion, veamos algunas de ellas:
- por cambio en los pines RB4, RB5, RB6 y RB7
- por desborde del TMR0
- por el modulo USART
- por la memoria EEPROM
- por cambio en el pin RB0 interrupcion externa
- por el comparador
entre otras fuentes de interrupcion.
Cuando ocurre una interrupcion el microcontrolador se dirige a la posicion de memoria 0X04H tambien
llamada "VECTOR DE INTERRUPCION" y es este lugar que debemos colocar la rutina de atencion a la
interrupcion.
org 00 ;Vector de reset
goto configura
org 0x04 ;Vector de interrupcion
; es en este lugar que escribimos la rutina de atencion a la interrupcion
goto RUTINAdeINTERRUPCION ;Nos envia a la rutina donde atenderemos la interrupcion
RUTINAdeINTERRUPCION
; Esto es lo que debe hacer segun la interrupcion que ocurra
.
.
.
.
RETFIE ;Retorna de Interrupcion
Notemos como en el ejemplo anterior cuando se termina la rutina escribimos RETFIE para salir de la
interrupcion y volver al lugar donde estaba antes de que la interrupcion se diera.
Como los microcontroladores tienen varias fuentes de interrupcion, pero un solo vector de interrupcion,
cuando estas se presenten, nosotros por programa debemos identificar el tipo de interrupcion, para esto
cada fuente de interrupcion tiene su propia bandera (Bit asociado a la fuente de interrupcion).
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
sábado, 30 de junio de 2012
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
martes, 12 de junio de 2012
Conversor Análogo a Digital con PIC 12F675
El conversor análogo a digital es un dispositivo que me permite digitalizar señales, en este caso vamos a medir el voltaje por el pin AN1 y si es mayor a 2.5 voltios activamos el LED conectado en GP2.
Circuito
QR para el celular
Código fuente
LIST P=12F675
INCLUDE P12F675.INC
ERRORLEVEL -302
; Trabajamos con un oscilador interno a 4Mhz
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
CBLOCK 0X20
d1, d2, VALOR
ENDC
ORG 00
GOTO INICIO
RET10MS ;9998 cycles
movlw 0xCF
movwf d1
movlw 0x08
movwf d2
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto Delay_0
;2 cycles
goto $+1
RETURN
INICIO NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines
MOVWF CMCON ; digitales y no del comparador del micro
BANKSEL OSCCAL
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL ; y lo calibro con el OSCCAL
BANKSEL ADCON0 ; Configuro el AD
MOVLW B'00000101' ; 7 6 5 4 3 2 1 0
MOVWF ADCON0 ; justifico derecha, no uso, no uso, Vdd, canal AN1, GO, ad ON
BANKSEL ANSEL
MOVLW .2
MOVWF ANSEL ;CONFIGURO GP1/AN1 COMO ENTRADA ANALOGA
MOVLW .2
MOVWF TRISIO
BANKSEL GPIO
CICLO CALL RET10MS
BSF ADCON0,GO ; Inicio conversion
BTFSS ADCON0,GO ; Espero a que finalice la conversion
GOTO $-1
; Conversion finalizada
BANKSEL ADRESH
MOVF ADRESH,W ; Paso el dato tomado por el conversor a W
BANKSEL VALOR
MOVWF VALOR ; Almaceno el dato
MOVLW .128 ; pregunto si el dato es mayor a .128
SUBWF VALOR,W
BTFSS STATUS,C
GOTO MENOR ; Si el dato es Menor
GOTO MAYOR ; Si el dato es Mayor
MENOR BCF GPIO,2
BSF GPIO,0
GOTO CICLO
MAYOR BSF GPIO,2
BCF GPIO,0
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".
Circuito
QR para el celular
Código fuente
LIST P=12F675
INCLUDE P12F675.INC
ERRORLEVEL -302
; Trabajamos con un oscilador interno a 4Mhz
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
CBLOCK 0X20
d1, d2, VALOR
ENDC
ORG 00
GOTO INICIO
RET10MS ;9998 cycles
movlw 0xCF
movwf d1
movlw 0x08
movwf d2
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto Delay_0
;2 cycles
goto $+1
RETURN
INICIO NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines
MOVWF CMCON ; digitales y no del comparador del micro
BANKSEL OSCCAL
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL ; y lo calibro con el OSCCAL
BANKSEL ADCON0 ; Configuro el AD
MOVLW B'00000101' ; 7 6 5 4 3 2 1 0
MOVWF ADCON0 ; justifico derecha, no uso, no uso, Vdd, canal AN1, GO, ad ON
BANKSEL ANSEL
MOVLW .2
MOVWF ANSEL ;CONFIGURO GP1/AN1 COMO ENTRADA ANALOGA
MOVLW .2
MOVWF TRISIO
BANKSEL GPIO
CICLO CALL RET10MS
BSF ADCON0,GO ; Inicio conversion
BTFSS ADCON0,GO ; Espero a que finalice la conversion
GOTO $-1
; Conversion finalizada
BANKSEL ADRESH
MOVF ADRESH,W ; Paso el dato tomado por el conversor a W
BANKSEL VALOR
MOVWF VALOR ; Almaceno el dato
MOVLW .128 ; pregunto si el dato es mayor a .128
SUBWF VALOR,W
BTFSS STATUS,C
GOTO MENOR ; Si el dato es Menor
GOTO MAYOR ; Si el dato es Mayor
MENOR BCF GPIO,2
BSF GPIO,0
GOTO CICLO
MAYOR BSF GPIO,2
BCF GPIO,0
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".
jueves, 7 de junio de 2012
Plantilla PIC 12F675
Plantilla para el microcontrolador 12F675
Un microcontrolador de 8 pines, 6 de ellos disponibles para entrada y salida, 1024 palabras de 14 bit's cada una, frecuencia máxima del oscilador igual a 20 MHz, oscilador interno de 4 MHz, característica interesante ya que no necesitaremos cristal, lo que nos ahorra dos pines, 128 Bytes de EEPROM, 64 Bytes de RAM.
Importante:
Estamos acostumbrados a que los puertos de los PIC's son llamados PORTx, en los micros de 8 pines son llamados GPIO y los pines GP0, GP1, GP2, GP3, GP4 y GP5
Plantilla
LIST P=12F675
INCLUDE P12F675.INC
ERRORLEVEL -302
; Trabajamos con un oscilador interno a 4Mhz
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
CBLOCK 0X20
ENDC
ORG 00
GOTO CONFIGURA
CONFIGURA NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines, no uso el comparador
MOVWF CMCON ; digitales
BANKSEL OSCCAL
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL
CLRF TRISIO
BANKSEL GPIO
INICIO
GOTO INICIO
END
; *
; * Copyright 2012 EDWTRON
; *
; * Este rpograma es software libre; usted puede redistribuirlo y/o modificarlo
; * bajo los terminos de la GNU licencia publica general tal y como es publicada
; * por la fundacion de software libre; bajo la version 2 de la licencia, o
; * una version superior.
; * Leer la licencia GNU gpl para mas detalles.
; * This program is free software; you can redistribute it and/or modify
; * it under the terms of the GNU General Public License as published by
; * the Free Software Foundation; either version 2 of the License, or
; * (at your option) any later version.
; *
; * This program is distributed in the hope that it will be useful,
; * but WITHOUT ANY WARRANTY; without even the implied warranty of
; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; * GNU General Public License for more details.
; *
; * You should have received a copy of the GNU General Public License
; * along with this program; if not, write to the Free Software
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
; * MA 02110-1301, USA.
; *
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".
Un microcontrolador de 8 pines, 6 de ellos disponibles para entrada y salida, 1024 palabras de 14 bit's cada una, frecuencia máxima del oscilador igual a 20 MHz, oscilador interno de 4 MHz, característica interesante ya que no necesitaremos cristal, lo que nos ahorra dos pines, 128 Bytes de EEPROM, 64 Bytes de RAM.
Importante:
Estamos acostumbrados a que los puertos de los PIC's son llamados PORTx, en los micros de 8 pines son llamados GPIO y los pines GP0, GP1, GP2, GP3, GP4 y GP5
Plantilla
LIST P=12F675
INCLUDE P12F675.INC
ERRORLEVEL -302
; Trabajamos con un oscilador interno a 4Mhz
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
CBLOCK 0X20
ENDC
ORG 00
GOTO CONFIGURA
CONFIGURA NOP
CLRF GPIO
MOVLW B'00000111' ; 07H Configuro GP1, GP2, GP3 como pines, no uso el comparador
MOVWF CMCON ; digitales
BANKSEL OSCCAL
CALL 3FFH ; Obtengo el valor de calibracion del oscilador
MOVWF OSCCAL
CLRF TRISIO
BANKSEL GPIO
INICIO
GOTO INICIO
END
; *
; * Copyright 2012 EDWTRON
; *
; * Este rpograma es software libre; usted puede redistribuirlo y/o modificarlo
; * bajo los terminos de la GNU licencia publica general tal y como es publicada
; * por la fundacion de software libre; bajo la version 2 de la licencia, o
; * una version superior.
; * Leer la licencia GNU gpl para mas detalles.
; * This program is free software; you can redistribute it and/or modify
; * it under the terms of the GNU General Public License as published by
; * the Free Software Foundation; either version 2 of the License, or
; * (at your option) any later version.
; *
; * This program is distributed in the hope that it will be useful,
; * but WITHOUT ANY WARRANTY; without even the implied warranty of
; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; * GNU General Public License for more details.
; *
; * You should have received a copy of the GNU General Public License
; * along with this program; if not, write to the Free Software
; * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
; * MA 02110-1301, USA.
; *
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:
12F675,
assembler,
bit's,
circuito integrado,
ensamblador,
memoria,
microchip,
microcontrolador,
MPLAB IDE,
plantilla
sábado, 2 de junio de 2012
Sobre la Multiplexion
Para entender la multiplexion que hemos usado en los anteriores proyectos y entradas de este blog
http://taller-electronica.blogspot.com/2012/06/es-una-tecnica-que-se-usa-para.html
http://taller-electronica.blogspot.com/2012/06/es-una-tecnica-que-se-usa-para.html
Etiquetas:
assembler,
display,
ensamblador,
microchip,
microcontrolador,
multiplexion,
programacion
Contador ascendente y descendente con pulsadores
El circuito tiene dos pulsadores, ascendente y descendente
Circuito esquemático
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
RET_10MS movlw .8 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .120 ; 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
CLRF PORTB
CLRF UMIL
CLRF CENTENAS
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
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
; hay que cacharrear
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
DOWN CALL VER
DECF UNIDADES,F
MOVLW .255
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF UNIDADES
DECF DECENAS,F
MOVLW .255
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF DECENAS
DECF CENTENAS,F
MOVLW .255
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF CENTENAS
DECF UMIL,F
MOVLW .255
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF UMIL
GOTO INICIO
; hay que cacharrear
END
Circuito esquemático
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
RET_10MS movlw .8 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .120 ; 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
CLRF PORTB
CLRF UMIL
CLRF CENTENAS
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
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
; hay que cacharrear
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
DOWN CALL VER
DECF UNIDADES,F
MOVLW .255
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF UNIDADES
DECF DECENAS,F
MOVLW .255
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF DECENAS
DECF CENTENAS,F
MOVLW .255
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF CENTENAS
DECF UMIL,F
MOVLW .255
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
MOVLW .9
MOVWF UMIL
GOTO INICIO
; hay que cacharrear
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:
display,
ensamblador,
microchip,
microcontrolador,
multiplexion
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
Contador de 0 a 9999 con PIC 16f886
Contador ascendente hasta 9999, cuando la cuenta llega a 9999 pasa a 0.
Seria una buena practica que se le implementara un pulsador para contar, y despues de eso implementarlo con dos pulsadores para que cuente de forma ascendente y descendente.
Video de la implementacion
Enlace para la descarga del video http://www.youtube.com/watch?v=8qTBIZgpTLU
Diagrama esquemático
Codigo fuente para el PIC
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, CENTENAS, UMIL
ENDC
;hay que caharriar
ORG 00
GOTO CONFIGURA
;-------------------------------------------------------------
; 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'
;hay que caharriar
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 ;activo el display unidad
MOVF DECENAS,W ;cargo el valor de las decenas
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
;hay que caharriar
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 PORTC
CLRF UMIL
CLRF CENTENAS
CLRF DECENAS
CLRF UNIDADES
;hay que caharriar
INICIO CALL VER
INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
;hay que caharriar
END
Seria una buena practica que se le implementara un pulsador para contar, y despues de eso implementarlo con dos pulsadores para que cuente de forma ascendente y descendente.
Video de la implementacion
Enlace para la descarga del video http://www.youtube.com/watch?v=8qTBIZgpTLU
Diagrama esquemático
Codigo fuente para el PIC
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, CENTENAS, UMIL
ENDC
;hay que caharriar
ORG 00
GOTO CONFIGURA
;-------------------------------------------------------------
; 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'
;hay que caharriar
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 ;activo el display unidad
MOVF DECENAS,W ;cargo el valor de las decenas
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
;hay que caharriar
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 PORTC
CLRF UMIL
CLRF CENTENAS
CLRF DECENAS
CLRF UNIDADES
;hay que caharriar
INICIO CALL VER
INCF UNIDADES,F
MOVLW .10
XORWF UNIDADES,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF UNIDADES
INCF DECENAS,F
MOVLW .10
XORWF DECENAS,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF DECENAS
INCF CENTENAS,F
MOVLW .10
XORWF CENTENAS,W
BTFSS STATUS,Z
GOTO INICIO
;hay que caharriar
CLRF CENTENAS
INCF UMIL,F
MOVLW .10
XORWF UMIL,W
BTFSS STATUS,Z
GOTO INICIO
CLRF UMIL
GOTO INICIO
;hay que caharriar
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:
16f886,
assembler,
contador,
ensamblador,
microchip,
microcontrolador
Suscribirse a:
Entradas (Atom)