TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: renegomez28 en 17 de Enero de 2009, 07:09:49
-
Buen día a todos, y saludos desde el Guatemala, Soy estudiante de electrónica tengo 16 años y tengo un proyecto que entregar y me intereso bastante este proyecto que se encuentra en esta dirección:
http://www.josepino.com/pic_projects/air_display/airdisplay_code.html
pero el problema que no se como convertir este Algoritmo a un archivo .asm para luego convertirlo en un archivo HEX, para luego grabarlo en un PIC 12F629, es cierto que en la pagina se puede descargar el archivo HEX, pero yo quiero modificar los mensajes, ya hice el circuito y baje el archivo HEX de la pagina y me funciona de maravilla, pero como les repito quiero cambiar los mensajes y no se como hacer para que este Algoritmo lo pueda pasar a asm ó HEX, les agradecería toda ayuda Saludos, Mi Email: renegomez28@hotmail.com
-
Pasarlo a ASM es muy trabajoso, te conviene modificarlo en C, usando el compilador CCS PCWH por ejemplo hay que modificar muy pocas cosas.-
-
Jeje al final no era tan largo :lol: , igual aca te doy una idea, podes completarlo con el algoritmo original y la estructura que te doy aca. Yo no lo probe porque no dispongo de este PIC, pero la idea esta! :mrgreen:
A! y toda la info la presentamos aca, naaa de mails... Es para compartir con todos, como dijo algun forista, "todos para uno, uno para todos!!!" :-)
; Compilado con MPLAB IDE v7.42.-
list p=12f629 ; list directive to define processor
#include <p12f629.inc> ; processor specific variable definitions
__CONFIG _CP_ON & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF &_INTRC_OSC_NOCLKOUT & _MCLRE_ON & _CPD_OFF
;*********************************************
; Declaracion de variables
LEDS equ 0x05 ; Puerto de visualizacion de Leds
TRIS_LEDS equ 0x85 ; configuracion del puerto
PDel0 equ 0x1A ; para demoras
PDel1 equ 0x1B ; para demoras
;**********************************************
; Programa Principal
org 0x00
inicio
banksel TRIS_LEDS ; Seleccionno Bank de TRIS
clrf TRIS_LEDS ; Todos como salida
banksel LEDS ; Selecciono Bank de LEDS
bucle
call carac_T
call carac_O
call carac_D
call carac_O
call carac_SPACE
call carac_P
call carac_I
call carac_C
goto bucle
;**********************************************
; Funciones.-
;----------------------------------------------
; Envio al puerto
salida
movwf LEDS
call demora_500us
clrf LEDS
call demora_200us
return
;-----------------------------------------------
; Caracteres a enviar
;...............................................
carac_A
movlw b'00110110'
call salida
movlw b'00000101'
call salida
movlw b'00000101'
call salida
movlw b'00110110'
call salida
call demora_1ms
return
;................................................
carac_T
movlw b'00000001'
call salida
movlw b'00110111'
call salida
movlw b'00000001'
call salida
call demora_1ms
return
;................................................
carac_O
movlw b'00010110'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
movlw b'00010110'
call salida
call demora_1ms
return
;................................................
carac_D
movlw b'00110111'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
movlw b'00010110'
call salida
call demora_1ms
return
;................................................
carac_P
movlw b'00110111'
call salida
movlw b'00000101'
call salida
movlw b'00000101'
call salida
movlw b'00000010'
call salida
call demora_1ms
return
;..................................................
carac_I
movlw b'00100001'
call salida
movlw b'00110111'
call salida
movlw b'00100001'
call salida
call demora_1ms
return
;...................................................
carac_C
movlw b'00010110'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
movlw b'00100001'
call salida
call demora_1ms
return
;....................................................
carac_SPACE
call demora_4ms
return
;....................................................
; Las demas letras tienen el mismo formato, solo copiar los valores del Algoritmo
; original.-
;*******************************************************
; Demoras
;-------------------------------------------------------------
demora_500us
movlw .123 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop00
nop
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop00 ; 2 no, loop
PDelL10
goto PDelL20 ; 2 cycles delay
PDelL20
nop ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
;-------------------------------------------------------------
demora_200us
movlw .48 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop01
nop
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop01 ; 2 no, loop
PDelL11
goto PDelL21 ; 2 cycles delay
PDelL21
nop ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
;-------------------------------------------------------------
demora_1ms
movlw .248 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop02
nop
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop02 ; 2 no, loop
PDelL12
goto PDelL22 ; 2 cycles delay
PDelL22
nop ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
;-------------------------------------------------------------
demora_4ms
movlw .5 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop13
movlw .159 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop23
nop
nop ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop23 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop13 ; 2 no, loop
return ; 2+2 Done
;-------------------------------------------------------------
end
Espero que te sirva, suerte!
-
Mil Gracias y perdon por lo de el Email, pero soy tambien de la idea de que todos aprendamos, y nuevamente gracias estare probando y te comento luego, Saludos :lol:
-
Perdon con otra consulta cuantos mensajes puedo poner y donde se coloca :shock: y a la hora de grabar en el pic solo enciende un led :shock:
-
Pasarlo a ASM es muy trabajoso, te conviene modificarlo en C, usando el compilador CCS PCWH por ejemplo hay que modificar muy pocas cosas.-
me puede ayudar a modificarlo en c ya tengo el CCD PCWH para modificarlo, saludos