Este es un ejemplo sencillo para comprobar que no compila las divisiones enteras:
# include <16f84a.h>
# use delay(clock=4000000)
# byte puerto_a=5
# byte puerto_b=6
void main(void)
{
int var = 0;
set_tris_a(0x1f);
set_tris_b(0x00);
while (true)
{
var=puerto_a;
puerto_b=var/18;
}
}
Cuando compila el codigo fuente el resultado en asembler es el siguiente:
CCS PCM C Compiler, Version 3.163, 15174
Filename: c:documents and settingsubénescritorioasmcdivisiondiv.LST
ROM used: 44 (4%)
Largest free fragment is 980
RAM used: 3 (4%) at main() level
6 (9%) worst case
Stack: 1 locations
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 019
0003: NOP
....................
....................
....................
....................
....................
.................... # include <16f84a.h>
.................... //////// Standard Header file for the PIC16F84A device ////////////////
.................... #device PIC16F84A
.................... #list
....................
.................... # use delay(clock=4000000)
.................... # byte puerto_a=5
.................... # byte puerto_b=6
....................
.................... void main(void)
.................... {
0019: CLRF 04
001A: MOVLW 1F
001B: ANDWF 03,F
.................... int var = 0;
001C: CLRF 0F
.................... set_tris_a(0x1f);
001D: MOVLW 1F
001E: TRIS 5
.................... set_tris_b(0x00);
001F: MOVLW 00
0020: TRIS 6
.................... while (true)
.................... {
.................... var=puerto_a;
0021: MOVF 05,W
0022: MOVWF 0F
.................... puerto_b=var/18;
0023: MOVF 0F,W
0024: MOVWF 10
0025: MOVLW 12
0026: MOVWF 11
0027: GOTO 004 nos envia a una direccion sin instrucciones
0028: MOVF 0D,W
0029: MOVWF 06
.................... }
002A: GOTO 021
.................... }
....................
002B: SLEEP
He probado con varias versiones del compilador , obteniendo el mismo resultado.
Agradeceria cualquier ayuda para obtener los resultados deseados.