TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: groundman en 15 de Agosto de 2010, 12:10:48
-
hola.estoy empezando a programar los 18Fxxxx en ensembler.ya que este tema esta dedicado al asm.en los demas me dicen que lo mejor en estos pics,
es acerlo todo en C.
aunque no pongo contra.solo puedo decir que si se quiere aprender bien el funcionamiento de esta serie.hay que empezar desde los cimientos.
otra cosa es que solo nos interese realizar un programa que nos realize una funcion determinada y que nos funcione.cada cual tiene sus preferencias.
en la migracion de los 16F a los 18F me he dado cuenta de que esto es un mundo bastante diferente y con mayor complejidad.sin embargo tenemos
la mitad del trabajo realizado.al haber estudiado las series anteriores.y cullos modulos equivalentes no difieren mucho de entre ellos.solo la forma
en tratar los datos.
como primer problema que se me plantea,resulta que al declarar la etiqueta include "18F4550.inc"
algunos etiquetas que definen el registro SSPCON2.como son ACKEN,ACKDT,ACKSTAT.con sus respectivos valores 0x04,0x05,0x06.
se introducen en la memoria ram como si los hubiera declarado en un CBLOOK.
tambien estan A,ADCS1,ACTVIE,ACQT0,y ABDOVF con sus respectivos valores 0x00,0x01,0x02,0x03,0x07.
y que ocupan sus respectivas direcciones tambien en la memoria RAM.
como estoy empezando con esta serie.supongo que no he declarado algo en el compilador para que esto no pase.
haber si le a pasado a alguien algo parecido.
saludos.
-
hola.estoy empezando a programar los 18Fxxxx en ensembler.ya que este tema esta dedicado al asm.en los demas me dicen que lo mejor en estos pics,
es acerlo todo en C.
aunque no pongo contra.solo puedo decir que si se quiere aprender bien el funcionamiento de esta serie.hay que empezar desde los cimientos.
otra cosa es que solo nos interese realizar un programa que nos realize una funcion determinada y que nos funcione.cada cual tiene sus preferencias.
E muy cierto lo que comentas, ayuda mucho a entender el funcionamiento. Pero con un par de proyectos alcanza, después sácales provecho y ahorra mucho tiempo programando en C. ;-)
en la migracion de los 16F a los 18F me he dado cuenta de que esto es un mundo bastante diferente y con mayor complejidad.sin embargo tenemos
la mitad del trabajo realizado.al haber estudiado las series anteriores.y cullos modulos equivalentes no difieren mucho de entre ellos.solo la forma
en tratar los datos.
como primer problema que se me plantea,resulta que al declarar la etiqueta include "18F4550.inc"
algunos etiquetas que definen el registro SSPCON2.como son ACKEN,ACKDT,ACKSTAT.con sus respectivos valores 0x04,0x05,0x06.
se introducen en la memoria ram como si los hubiera declarado en un CBLOOK.
tambien estan A,ADCS1,ACTVIE,ACQT0,y ABDOVF con sus respectivos valores 0x00,0x01,0x02,0x03,0x07.
y que ocupan sus respectivas direcciones tambien en la memoria RAM.
como estoy empezando con esta serie.supongo que no he declarado algo en el compilador para que esto no pase.
haber si le a pasado a alguien algo parecido.
saludos.
Te refieres a que se define:
SSPCON2 EQU H'0FC5'
y:
;----- SSPCON2 Bits --------------------------------------------------------
GCEN EQU H'0007'
ACKSTAT EQU H'0006'
ACKDT EQU H'0005'
ACKEN EQU H'0004'
RCEN EQU H'0003'
PEN EQU H'0002'
RSEN EQU H'0001'
SEN EQU H'0000'
?
Estas definiciones dependen de como lo utilices, si tu haces:
movlw SSPCON2
Estás cargando el valor 0xFC5 al registro W.
Pero en cambio:
movwf SSPCON2
Estás cargando el contenido de W al registro SSPCON2.
Los bits son definidos para trabajar por ejemplo:
bsf SSPCON2, PEN
Estas seteando el bit PEN del registro SSPCON2.
Saludos!
-
gracias suky por tu explicacion.eso lo entiendo.
hay mucho registros en el p18F4550.inc que se definen sus bit por una etiqueta para facilitar la programacion.
el problema esta en el porque toma el compilador a estas etiquetas como si fueran registros?.
te adjunto el programa para que veas lo que quiero decir.
-
No puedo abrir tu proyecto, porque tiene la simulación de proteus, y por lo visto me falta un archivo... :5] Guardalo más simple por favor..
Saludos!
-
valla. lo pongo sin simulador.
-
gracias suky por tu explicacion.eso lo entiendo.
hay mucho registros en el p18F4550.inc que se definen sus bit por una etiqueta para facilitar la programacion.
el problema esta en el porque toma el compilador a estas etiquetas como si fueran registros?.
te adjunto el programa para que veas lo que quiero decir.
Es cierto lo que comentas, toma esas definiciones como registros. Y es porque se utiliza la sentencia xxxx equ 0xXX para la definición. Pero no le des importancia, mientras tu lo utilices de forma correcta no habrá problemas.
Después viendo el código, y por más que estén comentados, ten en cuenta que estos microcontroladores tienen dos vectores de interrupciones ubicados en 0x08 y 0x18.
Saludos!
-
Hola groundman hace tiempo estuve siguiendo tus pasos , puse lo que fui haciendo en este post (http://www.todopic.com.ar/foros/index.php?topic=22737.0) talvez y te pueda servir de algo.
Saludos
-
Es cierto lo que comentas, toma esas definiciones como registros. Y es porque se utiliza la sentencia xxxx equ 0xXX para la definición. Pero no le des importancia, mientras tu lo utilices de forma correcta no habrá problemas.
Después viendo el código, y por más que estén comentados, ten en cuenta que estos microcontroladores tienen dos vectores de interrupciones ubicados en 0x08 y 0x18.
Saludos!
tienes razon suky.no importa lo de las etiquetas.mientras los valores de los registros sean los que tienen que ser.aunque podemos confundirnos a la hora de programar si no estamos atentos.
esto debe de ser algun fallo del mplab.por eso no me voy a romper la cabeza valla a que no tenga solucion.
-
Hola groundman hace tiempo estuve siguiendo tus pasos , puse lo que fui haciendo en este post (http://www.todopic.com.ar/foros/index.php?topic=22737.0) talvez y te pueda servir de algo.
Saludos
gracias sander.me va a resultar muy util tus ejemplos para empezar con esta serie de pic.
-
:5] no puedo ignorar este error.
resulta que al insertar el archivo .inc y ponerlo a partir de la direccion 0x080 no hay ningun problema.
pero si lo pongo en la 0x079 ya empiezan los errores al compilar.
ya que el mplab ha cojido la configuracion de los bits _CPD_ON_5H del registro CONFIG5H como un registro.
y me ocupa la direccion 0x079 que realmente es un valor a asignar al CONFIG5H.
creo que no estoy declarando alguna directiva del compilador.
esto hay que buscar el fallo como sea. :?