コード例 #1
0
ファイル: main.c プロジェクト: w33t7/Examples
void main(void)
{
    _U08 u8Adc = 0;
    _U08 u8Val;
    _U16 u16Volts;

    ANCON0 = 0xff;
    ANCON1 = 0xff;

    Adc_Init(ADC_8BITS);
    Timers_Init();                      /*inicializamos el driver para genere una interrupcion cada 5ms*/
    _7segments_Init();                  /*configuramos los pines como salidas*/
  
    __ENABLE_INTERRUPTS();   /*se habilitan las interrupciones globales con prioridad*/

    while (1)
    {
        if(Timers_u16GetTime(0) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 0*/
        {
            Timers_SetTime(0, 5/timers_ms);/*se cumplen los 5ms asi que volvemos a recargar el mismo canal */
            _7segments_Task();              /*actualiza el valor en el display y multiplexa al siguiente display*/
        }
        if(Timers_u16GetTime(1) == 0)/*preguntamos si la interrupcion decrmento hasta llegar a 0 el canal 1*/
        {
            Timers_SetTime(1, 100/timers_ms);       /*se cumplen los 200ms asi que volvemos a recargar el mismo canal */
            u8Adc = Adc_u16Read( 3 );               /*se lee el canal del adc*/
            u16Volts = (_U16)u8Adc * (_U16)13;      /*se trasnforma la lectura en milivolts*/
            _7segments_SetNumber(u16Volts/10);      /*actualizamos el display con el valor en volts*/
            u8Val = _7segments_u8GetDisplay(2);     /*se lee el tercer display*/
            _7segments_SetDisplay(2, u8Val|0x80);   /*se agrega el punto decimal*/
        }
    }
}
コード例 #2
0
ファイル: _7segments.c プロジェクト: Hotboards/CodeBank8
/**-----------------------------------------------------------------------------------------------*/
void _7segments_SetNumber(_U16 u16Value)
{
    _U08 u8Digi;

    u8Digi = (_U08)(u16Value % (_U16)10); /*unidades*/
    _7segments_SetDisplay(0, gua8Numbers[u8Digi]);
    #if _7SEGMENTS_DIGI_N > 1
        u8Digi = ((u16Value / (_U16)10) % (_U16)10); /*decenas*/
        _7segments_SetDisplay(1, gua8Numbers[u8Digi]);
    #endif
    #if _7SEGMENTS_DIGI_N > 2
        u8Digi = (_U08)((u16Value / (_U16)100) % (_U16)10); /*centenas*/
        _7segments_SetDisplay(2, gua8Numbers[u8Digi]);
    #endif
    #if _7SEGMENTS_DIGI_N > 3
        u8Digi = (_U08)(u16Value / (_U16)1000); /*millares*/
        _7segments_SetDisplay(3, gua8Numbers[u8Digi]);
    #endif
}