Ejemplo n.º 1
0
void timer_interrupt() {
    static UINT8 pin;
	static UINT8 on;

    /* reset the timer */
    HWREG(TCNT0) = 256-DELAY; 
	    
	toggle_pin(DRV_PORTB+DRV_GPIO_PORT_OFFSET,pin);
	/* increment to next pin after toggle on/off once. */
	if ( pin < 8 ) {
	    if ( on<1 ) {
			on++;
        } else {
   	        pin += 1;
			on = 0;
        /* if the operator is pressing the current button then
	       reset the count */
            if ( drvTestBit(DRV_PORTD,DRV_GPIO_PIN_OFFSET,pin) )
	            pin = 0;
        }
    }
    else 
	    pin = 0;

}
Ejemplo n.º 2
0
void flash() {
	toggle_pin(flash_port, flash_pin);
}		
Ejemplo n.º 3
0
void main() {
volatile uchar nPulse		=	0;        // numero dell'impulso da controllare. if==0 allora vai CONTINUO.
volatile uchar loopCounter	=	0;
volatile uchar delayKeyb	=	250;
rom char *BLANK16 			= 	"                ";


	// nPSA			=	Tmr0Value;
	nPSA			=	0;
	mSecScale		=	0;
	TMRO_TabEntry	=	0;
    irqType 		= 	0;
    KeybValue 		= 	0;		// valore del HC148
    uchar j;
    
    
    // uchar Tmr0Value = eeprom_read(_EEPROM);
	
	
	Init_Registers();
    initPorts();
	LCD_initialize();
    LCD_Clear();

    // intcon_RBIE  = 1;                // Change of state (COS) on RB4 to RB7

    // stTMR0.tmr0Value   = TMR0_vals[mSecScale];
    // stTMR0.delayVal  = TMR0_cntr[mSecScale];
    // stTMR0.psaValue    = TMR0_psa[mSecScale];
    // stTMR0.scale  = mSecSCALE[mSecScale];
    
    stTMR0.tmr0Value       = TMR0_vals[mSecScale];
    stTMR0.delayVal        = TMR0_delay[mSecScale];
    stTMR0.psaValue        = TMR0_psa[mSecScale];
    stTMR0.scale           = mSecSCALE[mSecScale];
    stTMR0.extraCounter    = TMR0_cntr[mSecScale];
    
    delayNum = 0;
	while (1) {
		clear_wdt();
        displayCfgValues();
		loopCounter++;
        if (loopCounter > 3) delayKeyb = 200;		// Next wait più basso
        if (loopCounter >10) delayKeyb = 10;		// Next wait più basso
        readKeyboard(delayKeyb);
        // LCD_printf(0,0, "KEYB: %02X", KeybValue);

		switch (KeybValue) {
				
                // Value of PSA 0x00 to 0x07	
			case KEY_PSA_UP:
			case KEY_PSA_DN:
                stTMR0.psaValue++;
                if (stTMR0.psaValue > 0x08) stTMR0.psaValue = 0x00;
				continue;

				// increments the TMR0 value by 4096 units
			case TMR0_UP_0x1000:
                stTMR0.extraCounter++;
				continue;
                
				// increments the TMR0 value by 256 units
			case TMR0_UP_0x0100:
                stTMR0.tmr0Value += 0x0100;
				continue;
				
                // increments the TMR0 value by 16 units
			case TMR0_UP_0x0010:
                stTMR0.tmr0Value += 0x0010;
				continue;

				// decrements the TMR0 value by 1 units
			case TMR0_UP_0x0001:
                stTMR0.tmr0Value++;
				continue;
			
				// value of time to select (1mSec, 10mSec, 100mSec, 1Sec)
			case KEY_mSecSCALE:
			case KEY_mSecSCALE_DN:
                
                TMR0_psa[mSecScale]     =  stTMR0.psaValue   ;
                TMR0_cntr[mSecScale]    =  stTMR0.extraCounter;
                TMR0_vals[mSecScale]    =  stTMR0.tmr0Value  ;
                mSecSCALE[mSecScale]    =  stTMR0.scale ;
				
                mSecScale++;
				if (mSecScale > 4) mSecScale = 0;
                
                stTMR0.psaValue      = TMR0_psa[mSecScale];
                stTMR0.extraCounter  = TMR0_cntr[mSecScale];
                stTMR0.tmr0Value     = TMR0_vals[mSecScale];
                stTMR0.scale         = mSecSCALE[mSecScale];
				
                continue;

			case TMR0_DN_0x1000:
                stTMR0.extraCounter--;
				continue;

				// decrements the TMR0 value by 256 units
			case TMR0_DN_0x0100:
                stTMR0.tmr0Value -= 0x0100;
				continue;

				// decrements the TMR0 value by 16 units
			case TMR0_DN_0x0010:
                stTMR0.tmr0Value -= 0x0010;
				continue;

				// decrements the TMR0 value by 1 units
			case TMR0_DN_0x0001:
                stTMR0.tmr0Value--;
				continue;
				
			case KEY_START2:
            case KEY_START:
                openGate();
                continue;

				// decrements the TMR0 value by 4096 units
            default:
				break;

		}

		toggle_pin( MyLED );		// attento al ';' finale se metterlo nella MACRO o meno
        TMR0_GATE_LINE  = 0;				//Turn OFF Gate line

		intcon_RBIE = 1;        //Enable PortB4-7 IRQ
        sleep();
        intcon_RBIE = 0;        //Disable PortB4-7 IRQ
		delayKeyb   = 250;  // valore di default
	}

}
Ejemplo n.º 4
0
void  KeyBoard_SetTMR0() {
    uchar KeybValue;
    uchar delayKeyb;
    uchar loopCounter   = 0;
    bool LOOP           = true;
       
    LCD_Clear();
    LCD_printRom(0,0, romStr_SETTING_TRM0_STRING);
    // delay_s(3);
    delay_ms(250);

	while (LOOP) {
		clear_wdt();
        delayKeyb   = 100;          // valore di default
        if (loopCounter++ > 3) delayKeyb = 1;		// Next wait più basso
        delay_ms(delayKeyb);
        
        // -- Leggiamo i dati dalla porta
        KeybValue = readPortB47();
        displayTMRValues();

		switch (KeybValue) {
				
				// value of time to select (1mSec, 10mSec, 100mSec, 1Sec)
			case TMR0_mSecSCALE:
			case TMR0_mSecSCALE_DN:
                gcGateIndex++;
				if (gcGateIndex >= MAX_nGATEs) gcGateIndex = 0;
                pTMR = &stTMR[gcGateIndex];                // change pointer to TMR0 value for the selected scale
                continue;

				// increments the ExtraCounter
			case TRM0_ExtraCounter:
                pTMR->extraCounter++;
				continue;
 				
                // increments the ExtraDelay
			case TMR0_ExtraDelay:
                pTMR->delay++;
				continue;
                
				// increments the TMR0 value by 256 units
			case TMR0_UP_0x0100:
                pTMR->tmr += 0x0100;
				continue;
				
                // increments the TMR0 value by 16 units
			case TMR0_UP_0x0010:
                pTMR->tmr += 0x0010;
				continue;

				// decrements the TMR0 value by 1 units
			case TMR0_UP_0x0001:
                pTMR->tmr++;
				continue;
			
				// increments the ExtraCounter
			case TRM0_ExtraCounter_DN:
                pTMR->extraCounter--;
				continue;
 				
                // increments the ExtraDelay
			case TMR0_ExtraDelay_DN:
                pTMR->delay--;
				continue;

				// decrements the TMR0 value by 256 units
			case TMR0_DN_0x0100:
                pTMR->tmr -= 0x0100;
				continue;

				// decrements the TMR0 value by 16 units
			case TMR0_DN_0x0010:
                pTMR->tmr -= 0x0010;
				continue;

				// decrements the TMR0 value by 1 units
			case TMR0_DN_0x0001:
                pTMR->tmr--;
				continue;
				
            //case TMR0_TEST_GATE:
                // openTMR0Gate();
                // openTMR0Gate(pTimerX);
            //    openTMR1Gate();
            //    continue;
			
            case TMR0_EXIT:
                if (loopCounter == 0) {		// Next wait più basso
                	LOOP = false;
                    break;
                }
                else 
                    continue;
                
            default:
				break;

		}
    
        if (fSTART_KEY == true) {
            fSTART_KEY = false;
            LCD_Clear();
            return;
            // LOOP = false;
        }
        
        // Waiting for Keyboard irq
        RBIF_intcon     = 0;	            //IRQ-Flag RB7:RB4 pins changed state
        sleep();
		
        // ripristiniamo alcune variabili al loro default
        loopCounter = 0;            // reset counter
		toggle_pin( MyLED );		// attento al ';' finale se metterlo nella MACRO o meno
        
	}
    return;
}
Ejemplo n.º 5
0
void toggle_e_pin () {
  toggle_pin (&LCD_CTL_PORT, LCD_E_PIN);
}