sublw 0x02 ;si el valor del puerto A es 0x02 implemento efecto_tres
btfsc status,z
goto efecto_tres
Además de los errores que señala Killerjc, veo que estás compilando con la opción "Case Sensitive" activada.
Eso hace que en nombres como status,z,trisa... te dé error pues en el include están definidos en mayúscula.
O bien cancelas esa opción o pasás esos nombres a mayúscula.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres
efecto_cuatro
efecto_cinco
efecto_seis
efecto_siete
efecto_ocho
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
...............
Insertá igual las etiquetas que faltan, asì al menos te va a compilar y podés ir verificando el código. Después vas agregando de a uno los efectos.
Algo así:Código: [Seleccionar];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres
efecto_cuatro
efecto_cinco
efecto_seis
efecto_siete
efecto_ocho
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
...............
Insertá igual las etiquetas que faltan, asì al menos te va a compilar y podés ir verificando el código. Después vas agregando de a uno los efectos.
Algo así:Código: [Seleccionar];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres
efecto_cuatro
efecto_cinco
efecto_seis
efecto_siete
efecto_ocho
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
...............
este es el código completo con error en bloque 2, retardo duplicado
include "p16f84a.inc" ;En esta linea se especifica la biblioteca que incluye los registros definidos
radix hex ; Esta linea indica litelares(constantes) expresados en formato hexadecimal
errorlevel -302 ; Turn off banking message
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; igualdades de la CPU y el mapa de memoria;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
reg equ 0x0c
con1 equ 0x0d
con2 equ 0x0e
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;; inicio del programa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0
goto inicio
inicio bsf STATUS,RP0 ; cambio al banco 1 para configurar el pic
movlw 0xff ;puerto A como entrada
movwf trisa ; puerto A como entrada
movlw 0x00 ;puerto B como salida
movwf trisb ;puerto B como salida
bcf status,rp0 ;cambio al banco 0
clrf portb ;apago los leds a la salida
clrf con1 ;valor inicial de contador 1 igual a 0x00
clrf con2 ;valor inicial de contador 2 igual a 0x00
;;;;;;;;;;;;;;;;;;;;;; Lectura del puerto A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
leer:
movf porta,w
sublw 0x00 ;si el valor del puerto A es 0x00 implemento efecto_uno
btfsc status,z
goto efecto_uno
movf porta,w
sublw 0x01 ;si el valor del puerto A es 0x01 implemento efecto_dos
btfsc status,z
goto efecto_dos
movf porta,w
sublw 0x02 ;si el valor del puerto A es 0x02 implemento efecto_tres
btfsc status,z
goto efecto_tres
movf porta,w
sublw 0x03 ;si el valor del puerto A es 0x03 implemento efecto_cuatro
btfsc status,z
goto efecto_cuatro
movf porta,w
sublw 0x04 ;si el valor del puerto A es 0x04 implemento efecto_cinco
btfsc status,z
goto efecto_cinco
movf porta,w
sublw 0x05 ;si el valor del puerto A es 0x05 implemento efecto_seis
btfsc status,z
goto efecto_seis
movf porta,w
sublw 0x06 ;si el valor del puerto A es 0x06 implemento efecto_siete
btfsc status,z
goto efecto_siete
movf porta,w
sublw 0x07 ;si el valor del puerto A es 0x07 implemento efecto_ocho
btfsc status,z
goto efecto_ocho
goto leer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_uno:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_uno:
decfsz reg,f
goto fx_uno
goto leer
fx_uno:
movf reg,w
call tabla_uno
movwf portb
call retardo
goto leo_uno
tabla_uno:
addwf pcl,f ;;; tabla de secuencia de efecto_uno
return
retlw b'01111111'
retlw b'10111111'
retlw b'11011111'
retlw b'11101111'
retlw b'11110111'
retlw b'11111011'
retlw b'11111101'
retlw b'11111110'
retardo:
decfsz con1,f ;; bloque retardo
goto retardo
decfsz con2,f
goto retardo
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_dos:
decfsz reg,f
goto fx_dos
goto leer
fx_dos:
movf reg,w
call tabla_dos
movwf portb
call retardo
goto leo_dos
tabla_dos:
addwf pcl,f ;;; tabla de secuencia de efecto_dos
return
retlw b'01011011'
retlw b'10101011'
retlw b'11011011'
retlw b'11101101'
retlw b'01110111'
retlw b'01011011'
retlw b'10101101'
retlw b'01110110'
retardo:
decfsz con1,f ;; bloque retardo
goto retardo
decfsz con2,f
goto retardo
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_tres:
decfsz reg,f
goto fx_tres
goto leer
fx_tres:
movf reg,w
call tabla_tres
movwf portb
call retardo
goto leo_tres
tabla_tres:
addwf pcl,f ;;; tabla de secuencia de efecto_tres
return
retlw b'11011010'
retlw b'00101111'
retlw b'01011010'
retlw b'00101101'
retlw b'00110110'
retlw b'11011010'
retlw b'10101110'
retlw b'11010111'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_cuatro:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_cuatro:
decfsz reg,f
goto fx_cuatro
goto leer
fx_cuatro:
movf reg,w
call tabla_cuatro
movwf portb
call retardo
goto leo_cuatro
tabla_cuatro:
addwf pcl,f ;;; tabla de secuencia de efecto_cuatro
return
retlw b'01011011'
retlw b'10101011'
retlw b'11011011'
retlw b'10101101'
retlw b'10110011'
retlw b'11011011'
retlw b'10100110'
retlw b'01010011'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_cinco:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_cinco:
decfsz reg,f
goto fx_cinco
goto leer
fx_cinco:
movf reg,w
call tabla_cuatro
movwf portb
call retardo
goto leo_cinco
tabla_cinco:
addwf pcl,f ;;; tabla de secuencia de efecto_cinco
return
retlw b'11011010'
retlw b'00111000'
retlw b'11011010'
retlw b'00101011'
retlw b'10111010'
retlw b'01001011'
retlw b'10100101'
retlw b'11011010'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_seis:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_seis:
decfsz reg,f
goto fx_seis
goto leer
fx_seis:
movf reg,w
call tabla_seis
movwf portb
call retardo
goto leo_seis
tabla_seis:
addwf pcl,f ;;; tabla de secuencia de efecto_seis
return
retlw b'11011011'
retlw b'01101010'
retlw b'01011011'
retlw b'10101010'
retlw b'00101010'
retlw b'11011011'
retlw b'00110101'
retlw b'01011011'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_siete:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_siete:
decfsz reg,f
goto fx_siete
goto leer
fx_siete:
movf reg,w
call tabla_siete
movwf portb
call retardo
goto leo_siete
tabla_siete:
addwf pcl,f ;;; tabla de secuencia de efecto_siete
return
retlw b'01011010'
retlw b'10101011'
retlw b'11011010'
retlw b'00101011'
retlw b'10100011'
retlw b'01011010'
retlw b'10110100'
retlw b'11010010'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_ocho:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_ocho:
decfsz reg,f
goto fx_ocho
goto leer
fx_ocho:
movf reg,w
call tabla_siete
movwf portb
call retardo
goto leo_ocho
tabla_ocho:
addwf pcl,f ;;; tabla de secuencia de efecto_siete
return
retlw b'11011011'
retlw b'00101010'
retlw b'11011010'
retlw b'10101011'
retlw b'00101010'
retlw b'11011011'
retlw b'00110101'
retlw b'01011010'
end
veo que en cada bloque hace falta un retardo cierto :?:
....
veo que en cada bloque hace falta un retardo cierto :?:
....
veo que en cada bloque hace falta un retardo cierto :?:
Todo lo contrario, te sobran. La rutina "retardo" la estás definiendo dos veces (en la líne 84 y en la 120)
...
en el primer bloque uno coloque la la rutina de retardo, y si elimino la rutina del bloque 2, cuando compilo no genera error, mira la rutina de retardo en bloque uno y asi se debe estar en los demás bloques o no?
Insertá igual las etiquetas que faltan, asì al menos te va a compilar y podés ir verificando el código. Después vas agregando de a uno los efectos.
Algo así:Código: [Seleccionar];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres
efecto_cuatro
efecto_cinco
efecto_seis
efecto_siete
efecto_ocho
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
...............
este es el código completo sin errores
include "p16f84a.inc" ;En esta linea se especifica la biblioteca que incluye los registros definidos
radix hex ; Esta linea indica litelares(constantes) expresados en formato hexadecimal
errorlevel -302 ; Turn off banking message
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; igualdades de la CPU y el mapa de memoria;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
reg equ 0x0c
con1 equ 0x0d
con2 equ 0x0e
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;; inicio del programa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0
goto inicio
inicio bsf STATUS,RP0 ; cambio al banco 1 para configurar el pic
movlw 0xff ;puerto A como entrada
movwf trisa ; puerto A como entrada
movlw 0x00 ;puerto B como salida
movwf trisb ;puerto B como salida
bcf status,rp0 ;cambio al banco 0
clrf portb ;apago los leds a la salida
clrf con1 ;valor inicial de contador 1 igual a 0x00
clrf con2 ;valor inicial de contador 2 igual a 0x00
;;;;;;;;;;;;;;;;;;;;;; Lectura del puerto A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
leer:
movf porta,w
sublw 0x00 ;si el valor del puerto A es 0x00 implemento efecto_uno
btfsc status,z
goto efecto_uno
movf porta,w
sublw 0x01 ;si el valor del puerto A es 0x01 implemento efecto_dos
btfsc status,z
goto efecto_dos
movf porta,w
sublw 0x02 ;si el valor del puerto A es 0x02 implemento efecto_tres
btfsc status,z
goto efecto_tres
movf porta,w
sublw 0x03 ;si el valor del puerto A es 0x03 implemento efecto_cuatro
btfsc status,z
goto efecto_cuatro
movf porta,w
sublw 0x04 ;si el valor del puerto A es 0x04 implemento efecto_cinco
btfsc status,z
goto efecto_cinco
movf porta,w
sublw 0x05 ;si el valor del puerto A es 0x05 implemento efecto_seis
btfsc status,z
goto efecto_seis
movf porta,w
sublw 0x06 ;si el valor del puerto A es 0x06 implemento efecto_siete
btfsc status,z
goto efecto_siete
movf porta,w
sublw 0x07 ;si el valor del puerto A es 0x07 implemento efecto_ocho
btfsc status,z
goto efecto_ocho
goto leer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_uno:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_uno:
decfsz reg,f
goto fx_uno
goto leer
fx_uno:
movf reg,w
call tabla_uno
movwf portb
call retardo
goto leo_uno
tabla_uno:
addwf pcl,f ;;; tabla de secuencia de efecto_uno
return
retlw b'01111111'
retlw b'10111111'
retlw b'11011111'
retlw b'11101111'
retlw b'11110111'
retlw b'11111011'
retlw b'11111101'
retlw b'11111110'
retardo:
decfsz con1,f ;; bloque retardo
goto retardo
decfsz con2,f
goto retardo
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_dos:
decfsz reg,f
goto fx_dos
goto leer
fx_dos:
movf reg,w
call tabla_dos
movwf portb
call retardo
goto leo_dos
tabla_dos:
addwf pcl,f ;;; tabla de secuencia de efecto_dos
return
retlw b'01011011'
retlw b'10101011'
retlw b'11011011'
retlw b'11101101'
retlw b'01110111'
retlw b'01011011'
retlw b'10101101'
retlw b'01110110'
retardo:
decfsz con1,f ;; bloque retardo
goto retardo
decfsz con2,f
goto retardo
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_tres:
decfsz reg,f
goto fx_tres
goto leer
fx_tres:
movf reg,w
call tabla_tres
movwf portb
call retardo
goto leo_tres
tabla_tres:
addwf pcl,f ;;; tabla de secuencia de efecto_tres
return
retlw b'11011010'
retlw b'00101111'
retlw b'01011010'
retlw b'00101101'
retlw b'00110110'
retlw b'11011010'
retlw b'10101110'
retlw b'11010111'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_cuatro:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_cuatro:
decfsz reg,f
goto fx_cuatro
goto leer
fx_cuatro:
movf reg,w
call tabla_cuatro
movwf portb
call retardo
goto leo_cuatro
tabla_cuatro:
addwf pcl,f ;;; tabla de secuencia de efecto_cuatro
return
retlw b'01011011'
retlw b'10101011'
retlw b'11011011'
retlw b'10101101'
retlw b'10110011'
retlw b'11011011'
retlw b'10100110'
retlw b'01010011'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_cinco:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_cinco:
decfsz reg,f
goto fx_cinco
goto leer
fx_cinco:
movf reg,w
call tabla_cuatro
movwf portb
call retardo
goto leo_cinco
tabla_cinco:
addwf pcl,f ;;; tabla de secuencia de efecto_cinco
return
retlw b'11011010'
retlw b'00111000'
retlw b'11011010'
retlw b'00101011'
retlw b'10111010'
retlw b'01001011'
retlw b'10100101'
retlw b'11011010'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_seis:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_seis:
decfsz reg,f
goto fx_seis
goto leer
fx_seis:
movf reg,w
call tabla_seis
movwf portb
call retardo
goto leo_seis
tabla_seis:
addwf pcl,f ;;; tabla de secuencia de efecto_seis
return
retlw b'11011011'
retlw b'01101010'
retlw b'01011011'
retlw b'10101010'
retlw b'00101010'
retlw b'11011011'
retlw b'00110101'
retlw b'01011011'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_siete:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_siete:
decfsz reg,f
goto fx_siete
goto leer
fx_siete:
movf reg,w
call tabla_siete
movwf portb
call retardo
goto leo_siete
tabla_siete:
addwf pcl,f ;;; tabla de secuencia de efecto_siete
return
retlw b'01011010'
retlw b'10101011'
retlw b'11011010'
retlw b'00101011'
retlw b'10100011'
retlw b'01011010'
retlw b'10110100'
retlw b'11010010'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_ocho:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_ocho:
decfsz reg,f
goto fx_ocho
goto leer
fx_ocho:
movf reg,w
call tabla_siete
movwf portb
call retardo
goto leo_ocho
tabla_ocho:
addwf pcl,f ;;; tabla de secuencia de efecto_siete
return
retlw b'11011011'
retlw b'00101010'
retlw b'11011010'
retlw b'10101011'
retlw b'00101010'
retlw b'11011011'
retlw b'00110101'
retlw b'01011010'
end
veo que en cada bloque hace falta un retardo cierto :?:
Insertá igual las etiquetas que faltan, asì al menos te va a compilar y podés ir verificando el código. Después vas agregando de a uno los efectos.
Algo así:Código: [Seleccionar];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres
efecto_cuatro
efecto_cinco
efecto_seis
efecto_siete
efecto_ocho
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
...............
este es el código completo sin errores
include "p16f84a.inc" ;En esta linea se especifica la biblioteca que incluye los registros definidos
radix hex ; Esta linea indica litelares(constantes) expresados en formato hexadecimal
errorlevel -302 ; Turn off banking message
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; igualdades de la CPU y el mapa de memoria;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
reg equ 0x0c
con1 equ 0x0d
con2 equ 0x0e
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;; inicio del programa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 0
goto inicio
inicio bsf STATUS,RP0 ; cambio al banco 1 para configurar el pic
movlw 0xff ;puerto A como entrada
movwf trisa ; puerto A como entrada
movlw 0x00 ;puerto B como salida
movwf trisb ;puerto B como salida
bcf status,rp0 ;cambio al banco 0
clrf portb ;apago los leds a la salida
clrf con1 ;valor inicial de contador 1 igual a 0x00
clrf con2 ;valor inicial de contador 2 igual a 0x00
;;;;;;;;;;;;;;;;;;;;;; Lectura del puerto A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
leer:
movf porta,w
sublw 0x00 ;si el valor del puerto A es 0x00 implemento efecto_uno
btfsc status,z
goto efecto_uno
movf porta,w
sublw 0x01 ;si el valor del puerto A es 0x01 implemento efecto_dos
btfsc status,z
goto efecto_dos
movf porta,w
sublw 0x02 ;si el valor del puerto A es 0x02 implemento efecto_tres
btfsc status,z
goto efecto_tres
movf porta,w
sublw 0x03 ;si el valor del puerto A es 0x03 implemento efecto_cuatro
btfsc status,z
goto efecto_cuatro
movf porta,w
sublw 0x04 ;si el valor del puerto A es 0x04 implemento efecto_cinco
btfsc status,z
goto efecto_cinco
movf porta,w
sublw 0x05 ;si el valor del puerto A es 0x05 implemento efecto_seis
btfsc status,z
goto efecto_seis
movf porta,w
sublw 0x06 ;si el valor del puerto A es 0x06 implemento efecto_siete
btfsc status,z
goto efecto_siete
movf porta,w
sublw 0x07 ;si el valor del puerto A es 0x07 implemento efecto_ocho
btfsc status,z
goto efecto_ocho
goto leer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_uno:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_uno:
decfsz reg,f
goto fx_uno
goto leer
fx_uno:
movf reg,w
call tabla_uno
movwf portb
call retardo
goto leo_uno
tabla_uno:
addwf pcl,f ;;; tabla de secuencia de efecto_uno
return
retlw b'01111111'
retlw b'10111111'
retlw b'11011111'
retlw b'11101111'
retlw b'11110111'
retlw b'11111011'
retlw b'11111101'
retlw b'11111110'
retardo:
decfsz con1,f ;; bloque retardo
goto retardo
decfsz con2,f
goto retardo
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_dos:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_dos:
decfsz reg,f
goto fx_dos
goto leer
fx_dos:
movf reg,w
call tabla_dos
movwf portb
call retardo
goto leo_dos
tabla_dos:
addwf pcl,f ;;; tabla de secuencia de efecto_dos
return
retlw b'01011011'
retlw b'10101011'
retlw b'11011011'
retlw b'11101101'
retlw b'01110111'
retlw b'01011011'
retlw b'10101101'
retlw b'01110110'
retardo:
decfsz con1,f ;; bloque retardo
goto retardo
decfsz con2,f
goto retardo
return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_tres:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_tres:
decfsz reg,f
goto fx_tres
goto leer
fx_tres:
movf reg,w
call tabla_tres
movwf portb
call retardo
goto leo_tres
tabla_tres:
addwf pcl,f ;;; tabla de secuencia de efecto_tres
return
retlw b'11011010'
retlw b'00101111'
retlw b'01011010'
retlw b'00101101'
retlw b'00110110'
retlw b'11011010'
retlw b'10101110'
retlw b'11010111'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_cuatro:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_cuatro:
decfsz reg,f
goto fx_cuatro
goto leer
fx_cuatro:
movf reg,w
call tabla_cuatro
movwf portb
call retardo
goto leo_cuatro
tabla_cuatro:
addwf pcl,f ;;; tabla de secuencia de efecto_cuatro
return
retlw b'01011011'
retlw b'10101011'
retlw b'11011011'
retlw b'10101101'
retlw b'10110011'
retlw b'11011011'
retlw b'10100110'
retlw b'01010011'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_cinco:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_cinco:
decfsz reg,f
goto fx_cinco
goto leer
fx_cinco:
movf reg,w
call tabla_cuatro
movwf portb
call retardo
goto leo_cinco
tabla_cinco:
addwf pcl,f ;;; tabla de secuencia de efecto_cinco
return
retlw b'11011010'
retlw b'00111000'
retlw b'11011010'
retlw b'00101011'
retlw b'10111010'
retlw b'01001011'
retlw b'10100101'
retlw b'11011010'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_seis:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_seis:
decfsz reg,f
goto fx_seis
goto leer
fx_seis:
movf reg,w
call tabla_seis
movwf portb
call retardo
goto leo_seis
tabla_seis:
addwf pcl,f ;;; tabla de secuencia de efecto_seis
return
retlw b'11011011'
retlw b'01101010'
retlw b'01011011'
retlw b'10101010'
retlw b'00101010'
retlw b'11011011'
retlw b'00110101'
retlw b'01011011'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_siete:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_siete:
decfsz reg,f
goto fx_siete
goto leer
fx_siete:
movf reg,w
call tabla_siete
movwf portb
call retardo
goto leo_siete
tabla_siete:
addwf pcl,f ;;; tabla de secuencia de efecto_siete
return
retlw b'01011010'
retlw b'10101011'
retlw b'11011010'
retlw b'00101011'
retlw b'10100011'
retlw b'01011010'
retlw b'10110100'
retlw b'11010010'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BLOQUE DE EFECTOS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
efecto_ocho:
movlw 0x09 ;se coloca literal 9 porque cada efecto tiene 8 secuencias
movwf reg
leo_ocho:
decfsz reg,f
goto fx_ocho
goto leer
fx_ocho:
movf reg,w
call tabla_siete
movwf portb
call retardo
goto leo_ocho
tabla_ocho:
addwf pcl,f ;;; tabla de secuencia de efecto_siete
return
retlw b'11011011'
retlw b'00101010'
retlw b'11011010'
retlw b'10101011'
retlw b'00101010'
retlw b'11011011'
retlw b'00110101'
retlw b'01011010'
end
veo que en cada bloque hace falta un retardo cierto :?:
Parece que estas copiando y pegando dos código diferentes en uno solo e intentado que compile sin problemas.
Tampoco pones atención a las advertencias y errores que te indica el compilador y don Eduardo2.0
Y seguramente cuando no tengas ningún error, posiblemente no funcione como tu deseas o no funcione nada.
Mi consejo es que vayas haciendo poco a poco tu proyecto y compilando cada vez, empieza desde algo simple y vas agregando cada vez más cosas, Siempre verificando que compile y que funcione en tu hardware.
De lo contrario no llegarás a algo satisfactorio.
/quote]
adjunto simulación secuenciador pic 16f84a en proteus y el archivo hex, tiene 3 interruptores para cambiar las secuencias de la salida del puerto B del pic 16f84a.