Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola amigos!!
ya he conseguido que funcione el prgramador pasaban dos cosas:
primero era el programador y segundo era el puerto, solo me detecta el pic en el com1 y no el com2.. ya podia estar yo dando patadas que no funcionaba... xD
bueno ahora les iba a preguntar...
para programar un pic 16f84a se puede hacer en C? que programa me pasaria de C a hexadecimal y que similitud tiene programarlo como si hicieras un soft.
que es mas sencillo en C o en ensamblador??
tambien rogaria si me pudieran pasar paginas con ejercicios de pics.
En el caso que quisiera controlar por cada salida del pic un led que funciona a 3,5V solo es cambiarle la resistencia no? pero el problema esta en que necesito darle 350mA para que funcione.
tambien me gustaria saber que puedo hacer para que el programa que adjunto en vez de hacerme un intervalo de tiempo de 1minuto me haga de un segundo!
Os dejo el codigo en asm
;====================================
;Programa Led.asm
;Apagar y encender el puerto B cada segundo
;====================================
list p=16f84A
include "p16f84.inc"
org 00h
reset
goto inicio
org 10h
inicio
;====================================
;Configurar el puerto B como salida
;====================================
bsf STATUS,RP0
movlw 00h
movwf TRISB
bcf STATUS,RP0
;====================================
;Programa principal
;====================================
programa
movlw 00h
movwf PORTB
call sg1
movlw 0ffh
movwf PORTB
call sg1
goto programa
;===================================
;Retardos
;===================================
sg1
movlw 0ffh
movwf 0ch
movwf 0dh
movwf 0eh
salto1
decfsz 0ch,1
goto salto1
decfsz 0dh,1
goto salto1
decfsz 0eh,1
goto salto1
return
end
bueno muchas gracias por todo!
Juanolo, como diría Jack el Destripador... Vayamos por partes.
para programar un pic 16f84a se puede hacer en C? que programa me pasaria de C a hexadecimal y que similitud tiene programarlo como si hicieras un soft.
Para programar cualquier microcontrolador se puede hacer en C, únicamente necesitas un compilador que lo reconozca (como para cualquier procesador). Te puede servir el CCS (creo que tiene una versión de prueba).
que es mas sencillo en C o en ensamblador??
Si empiezas lo más sencillo es Ensamblador, si ya has programado en C es posible que te resulte más fácil programar en C (de todas formas yo te recomiendo que hagas algunos programas en ensamblador para ver como funciona el micro desde dentro).
tambien rogaria si me pudieran pasar paginas con ejercicios de pics.
Hay un libro (Ra-Ma) que esta bastante bien, además si pones en google pic16f84 te asustarás de la cantidad de páginas dedicadas a este micro (muchas con ejemplos).
En el caso que quisiera controlar por cada salida del pic un led que funciona a 3,5V solo es cambiarle la resistencia no? pero el problema esta en que necesito darle 350mA para que funcione.
No se como has hecho las cuentas ni que tipo de leds utilizas pero me voy a arriesgar... En un led normal (rojo), "caen" 1.2V, es decir que la tensión entre los bornes del led (encendido) es 1.2V, ademas debe pasar unos 10mA para que se encienda (te lo digo de memória), estos 10mA se "sacan" con el resto de la tensión (Vcc-1.2V) y una resistencia (Ley de Ohm Vcc-1.2V = 10mA * R). De todas formas si intentas que el pic de 350mA por una sola patilla es posible que lo quemes (ni siquiera por todas), lo mejor en estos casos es poner un transistor en medio para manejar esas corrientes.
tambien me gustaria saber que puedo hacer para que el programa que adjunto en vez de hacerme un intervalo de tiempo de 1minuto me haga de un segundo!
Os dejo el codigo en asm
;====================================
;Programa Led.asm
;Apagar y encender el puerto B cada segundo
;====================================
list p=16f84A
include "p16f84.inc"
org 00h
reset
goto inicio
org 10h
inicio
;====================================
;Configurar el puerto B como salida
;====================================
bsf STATUS,RP0
movlw 00h
movwf TRISB
bcf STATUS,RP0
;====================================
;Programa principal
;====================================
programa
movlw 00h
movwf PORTB
call sg1
movlw 0ffh
movwf PORTB
call sg1
goto programa
;===================================
;Retardos
;===================================
sg1
movlw 0ffh
movwf 0ch
movwf 0dh
movwf 0eh
salto1
decfsz 0ch,1
goto salto1
decfsz 0dh,1
goto salto1
decfsz 0eh,1
goto salto1
return
end
bueno muchas gracias por todo!
Así a ojo el problema esta en la función retardo (modifica los valores en función del reloj que tengas).
S2
Ranganok Schahzaman
tengo puesto un oscilador XT de 4mhz
perdona si te pregunto como lo hago pero esque n ose como hacerlo que tendria que modificar en la funcion de retardo?
por cierto lo de los leds no es una fantasia, yo poseo una empresa que se dedica a vender iluminacion decorativa con leds y utilizo leds de 1W que funcionan a 3,5V y a 350mA Luxeon Leds
un saludo
Juanolo, 😯 estas usando antorchas en vez de leds.
Para estos lo mejor es que los alimentes por medio de un Transistor, si no quemarás el pic a la que conectes uno.
Con un oscilador de 4MHz tienes una instrucción cada 1MHz (4 ciclos por instrucción), así que para 1 seg tienes que contar 1.000.000 de instrucciones.
De la función de retardo :
salto1
decfsz 0ch,1
goto salto1
decfsz 0dh,1
goto salto1
decfsz 0eh,1
goto salto1
las instrucciones decfsz var,1 decrementan el valor de la posición de memória que le indicas (var) en 1 y cuando llegan a 0 se saltan la instruccion siguiente (sino la realizan), es decir como las tienes inicializadas a 255 (FFh) cada salto se realizará 255 veces por lo que a grosso modo tienes
255*255*255 = 16581375 saltos (instrucciones son algo más del doble)
juega con los valores que le das a cada variable (por ejemplo)
255*255*7 = 455175 saltos, instrucciones = 455175 * 2 = 910350 aprox. (son más).
El programa quedaría más o menos modificado
sg1
movlw 0ffh
movwf 0ch
movwf 0dh
movlw 007h
movwf 0eh
salto1
decfsz 0ch,1
goto salto1
decfsz 0dh,1
goto salto1
decfsz 0eh,1
goto salto1
return
S2
Ranganok Schahzaman
muchas gracias!
jajja si son antorchas con 3 de ellos equivale a una dicorica de 20W jejje
bueno pues me mirare los transistores, tu me sugieres algun circuito en especial en el que pueda mirar el mismo funcionamiento?
un saludo