dudas en programacion de un pic 16f84a o mplab

Buenas noches, disculpen las molestias estimados colegas, pero desde hace año y medio que no agarro un pic pero ahora tengo que hacer un proyectio para mañana jaj mmm bueno ya hice el programa pero no recuerdo para nada como pasarlo al mplab, abri un wizard project, pero al build all me sale un error, yo recuerdo que hace tiempo me salia algo diferente si me equivocaba me salia el error cual era hoy se me hace que no lo estoy haciendo correctamente, el programa lo hice en notepad pero no me acuerdo como pasarlo al hex, espero que puedan ayudarme aqui esta el programa, este programa es usado para controlar la apertura de una caja fuerte, m1 es el motor DC de la puerta, m2 es un candadito, y m3 es un teclado rotacional, arranque es un boton secreto que iniciara todo el business, los leds pues van por el teclado y los teclados son los push bottons pero creo que el programa esta bien creo :s mmm mi duda es en el mplab si alguien pudiese decirme que diferencia hay de la v7.21 a la 8 se lo agradeceria que solo pude instalar la 7.21 :S
Estare esperando su respuesta con agrado gracias

Código:
List p=16f84a
 INCLUDE      <P16F84A.INC> 

 __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
status   equ  0x03
porta    equ  0x05
trisa     equ  0x05
timer1  equ  0x0c
timer2  equ  0x0d
timer3  equ  0x0e
timer4  equ  0x0f
reset1  equ  0x1c
reset2  equ  0x1d
reset3  equ  0x1e
reset4  equ  0x1f
motor1a  equ  PORTA,0
motor1b  equ  PORTA,1
motor2a  equ  PORTA,2
motor2b  equ  PORTA,3
motor3a  equ  PORTA,4
arranque equ  PORTB,0
tecla3  equ  PORTB,1
teclas  equ  PORTB,2
sensor  equ  PORTB,3
buzz  equ  PORTB,4
motor3b  equ  PORTB,5
ledrojo  equ  PORTB,6  
ledverde equ  PORTB,7  
      
 org 0x0000      ; Al prender el micro viene aca primero. 
   goto encendido   ; Primera línea del programa.
 org 0x0004  ; Ubicación del único vector de interrupción. No usado.
   nop
encendido
 bsf STATUS, RP0  
    
 movlw b'00000000' 
 movwf TRISA   
 movlw b'00001111'  
 movwf TRISB  
 
 bcf STATUS, RP0 
 
 clrf PORTA   
 clrf PORTB  
menu 
 call tono   ;al encender el circuito se escuchara un tono.
submenu     
 bcf ledrojo  
 btfss arranque  
 goto submenu   
 call tono   ;rotacion del teclado
 call motor3a     
 bsf ledverde  
 bsf ledrojo
 call demoraled
 bcf ledverde
 bcf ledrojo 
submenu1
 movlw d'25'   ;se carga un temporizador de desuso
 movwf reset1   
submenu2
 movlw d'25'
 movwf reset2
submenu3
 movlw d'60'
 movwf reset3
submenu4 
 bftsc tecla3   
 goto submenu10
 btfsc teclas
 goto submenu5  
 decfsz reset3
 goto submenu4
 decfsz reset2
 goto submenu3
 decfsz reset1
 goto submenu2
 call tono   ;el temporizador ha terminado, se produce un tono y el teclado se oculta, se regresa a submenu
 call motor3b
 goto submenu
submenu5    
 call  tono   ;ciclo de error, falta una tecla mas pero dara error.
 call  antirrebotes
 bcf reset1
 bcf reset2
 bcf reset3
 movlw d'25'   
 movwf reset1   
submenu6
 movlw d'25'
 movwf reset2
submenu7
 movlw d'60'
 movwf reset3
submenu8 
 bftsc tecla3   
 goto submenu9
 btfsc teclas
 goto submenu9  
 decfsz reset3
 goto submenu8
 decfsz reset2
 goto submenu7
 decfsz reset1
 goto submenu6
 call tono   
 call motor3b
 goto submenu
submenu9    
 call tono   ;error, quedan menos intentos
 call antirrebotes
 bsf ledrojo
 call tono
 call demoraled
 bcf ledrojo
 goto submenu1
submenu10
 call  tono   ;ciclo de tecla aceptada, falta una mas
 call  antirrebotes
 bcf reset1
 bcf reset2
 bcf reset3
 movlw d'25'   
 movwf reset1   
submenu11
 movlw d'25'
 movwf reset2
submenu12
 movlw d'60'
 movwf reset3
submenu13 
 bftsc tecla3   
 goto apertura
 btfsc teclas
 goto submenu9  
 decfsz reset3
 goto submenu13
 decfsz reset2
 goto submenu12
 decfsz reset1
 goto submenu11
 call tono   
 call motor3b
 goto submenu
submenu9
 call tono
 call antirrebotes
 bsf ledrojo
 call tono
 call demoraled
 bcf ledrojo
 goto submenu1

apertura
 call tono   ;sistema de destrabo y apertura automatica
 call antirrebotes
 bsf ledverde
 call tono
 call demoram2a
 call demoram1a
cerrado
 bcf reset1   ;se inicia un temporizador para cerrado automatico si se a olvidado la puerta abierta
 bcf reset2
 bcf reset3
 movlw d'25'   
 movwf reset1   
cerrado1
 movlw d'50'
 movwf reset2
cerrado2
 movlw d'50'
 movwf reset3
cerrado3 
 btfsc arranque
 goto sellar  
 decfsz reset3
 goto cerrado3
 decfsz reset2
 goto cerrado2
 decfsz reset1
 goto cerrado1
 call tono   ;alarma al usuario que esta por cerrarse la puerta, presionar arranque para cancelar accion
 call antirrebotes
 btfsc arranque
 goto cerrado4
 call tono
 call antirrebotes
 btfsc arranque
 goto cerrado4
 call tono
 call antirrebotes
 btfss arranque
 goto sellar
cerrado4
 call antirrebotes
 call antirrebotes
 bcf arranque
 goto cerrado
sellar    
 bcf ledrojo   ;cerrado automatico
 bcf ledverde
 bcf arranque
 bcf tecla3
 bcf teclas 
 call motor3b
 call demoram1b
 call demoram2b
 goto submenu
end

tono 
 movlw d'5'
 movwf timer4
tono2 
 movlw d'50'
 movwf timer3
tono3 
 movlw d'4'
 movwf timer1
 movwf timer2
 bsf buzz
tono4 
 decfsz timer1
 goto tono4
 bcf buzz
tono5
 decfsz timer2
 goto tono5
 decfsz timer3
 goto tono3
 decfsz timer4
 goto tono2
 return
 
demoraled
 movlw d'80'
 movwf timer1
demoraled2
 movlw d'80'
 movwf timer2
demoraled3
 decfsz timer2
 goto demoraled3
 decfsz timer1
 goto demoraled2
 return
antirrebotes
 movlw d'80'
 movwf timer1
antirrebotes2
 movlw d'40'
 movwf timer2
antirrebotes3
 decfsz timer2
 goto antirrebotes3
 decfsz timer1
 goto antirrebotes2
 return

 
demoram1a
 movlw d'80'
 movwf timer1
demoram12a
 movlw d'40'
 movwf timer2
 movwf timer3
 bsf motor1a
demoram13a
 decfsz timer2
 goto demoram13a
 bcf motor1a
demoram14a
 decfsz timer3
 goto demoram14a
 decfsz timer1
 goto demoram12a
 return
demoram1b
 movlw d'80'
 movwf timer1
demoram12b
 movlw d'40'
 movwf timer2
 movwf timer3
 bsf motor1b
demoram13b
 decfsz timer2
 goto demoram13b
 bcf motor1b
demoram14b
 decfsz timer3
 goto demoram14b
 decfsz timer1
 goto demoram12b
 return
demoram2a
 movlw d'25'
 movwf timer1
demoram22a
 movlw d'40'
 movwf timer2
 movwf timer3
 bsf motor2a
demoram23a
 decfsz timer2
 goto demoram23a
 bcf motor2a
demoram24a
 decfsz timer3
 goto demoram24a
 decfsz timer1
 goto demoram22a
 return
demoram2b
 movlw d'25'
 movwf timer1
demoram22b
 movlw d'40'
 movwf timer2
 movwf timer3
 bsf motor2b
demoram23b
 decfsz timer2
 goto demoram23b
 bcf motor2b
demoram24b
 decfsz timer3
 goto demoram24b
 decfsz timer1
 goto demoram22b
 return
motor3a
 movlw d'50'
 movwf timer1
motor3a2
 movlw d'20'
 movwf timer2
 movwf timer3
 bsf motor3a
motor3a3
 decfsz timer2
 goto motor3a3
 bcf motor3a
motor3a4
 decfsz timer3
 goto motor3a4
 decfsz timer1
 goto motor3a2
 return
motor3b
 movlw d'50'
 movwf timer1
motor3b2
 movlw d'20'
 movwf timer2
 movwf timer3
 bsf motor3b
motor3b3
 decfsz timer2
 goto motor3b3
 bcf motor3b
motor3b4
 decfsz timer3
 goto motor3b4
 decfsz timer1
 goto motor3b2
 return
 
Última edición por un moderador:
Hola tome tu código y cree un proyecto en Mplab V8.1, el proyecto se creo sin ningún problema, me acumula como 80 errores, porque hay librerias que tu llamas y no estan en el codigo... si quieres te envio el archivo pero en version Mplab 8.1

Salu2
 
Hola tome tu código y cree un proyecto en Mplab V8.1, el proyecto se creo sin ningún problema, me acumula como 80 errores, porque hay librerias que tu llamas y no estan en el codigo... si quieres te envio el archivo pero en version Mplab 8.1

Salu2
jojoj tuve que bajarme el 8.40 y si jajaj me marca muchos errores mmm estoy corriegiendo eso, y es que hace tiempo que no veia esto y ahorita estoy con un libro que me consegui de la biblioteca de la escuela siguiend paso a pasito como crear el .hex que no me sale, mira puedo corregir yo los errores pero si me podrias ayudar con el .hex n.n mmm no se como logre hacer proyectos con este pic antes jaja era grande n.n bueno gracias por la ayuda y pues yo te digo de lo del .hex dejame lo termino... por cierto sabes si al generar un tono en un zumbador con un ciclo de medio segundo baste? la frecuencia la puse a 500hz por segundo mmm pero no se si con el simple hecho de ponder a uno la salida correspondiente al buzz por tanto tiempo y luego a cero esto sea suficiente para generar el tono. mmm esta es la subrutina que hice

tono movlw d'5'
movwf timer4
tono2 movlw d'50'
movwf timer3
tono3 movlw d'4'
movwf timer1
movwf timer2
bsf buzz
tono4 decfsz timer1,1
goto tono4
bcf buzz
tono5 decfsz timer2,1
goto tono5
decfsz timer3,1
goto tono3
decfsz timer4,1
goto tono2
return

gracias de nuevo hasta luego.
 
Hola tome tu código y cree un proyecto en Mplab V8.1, el proyecto se creo sin ningún problema, me acumula como 80 errores, porque hay librerias que tu llamas y no estan en el codigo... si quieres te envio el archivo pero en version Mplab 8.1

Salu2


exito... logre la correcta programacion del pic mas no logre que realizar un buen trabajo jojojo

1.- La bocina que esta conectada directamente al pic no se escucha, bueno se escucha muy debil. Creo que olvide colocarle una etapa de amplificacion.

2.- mmm eso kreo ke si uedo resolverlo mmm

investigare mas acerca de eso de la bocina, gracias n.n
 
Me alegra mucho a hayas podido al menos compilarlo.... lo de la bocina, claro que debes colocar un transistor a la salida del pin del micro, y alli si la bocina, sin duda asi te saldra sin problema. salu2
 
en mi opinion si es bueno el transistor

pero tambien se escucha muy debil pq estas teniendo solo un ciclo de 2 ms

has otro temporizado para q se repita el ciclo por un periodo mas largo

osea activas en 2 ms y apagas en 2ms, todo eso un tiempo mas largo asi el sonido se escuchara mas tiempo y no se oira tan debil.
 
Atrás
Arriba