pic Jul. 2016 | Page 93

6.4.5 También conviene saber Este C asume la directiva #asm, a continuación de la cuál seguirá un trozo de código en ensamblador. Para regresar a la programación en C deberemos incluir, tras la secuencia de código, #endasm. Puede ver ejemplos editando cualquiera de las librerías, sitas en el directorio Pic_lib. Podrá, a su vez, hacer referencia a los argumentos de la rutina en la que esté el código mediante #0, #1 ... #n, siendo el número la posición del argumento en la llamada a la rutina, comenzando por 0. Las definiciones de constantes en ensamblador están en Pic_rt\16c84. _portA y _portB, por ejemplo, referencian a esos puertos, así como eedata, eeaddr, eecon1 y eecon2. También contiene macros como _push_, _pop_, _swap_, _swaps_, o _indr_, que son usados internamente por el compilador. Puesto que manejan los cuatro registros reservados para el C (estos son _primary, _secondary, _temp y _stackptr) no conviene que los use si no los comprende muy bien, ya que podría alterar el buen funcionamiento de su programa. Las direcciones de esto cuatro registros son 0x2f, 0x2e, 0x2c y 0x2b. Procure no usarlos en su código en ensamblador. Es posible generar una rutina específica de interrupción. El paso a seguir sería editar el fichero Pic_rt\16c84 y alterar la línea: interrupt jmp $ ; set to your interrupt routine Cambiándola por: interrupt call RSI_ jmp $ A partir de ese momento bastará con que cree una rutina llamada RSI() para que sea interpretada como de servicio de interrupción y ejecutada 91