• Domingo 22 de Diciembre de 2024, 13:53

Autor Tema:  Sentencias De Asm  (Leído 1885 veces)

farmada

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Sentencias De Asm
« en: Martes 26 de Abril de 2005, 23:38 »
0
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.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Sentencias De Asm
« Respuesta #1 en: Martes 26 de Abril de 2005, 23:48 »
0
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 :)
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»