'Pic16F628A, oscilador interno 4Mhz
'Configuración de fuses
#define CONFIG = 0x3f50
Define CLOCK_FREQUENCY = 4 'Oscilador a 4Mhz
'Include "_FuncionesPic16F628A.bas"
'Include "_FunctionesTmrBase.bas"
'Call _setup_oscillator(_osc_4Mhz)
PCON.OSCF = 1 'Oscilador interno 4Mhz
'Inicializa Timer1 para generar una interrupción cada 1mSeg.
'Call _setup_timer1(_tmr1_internal, _tmr1_div1) 'Configura TMR1 para 4Mhz
T1CON = 0 'Asigna oscilador interno para el tmr1
T1CON.T1CKPS1 = 0 'Asigna el divisor
T1CON.T1CKPS0 = 0
'Call _set_timer1(0xfc17) 'Carga contador TMr1 para contar 1mSeg.
T1CON.TMR1ON = 0 'Para el contador del TMR1
TMR1H = 0xfc 'Recarga el byte alto
TMR1L = 0x17 'Recarga el byte bajo
T1CON.TMR1ON = 1 'Activa el contador del TMR1
PIR1.TMR1IF = 0 'Flash dosborde a cero
'Call _timer1(_on) 'Pone en marcha el Tmr1
T1CON.TMR1ON = 1 'Activa el contador del TMR1
'Call _enable_interrupts(_int_timer1) 'Permite las interrupciones por desborde Tmr1
PIE1.TMR1IE = 1 'Permite la interrup. TIMER1
'Call _enable_interrupts(_global) 'Permte las interrupciones globales
INTCON.PEIE = 1 'Bit habilita interrupciones perifericos
Enable 'INTCON.GIE habilita las interrupciones
'************************************************************
AllDigital
'Contadores para generar las bases de tiempos.
_contador1 = 0
_contador2 = 0
Main:
';en esta parte necesito hacer el retardo
IF sw1
= 0 AND _contador1
= 0 THEN High led1 ';al presionar sw1 se enciende el led
_contador1 = 1100 'Carga contador con 1Seg.
Endif
IF sw2
= 0 AND _contador2
= 0 THEN Low led1 ';al presionar sw2 se apaga, pero necesito que lo haga
_contador2 = 2000 'Carga contador con 2Seg.
Endif
GOTO Main
'****************************
Save
SYSTEM 'Guarda calculos intermedios y otros del sistema 'Detecta interrupción Timer1
IF PIR1.TMR1IF = 1 THEN
'Call _set_timer1(0xfc17) 'Recarga registros TMR1 para desborde 1mSeg. y borra PIR1.TMR1IF
T1CON.TMR1ON = 0 'Para el contador del TMR1
TMR1H = 0xfc 'Recarga el contador byte alto
TMR1L = 0x17 'Recarga el contador byte bajo
T1CON.TMR1ON = 1 'Activa el contador del TMR1
PIR1.TMR1IF = 0 'Flash dosborde a cero
IF _contador1 > 0 THEN _contador1 = _contador1 - 1 '_contador BT
IF _contador2 > 0 THEN _contador2 = _contador2 - 1 '_contador BT
Endif
RESUME
'******************************