Autor Tema: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A  (Leído 757734 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado david1820

  • PIC10
  • *
  • Mensajes: 3
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #60 en: 13 de Junio de 2009, 19:57:00 »
Suky con como podría programar un dimmer para que al momento de apretar el botón se prenda el foco y al momento de soltarlo el foco vaya disminuyendo su intensidad te lo agradecería tu ayuda.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #61 en: 14 de Junio de 2009, 00:24:29 »
Suky con como podría programar un dimmer para que al momento de apretar el botón se prenda el foco y al momento de soltarlo el foco vaya disminuyendo su intensidad te lo agradecería tu ayuda.
En este caso utilizaría PWM, dale una miradita al ultimo ejemplo del PIC16F628 y yo creo que se te va a ser muy fácil diseñar un código.
No contesto mensajes privados, las consultas en el foro

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #62 en: 17 de Junio de 2009, 21:48:09 »
Oye discupla ese programa de interrupcion en TMR0 que tienes en primeros programas como lo adaptarias a un 16f628a, cuando lo simulo no me funciona podrias ayudarme

Para utilizar ese mismo código el el PIC16F628 solo hay que cambiar el encabezado y la posición de nuestras variables:
Código: ASM
  1. ; **** Encabezado ****
  2. list p=16f628A ; list directive to define processor
  3. #include <p16f628A.inc> ; processor specific variable definitions
  4. __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT & _DATA_CP_OFF & _LVP_OFF & _MCLRE_ON
  5. ;**** Definicion de variables ****
  6. Contador equ 0x20 ; Contador para detectar 4 desbordes de TMR0.-
  7. W_Temp equ 0x21 ; Registro para guardar temporalmente W.-
  8. STATUS_Temp equ 0x22 ; Registro para guardar temporalmente STATUS
  9.  
  10. Led equ 0 ; Definimos Led como el bit cero de un registro, en este caso PORTB.-

Otra cosa que debes tener en cuenta cuando migras un código del PIC16F84 al PIC16F628 es la configuración de los comparadores analógicos, para utilizar los pines RA0-RA3 como I/O digitales debes colocar:
Código: ASM
  1. movlw   0x07
  2.      movwf   CMCON
Mientras se este en el banco 0.
No contesto mensajes privados, las consultas en el foro

Desconectado hellser

  • PIC10
  • *
  • Mensajes: 3
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #63 en: 18 de Junio de 2009, 23:52:45 »
ah gracias
« Última modificación: 19 de Junio de 2009, 04:38:48 por hellser »

Desconectado OTSELECTRONICSEIRL

  • PIC10
  • *
  • Mensajes: 18
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #64 en: 28 de Junio de 2009, 20:50:31 »
Hola.
Deseo saber si esta afirmacion que expusiste es correcta:

Reset.El PIC 16F84A posee un temporizador interno conectado al pin de reset, que funciona cuando se da alimentación al microcontrolador. Esto hace que al encender el sistema el microcontrolador quede en reset por un tiempo mientras se estabilizan todas las señales del circuito.

Gracias.
Si el alumno no supera al maestro, ni es bueno el alumno; ni es bueno el maestro.
- proverbio chino

Desconectado OTSELECTRONICSEIRL

  • PIC10
  • *
  • Mensajes: 18
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #65 en: 28 de Junio de 2009, 22:12:40 »
Fe de Erratas:
Dice:
Memoria de programa: 2048 locaciones de 14 bits
Debe decir:
Memoria de programa: 1024 locaciones de 14 bits
Si el alumno no supera al maestro, ni es bueno el alumno; ni es bueno el maestro.
- proverbio chino

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #66 en: 28 de Junio de 2009, 22:39:29 »
Hola.
Deseo saber si esta afirmacion que expusiste es correcta:

Reset.El PIC 16F84A posee un temporizador interno conectado al pin de reset, que funciona cuando se da alimentación al microcontrolador. Esto hace que al encender el sistema el microcontrolador quede en reset por un tiempo mientras se estabilizan todas las señales del circuito.

Gracias.
Es cuando se habilta el fuse Power-up Timer, este mantiene resteado el PIC durante un tiempo, y permite que se estabilice la tensión.

Fe de Erratas:
Dice:
Memoria de programa: 2048 locaciones de 14 bits
Debe decir:
Memoria de programa: 1024 locaciones de 14 bits
Error, El pic 16F628 es de 2048 words:
Mirando el Datasheet:
No contesto mensajes privados, las consultas en el foro

Desconectado miguel valdivia

  • PIC10
  • *
  • Mensajes: 46
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #67 en: 06 de Agosto de 2009, 14:17:27 »
HOLA   Suky  SABES QUE COMPILE EL PROGRAMA
TUYO DEL EJEMPLO DE PWM CON EL MOTORCITO Y LO HICE EN PROTEUS (TENGO 7.5)
Y NO HACE NADA , ME PUEDES AYUDAR PARA SABER
QUE HAGO MAL
SALUDOS DE CHILE    :-/ :-/ :-/ :D
         

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #68 en: 06 de Agosto de 2009, 17:24:48 »
Por favor no escribas en mayúscula, en un foro es elevar el tono  :x

Después, he leído que la versión 7.5 tiene problemas para simular el PWM, puede ser eso.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado miguel valdivia

  • PIC10
  • *
  • Mensajes: 46
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #69 en: 07 de Agosto de 2009, 10:17:48 »
disculpame  suky porfavor por  las mayusculasn ,
no lei las reglas del foro , no fue un improperio.
pero porque este proteus genera este problema.
osea que en el proto me deberia   funcionar
saludos

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #70 en: 07 de Agosto de 2009, 10:36:19 »
disculpame  suky porfavor por  las mayusculasn ,
no lei las reglas del foro , no fue un improperio.
pero porque este proteus genera este problema.
osea que en el proto me deberia   funcionar
saludos


No debería dar problemas, en vez de colocar un motor (el cual necesita driver de potencia) prueba colocando simplemente un led y prueba como varia su luminosidad.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado cristiandb

  • PIC10
  • *
  • Mensajes: 1
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #71 en: 25 de Agosto de 2009, 12:49:21 »
hola!
muy buen tutorial para empezar....pero tuve un problema....
no me anduve el ejercicio del led tildando...nose que pasa....pero el led se queda prendido...no prende y apaga..
que problema puede ser....del programador  o algo que puedo estar haciendo mal?
muchas gracias!

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #72 en: 25 de Agosto de 2009, 13:15:03 »
hola!
muy buen tutorial para empezar....pero tuve un problema....
no me anduve el ejercicio del led tildando...nose que pasa....pero el led se queda prendido...no prende y apaga..
que problema puede ser....del programador  o algo que puedo estar haciendo mal?
muchas gracias!

Como estas realizando las pruebas? Si es un protoboard asegúrate que las conexiones estén bien fijas. Que el pin Mclr este a Vcc mediante una resistencia, que el oscilador este con sus capacitores lo más próximo al microcontrolador, etc.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado beto1234

  • PIC12
  • **
  • Mensajes: 52
    • Osm Gps Pwa
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #73 en: 26 de Agosto de 2009, 10:14:03 »
  COMUNICACIÓN IR - PIC16F628 Y PIC12F629

 Hola amigos PICLISTEROS, voy a explicar como hacer la comunicación de dos PIC  por medio de infrarrojo. En este ejemplo voy a codificar la señal con el pic12f629 y lo decodificaré con el pic16f628a, la codificación de pulsos que puse es muy facíl pero eficiente ya q no detecta otros controles IR. Al comprobar q el código es el correcto hacemos titilar un led 10veces.
 
 INFORMACIÓN DE INTERNET:  
 http://heli.xbot.es/fd/ir.htm
 http://r-luis.xbot.es/sensores/ir.html
 
 HERRAMIENTAS QUE USE:
Soft-MPLAB IDE V8.X
MCE PDX USB -080609 (Programador y Debugger Express)
Soft- Pickit 2 Develooment

 EMISOR IR

Nombre de los componentes Importantes:
PIC12F629
Transitor BC337
LED EMISOR  L-53F3BT

Código: [Seleccionar]
INCLUDE <P12F629.INC>
__CONFIG _CP_OFF & _WDT_OFF  & _PWRTE_ON & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
cblock 0x20 ; programación moderna para designar registros
Contador1
Contador2    
endc
   org     0x00
   goto INICIO

   ORG 0x05


INICIO
        BCF STATUS,RP0 ;Bank 0
        CLRF GPIO ;Init GPIO
        MOVLW 07h ;Ponemos como I/O digital
        MOVWF CMCON
        BSF STATUS,RP0 ;Bank 1
   movlw b'00000010'
movwf TRISIO ; puertos gpx como salidas menos gp1 q es entrada
   banksel GPIO ; programación moderna para posiscionar en un banco especifico
   clrf    Contador1 ; limpiamos
        clrf    Contador2 ; limpiamos
        clrf    GPIO ;limpiamos            
BUCLE
        nop;no hacemos nada
        btfsc GPIO,1 ;si el boton esta presionado- enviamos la señal codificada
        call Codigo
      
 goto BUCLE

Codigo ; 1   1010
        bsf  GPIO,2; 1 de inicio
        call Demora_30ms
        bsf GPIO,2       ;1
        call Demora_30ms
        bcf GPIO,2       ;0
        call Demora_30ms
        bsf GPIO,2       ;1
        Call Demora_30ms
        bcf GPIO,2       ;0
        Call suelta
return
suelta
     btfss GPIO,1
     return
     goto suelta

;---------RUTINA DEL RETARDO DE TIEMPO----------
;...............................................
; *** Demora****
Demora_30ms
movlw 0xFF ;
movwf Contador1 ; Iniciamos contador1.-
Repeticion1
movlw 0xC3 ;
movwf Contador2 ; Iniciamos contador2
Repeticion2
decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale.-
goto Repeticion2 ; Si no es 0 repetimos ciclo.-
decfsz Contador1,1 ; Decrementa Contador1.-
goto Repeticion1 ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
;...............................................

end


 RECEPTOR IR

Componentes Importantes
PIC16F628A
LED RECEPTOR(Fototransistor) - L51P3C


Código: [Seleccionar]
INCLUDE <P16F628A.INC>
__CONFIG _CP_OFF & _WDT_ON & _LVP_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT
cblock 0x20
Contador1
Contador2
ESTADO  
Loop  
endc
   org     0x00
   goto INICIO

   ORG 0x05
INICIO
       bsf STATUS,RP0 ; Banco 1
       Movlw    b'00010000' ;
       Movwf    TRISB  ; RB5 como entrada  los demás como salida
       banksel PORTB ;me posiciono en el banco del portb
       clrf    PORTB ; portb limpio
       clrf    Contador1 ; limpiamos
       clrf    Contador2 ; limpiamos
BUCLE
        clrwdt ;limpio W
        BCF ESTADO,1 ;pongo en 0 el bit1 del registro ESTADO
        btfss PORTB,4;si recive un 0 llama a Vercodigo q es el conprueba
        call VerCodigo
        BTFSC ESTADO,1;Probamos si el código fue correcto si es así titilamos el led  
        call Alarma
goto BUCLE
;***************** LEER CODIGO ENVIADO POR EL TRANSMISOR *********************
;************* SI EL CODIGO ES CORRECTO   ==>  ESTADO,1 = 1 **********
;************* SI EL CODIGO ES INCORRECTO ==>  ESTADO,1 = 0 **********
;Codigo 1 1010
VerCodigo
    
BCF ESTADO,1


    CALL Demora_30ms
BTFSC PORTB,4   ;******  0 ******
RETURN

CALL Demora_30ms
BTFSS PORTB,4 ;******  1 ******
RETURN

CALL Demora_30ms
BTFSC PORTB,4 ;******  0 ******
RETURN

CALL Demora_30ms
BTFSS PORTB,4 ;******  1 ******
RETURN

    CALL Demora_30ms
CALL Demora_30ms

BSF ESTADO,1 ; ESTADO,1 = 1
RETURN


Alarma
movlw 0x0A ; Hacemos titilar 10 veces el Led.-
movwf Loop
bsf PORTB,5
call Demora_150ms
bcf PORTB,5
call Demora_150ms
decfsz Loop
goto $-5
return

;.................................................
;---------RUTINA DEL RETARDO DE TIEMPO----------
;**** Demora 150MS ****
Demora_150ms
    clrf    Contador1 ; limpiamos
    clrf    Contador2 ; limpiamos
movlw 0xFF ;
movwf Contador1 ; Iniciamos contador1.-
Repeticion1
movlw 0xC3 ;
movwf Contador2 ; Iniciamos contador2
Repeticion2
decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale.-
goto Repeticion2 ; Si no es 0 repetimos ciclo.-
decfsz Contador1,1 ; Decrementa Contador1.-
goto Repeticion1 ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
;...............................................
; *** Demora****
Demora_30ms
movlw 0xFF ;
movwf Contador1 ; Iniciamos contador1.-
Repeticion3
movlw 0xC3 ;
movwf Contador2 ; Iniciamos contador2
Repeticion4
decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale.-
goto Repeticion4 ; Si no es 0 repetimos ciclo.-
decfsz Contador1,1 ; Decrementa Contador1.-
goto Repeticion3 ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
;...............................................
end

end





Salu2 BETO ROBLEDO SANCHEZ- Estudiante de la UTN - Facultad Regional Resistencia - I.Q
« Última modificación: 26 de Agosto de 2009, 11:15:41 por beto1234 »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A
« Respuesta #74 en: 26 de Agosto de 2009, 10:53:51 »
Bienvenido al foro beto1234!

Muy buen proyecto! Te animo que crees un  nuevo tema en el subforo proyectos con PIC para presentarlo :wink:


Saludos!
No contesto mensajes privados, las consultas en el foro