Hola!
Estoy tratando de reducir intrucciones generadas por el compilador , asi ahorrar tiempo.Uso un pic18F252
Leyendo sus especificaciones este contiene Hardware multiplicador de 8x8 con resultado de 16bits
Estoy multiplicando 8*8=16bits en CCS
tiempos[servos]*=40; <---- Esto con el CCS
y me genera este asm que consume 38ciclos
117: tiempos[servos]*=40; //250 pasos 8us x paso como prescala 0.2xtic
056E 90D8 BCF 0xfd8, 0, ACCESS
0570 343D RLCF 0x3d, W, ACCESS
0572 6A03 CLRF 0x3, ACCESS
0574 0F3E ADDLW 0x3e
0576 6EE9 MOVWF 0xfe9, ACCESS
0578 0E00 MOVLW 0
057A 2003 ADDWFC 0x3, W, ACCESS
057C 6EEA MOVWF 0xfea, ACCESS
057E CFEC MOVFF 0xfec, 0x6b
0582 52ED MOVF 0xfed, F, ACCESS
0584 CFEF MOVFF 0xfef, 0x6a
0588 6A6D CLRF 0x6d, ACCESS
058A 0E28 MOVLW 0x28
058C 6E6C MOVWF 0x6c, ACCESS
058E DF01 RCALL 0x392
0590 C001 MOVFF 0x1, 0xfef
0594 C002 MOVFF 0x2, 0xfec
Revisando las especificaciones la Instruccionconsume solo 1ciclo
MULWF
;Por lo que escribi esto
int aux=50;
#asm
movf aux,0
MULWF 0x0a
#endasm
en el Disasembley list
78: #asm
79: movf aux,0
050E 5062 MOVF 0x62, W, ACCESS
80: MULWF 0x0a
0510 020A MULWF 0xa, ACCESS
81:
82: #endasm
No me da problemas de compilacion pero en el mplab no veo que multiplique , no hay ningun valor en el registro PRODH:PRODL
Alguno de ustedes ha tenido el mismo problema , o trabaja con estas intrucciones con el CCS
Revise el foro de CCS C pero no dan respues y parece que no funciona esa instruccion en el compilador >_<
Agradezco su ayuda
Adjunto imagen, como ven despues de ejecutar no hay ningun resultado , veo que W si carga bien el valor.Pero la multiplicacion no se hace >_<
http://img143.imageshack.us/img143/6749/mulwf.jpg