⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u4091bm.c

📁 some routines to control a n u4091 using c for msp controller
💻 C
📖 第 1 页 / 共 2 页
字号:
  retardo_u4091(150);
  }
  while(++Contador<5);
  strobe_u4091();
  // Proceder a invertir el sentido del pin de SDA a modo entrada
  ENTRADA_SDA_U4091();                                                        // pasar a modo entrada SDA
  retardo_u4091(130);
  // Realizar la lectura
  Registro=0; Contador=0;                                                     // Iniciar la lectura
  do
  {
   Registro<<=1;                                                               // Apuntar al siguiente bit
   APAGAR_CLK_U4091();                                                        // Garantiza el clk en bajo
   retardo_u4091(150);
   ACTIVAR_CLK_U4091();                                                       // Inicia el proceso
   retardo_u4091(150);
   if(INPUT_SDA_4091)                                                          // si se lee 1 en la entrada
     {
       Registro|=0x01;                                                          // inserta 1
     } 
     else
     {
       Registro&=0xFE;                                                          // inserta 0
     }
  }
  while(++Contador<8);
  APAGAR_CLK_U4091();                                                         // Garantiza el clk en bajo
  retardo_u4091(150);
  ACTIVAR_CLK_U4091();                                                        // Inicia el proceso
  SALIDA_SDA_U4091();                                                         // Volver a modo salida la linea SDA 
  
 return Registro;
  
}


/*_____________________________________________________________________________________________________________________________________________________________________________
  escribir_u4091.c
  Version 1.0             Julio 9 2008
  Escribir en un registro del chip telefonico U4091BM
      Parametros-
        Registro- Numero del registro que se escribe
        Dato- Byte que se desea escribir en el registro
  Ubiquos Ltda.                                                                                                       Alexander Espinosa G.
  _____________________________________________________________________________________________________________________________________________________________________________*/
void escribir_u4091(unsigned char Registro, unsigned char Dato)
{
 unsigned char Contador;
 unsigned int Trama;
  
  Trama=Dato;                                                                 // Construir la trama q se envia
  Trama<<=4;                                                                  // Dato en la parte alta
  Trama &=0xFFF0;
  Trama|=Registro;                                                            // trama de 12 bits para enviar 
  Trama<<=1;                                                                  // espacio para el bit 13
  Trama&=0xFFFE;                                                              // Bit de escritura
  APAGAR_CLK_U4091();                                                         // Garantiza el clk en bajo
  SALIDA_SDA_U4091();                                                         // asegura que SDA este en modo salida
  // Este ciclo envia 13 bits hacia el U4091 
  Contador=0;
  do
  {
   APAGAR_CLK_U4091();                                                        // Garantiza el clk en bajo
   if(Trama & 0x1000)                                                          // revisar el bit mas significativo de los 13 bits                          
   {
     ACTIVAR_SDA_U4091();                                                     // si es 1, se enciende la linea de data
   }
   else
   {
     APAGAR_SDA_U4091();                                                      // si es 0, se apaga la linea de data
   }
   retardo_u4091(150);
   // Subir el nivel del reloj para latchar el bit en el U4091
   ACTIVAR_CLK_U4091();
   Trama<<=1;                                                                  // Apuntar al siguiente bit
   retardo_u4091(150);
  }
  while(++Contador<13);
// Despues de enviar el bit de escritura se genera un strobe para iniciar la escritura interna
  strobe_u4091();  
}


/*_____________________________________________________________________________________________________________________________________________________________________________
  strobe_u4091.c
  Version 1.0             Julio 9 2008
  Generera un strobe de comando en la linea SDA y SCL
  Ubiquos Ltda.                                                                                                       Alexander Espinosa G.
  _____________________________________________________________________________________________________________________________________________________________________________*/
void strobe_u4091()
{
  APAGAR_CLK_U4091();                                                         // Baja el clk para poder subir la linea de datos
  retardo_u4091(75);
  ACTIVAR_SDA_U4091();                                                        // preparar el STROBE
  retardo_u4091(75);
  ACTIVAR_CLK_U4091();
  retardo_u4091(150);
  APAGAR_SDA_U4091();                                                         // inicia el strobe
  retardo_u4091(150);
  ACTIVAR_SDA_U4091();                                                        // genera el STROBE

}

/*_____________________________________________________________________________________________________________________________________________________________________________
  sensibilidad_microfono(Sens_microfono)
  Version 1.0             Julio 9 2008
  Aumenta o disminuye la sensibilidad del microfono de la consola
      Parametros-
      Sens_microfono- Valor de sensibilidad del microfono: 4- niveles
  Ubiquos Ltda.                                                                                                       Alexander Espinosa G.
  _____________________________________________________________________________________________________________________________________________________________________________*/
void sensibilidad_microfono(unsigned char Sens_microfono)
{
  Sens_microfono<<=6;                                                         // Ubicar los 2 bits de control del microfono
  Sens_microfono|=0x3F;                                                       // Encender el resto de bits en el byte de control
  escribir_u4091(R5_U4091, Sens_microfono);                                   // Programar el valor de sensibilidad
}

/*_____________________________________________________________________________________________________________________________________________________________________________
  parlante()
  Version 1.0             Julio 9 2008
  Fija el valor de volumen del speaker de acuerdo al valor de la variable global Volumen
  Ubiquos Ltda.                                                                                                       Alexander Espinosa G.
   _____________________________________________________________________________________________________________________________________________________________________________*/
void fijar_volumen()
{
  unsigned char Ganancia;
  
  Ganancia=Volumen;
  Ganancia|=0x20;
  escribir_u4091(R10_U4091, Ganancia);
}


/*_____________________________________________________________________________________________________________________________________________________________________________
  retardo_u4091.c
  Version 1.0             Julio 9 2008
  Retardo para uso de las rutinas de u4091BM
      Parametros-
        Retardo- Contador de retardo
  Ubiquos Ltda.                                                                                                       Alexander Espinosa G.
  _____________________________________________________________________________________________________________________________________________________________________________*/
void retardo_u4091(unsigned char Retardo)
{
  while(--Retardo);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -