SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: farmada en Martes 26 de Abril de 2005, 23:38
-
Sres:
Estuve viendo el soft MIKROC y en un ejemplo de conversion A/D en el medio de sentencias en lenguaje C ponen la siguiente efectuando un llamado al ASM:
asm {
MOVF Math_Main_global_UpperWord_1,W
MOVWF _tlong0_3
MOVF Math_Main_global_UpperWord_2,W
MOVWF _tlong0_4
}
Necesitaria saber si alguno de ustedes sabe que es en realidad esta sentencia y que significa por ejemplo "Math_Main_global_UpperWord_2,W".
Les pongo el programa.
unsigned char ch0;
int , t0;
char a[17], *tc0;
long tlong0;
void main() {
LCD8_Config(&PORTB, &PORTD, 2,1,0, 7,6,5,4,3,2,1,0); // Same as previous
LCD8_Init(&PORTB, &PORTD); // Initialize LCD8 connected to PORTB
LCD8_Cmd(LCD_CLEAR); // Clear display
LCD8_Cmd(LCD_CURSOR_OFF); // Turn cursor off
//LCD8_Out(1,1, text); // Print text to LCD8, 2nd row, 1st column
OPTION_REG = 0x80;
ADCON1 = 0x82;
TRISA = 0XFF;
tc0 = "Voltaje";
do {
t0 = ADC_read(0);
LCD8_Out(1,1,tc0);
tlong0 = t0 * 5000;
asm {
MOVF Math_Main_global_UpperWord_1,W
MOVWF _tlong0_3
MOVF Math_Main_global_UpperWord_2,W
MOVWF _tlong0_4
}
t0 = tlong0 >> 10;
ch0 = t0/1000;
LCD8_Chr(1,9,48+ch0);
LCD8_Chr_CP('.');
ch0 = (t0/1000) % 10;
LCD8_Chr_CP(48+ch0);
ch0 =(t0/10) % 10;
LCD8_Chr_CP(48+ch0);
ch0 = t0 % 10;
LCD8_Chr_CP(48+ch0);
LCD8_Chr_CP('V');
}while (1);
Muchas gracias.
-
Esta sentencia mueve el contenido de la variable "Math_Main_global_UpperWord_2" dentro del registro W para lo que necesites hacer con el... la variable es un byte declarado al comienzo del programa, es un espacio de memoria que se utiliza para almacenar datos. MOVF Variable,W mueve el contenido de Variable al registro de trabajo Work (W). Saludos :)