📄 u4091bm.c
字号:
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 + -