TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jorje2005 en 08 de Julio de 2005, 17:02:00
-
Hola listeros ,recien empiezo con el C y se me presentaron inconvenientes migrando codigo assembler(#asm #endasm) desde mplab al C ,el C no me reconoce los registros del pic status,option_reg,porta,etc...ovbio que habra una forma de definirlos pero no encuentro nada en la ayuda,solo hay un ejemplito chico en assebmler donde rescate que hay que poner dos puntos antes de los labels de las subrutinas...
alguien me puede dar una manito??
gracias por adelantado!
Jorge
-
Buenas:
Trabajo con ccs, no controlo muxo de assembler, mas concretamente casi na. Pero de C aun tengo un pokito de idea, de lo que hablas creo que si instalaste el compilador de ccs en el ordenata, en archivos de programa, tendras una carpeta que ponga PIC (si no es asi la ruta que le pusiste cuando lo instalaste), en la carpeta a la que me refiero tienes otras carpetas, una es de ejemplos donde tienes codigos de como manejar algun dispositivo, otra de drivers donde te pone ejemplos de como crear codigo para manejar un dispositivo y , ademas de otras, la que nos interesa, devices donde estan las librerias de los micros, echale un vistazo a la libreria del micro que uses y a ver si sacas una ideita.
1Saludo, Jorge
-
Ya encontre como definir los puertos...#byte , pero sigue sin andar cuando intento hacerlo en assembler
!!!!(el tema con el assembler es que tengo mucho codigo hecho y algunas cosas me conviene migrarlas como subrutinas en vez de escribir todo de nuevo)
ahi va la prueba que estoy haciendo de prender un led en PORTE,1,en la hoja de datos del 18f452 el PORTE esta en la posicion de memoria 84h,es decir 132 en decimal,asi que defino el puerto #byte porte= 132....alguien tiene idea porque esto no anda????please helpppp!
#include "18f452.h"
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#DEFINE LED PIN_E1
#byte porte= 132
SET_TRIS_E(00000000);//E0,E1,E2 como salidas-
void main() {
//output_bit(led,1); prueba en c anda sin problemas
#asm
bsf porte,1 ;en assembler no anda
#endasm
}
-
Mete el SET_TRIS_E(00000000) en el main de lo contrario no te programa la salida.
Con output_bit no es necesario el set_tris, programa el puerto automáticamente cuando encuentra la instrucción output_bit.
Un saludo
-
OK,gracias ,todo solucionado,simule en mplab y encontre los problemas,1 la posision ce memoria del puerto del puerto E era F84h es decir #byte porte= 3972,y segundo como dijo el amigo porcher el tris va adentro del lazo main...
gracias a todos!!empiezo a migrar assembler...
saludosssss
jorje