예제 #1
0
extern u8 Keypad_u8Read(void)
{
	u8 Local_u8LoopRowCounter=0;
	u8 Local_u8LoopCounter=0;
	u8 Local_u8LoopColCounter=0;
	u8 Local_u8SwitchState=0;
	static u8 Local_u8ReturnNum=1;
	u8 x=0;
	for (Local_u8LoopRowCounter=0;Local_u8LoopRowCounter<4;Local_u8LoopRowCounter++)
	{
		for (Local_u8LoopCounter=0;Local_u8LoopCounter<4;Local_u8LoopCounter++)
			{ DIO_u8WritePinVal(Rows_u8Arr[Local_u8LoopCounter],DIO_u8LOW);}
		DIO_u8WritePinVal(Rows_u8Arr[Local_u8LoopRowCounter],DIO_u8HIGH);
		for (Local_u8LoopColCounter=0;Local_u8LoopColCounter<4;Local_u8LoopColCounter++)
		{
			x=Check_u8SwitchState(Cols_u8Arr[Local_u8LoopColCounter]);

			if(x==u8PRESSED)
			{

				Local_u8ReturnNum=Local_u8LoopRowCounter*4+Local_u8LoopColCounter+1;
			}
		}
	}
	return Local_u8ReturnNum;
}
예제 #2
0
void LCD_EnableLcd(void)
{
	DIO_u8WritePinVal(LCD_u8Enable,DIO_u8HIGH );
	Delay_ms_Max1s(1);
	DIO_u8WritePinVal(LCD_u8Enable,DIO_u8LOW );
	Delay_ms_Max1s(1);
}
예제 #3
0
파일: main.c 프로젝트: mamdooh133/my-Work
void main (void)
{
 u8 x ;
	DIO_voidInit();

	u8 cola_H[]={1,1,1,1,1,1,1,1};
		u8 rowa_H[]={1,1,1,1,1,1,1,1};
		DIO_u8WritePinDir(17,1);
			DIO_u8WritePinDir(16,0);
    while(1)
    {


//    	Write_M() ;
//	Write_A() ;
//    	Write_M() ;
//    	Write_D() ;
//     	Write_O() ;
//        Write_H() ;

    	TSW_u8ReadState(0,&x);
if(x==1)
{
	DIO_u8WritePinVal(17,1);

}
else
{
	DIO_u8WritePinVal(17,0);

}
    	    }

}
예제 #4
0
int main(void)
{
DIO_voidInit();
SSD_voidInit();
p[0] = letterA;
p[1] = letterN;
p[2] = letterW;
p[3] = letterA;
p[4] = letterR;
DIO_u8WritePinVal(otpt_pin,0);  // output enable
DIO_u8WritePinVal(sh_clk,0);  // output enable


	while(1)
{

	Segments();
//for(u8 ii=0;ii<5;ii++)
//		{
//		DIO_u8WritePinVal(16,1);
//for(u8 i=0;i<50;i++)
//{
//		(*p[0])();
//}
//	DIO_u8WritePinVal(16,0);
//}
}
return 0;
}
예제 #5
0
int main(void) {
	u8 Local_u8SwitchValue; // to store the Switch Value
	u8 Local_u8SwitchFlag = FALSE; // to run the switch in the single mode

	u16 Local_u16ADCValue; // to store the ADC Value
	u16 Local_u16PrevADCValue = 2000; // to store the Previous ADC Value
	f32 Local_f32VoltageValue;
	u8 Local_u8Buffer[5]; // to store the Volt value as characters

	DIO_voidInit();
	ADC_voidInit();
	ADC_voidEnable();
	LCD_voidInit();
	LCD_u8Write_String("Voltage:");
	//LCD_u8Write_Command(0x80); //go to First line and --0 is for 0th position
	while (1) {

		TSW_u8CheckSwitch(TSW_u8NUM1, &Local_u8SwitchValue);
		if (Local_u8SwitchValue == TSW_u8PRESSED) {
			if (!Local_u8SwitchFlag) {
				Local_u8SwitchFlag = TRUE;
				DIO_u8WritePinVal(RELAYCONTROL, DIO_u8HIGH);
			}

		} else { //Local_u8SwitchValue == TSW_u8RELEASED
			if (Local_u8SwitchFlag) {
				Local_u8SwitchFlag = FALSE;
				DIO_u8WritePinVal(RELAYCONTROL, DIO_u8LOW);
			}
		}
		//ADC_u8ReadChannel(ADC_u8CH7, &Local_u16ADCValue);
		ADC_u8ReadChannelFiltered(ADC_u8CH7, &Local_u16ADCValue);
		if (Local_u16ADCValue == Local_u16PrevADCValue) {
		} else { //Local_u16ADCValue != Local_u16PrevADCValue
			Local_u16PrevADCValue = Local_u16ADCValue;
			CalculateVlotage(Local_u8SwitchFlag, Local_u16ADCValue, &Local_f32VoltageValue);
			ftoa(Local_u8Buffer, Local_f32VoltageValue, 2);
			//Local_f32VoltageValue = Local_u16ADCValue * ADC_STEP;
//			Local_u8IntVoltageValue = Local_f32VoltageValue;
//			itoa(Local_u8IntVoltageValue, Local_u8PotienoValue, 10);
//			LCD_u8Write_Command(0xC0); //go to Second line and --0 is for 0th position
			//dtostrf(value, width, precision, char array)
			LCD_u8Write_Command(0xC0); //go to Second line and --0 is for 0th position
			LCD_u8Write_String(Local_u8Buffer);
			LCD_u8Write_String("  ");
//			LCD_u8Write_String(".");
//			Local_f32VoltageValue = Local_f32VoltageValue - Local_u8IntVoltageValue;
//			Local_u8IntVoltageValue = 100 * Local_f32VoltageValue;
//			itoa(Local_u8IntVoltageValue, Local_u8PotienoValue, 10);
//			LCD_u8Write_String(Local_u8PotienoValue);
		}
	}
	return 0;
}
예제 #6
0
파일: main.c 프로젝트: mamdooh133/my-Work
void Write_D(void)
{
	//////////////D//////////////////////
	u8 cola_D[]={1,0,0,0,0,0,0,0};
	u8 rowa_D[]={1,1,1,1,1,1,1,1};
	u8 colb_D[]={0,1,0,0,0,0,0,0};
	u8 rowb_D[]={1,0,0,0,0,0,0,1};
	u8 colc_D[]={0,0,1,0,0,0,0,0};
	u8 rowc_D[]={1,0,0,0,0,0,0,1};
	u8 cold_D[]={0,0,0,1,0,0,0,0};
	u8 rowd_D[]={0,1,0,0,0,0,1,0};
	u8 cole_D[]={0,0,0,0,1,0,0,0};
	u8 rowe_D[]={0,0,1,1,1,1,0,0};

	u8 x =30 ;

	while(x)
	{

    cols(cola_D);
	rows(rowa_D);
	DIO_u8WritePinVal(latch,1);
	DELAY(0.001);
	DIO_u8WritePinVal(latch,0);

	cols(colb_D);
	rows(rowb_D);
	DIO_u8WritePinVal(latch,1);
	DELAY(0.001);
	DIO_u8WritePinVal(latch,0);

	cols(colc_D);
	rows(rowc_D);
    DIO_u8WritePinVal(latch,1);
    DELAY(0.001);
    DIO_u8WritePinVal(latch,0);

    cols(cold_D);
	rows(rowd_D);
	DIO_u8WritePinVal(latch,1);
	DELAY(0.001);
	DIO_u8WritePinVal(latch,0);

	cols(cole_D);
	rows(rowe_D);
    DIO_u8WritePinVal(latch,1);
    DELAY(0.001);
    DIO_u8WritePinVal(latch,0);
     x-- ;
	}


}
예제 #7
0
void letterA(void)
{
	/***letter A****/


	 for(u8 i=0;i<6;i++)
	 {
		// shift(rows[i],cols[i]);

		u8 R=rows[i];
		u8 C=cols[0][i];
		DIO_u8WritePinVal(otpt_pin,0);  //output enable
			for(s8 i=0;i<8;i++)
		{
		DIO_u8WritePinVal(DS_pin,GETBIT(R,i)); // rows
		DIO_u8WritePinVal(sh_clk,0); ///clk
		DIO_u8WritePinVal(sh_clk,1); //clk
		}

		for(s8 i=0;i<8;i++)
		{
		DIO_u8WritePinVal(DS_pin,GETBIT(C,i)); //columns
		DIO_u8WritePinVal(sh_clk,0); //clk
		DIO_u8WritePinVal(sh_clk,1); //clk
		}
		DIO_u8WritePinVal(otpt_pin,1);  // output enable
	 }

	/*DIO_u8WritePortVal(2,0b00000000); //switch all off
	DIO_u8WritePortVal(3,0b11111011); //row //low //
	DIO_u8WritePortVal(2,0b00011000);   //cols //high //
	Delay(1);


	DIO_u8WritePortVal(2,0b00000000); //switch all off
	DIO_u8WritePortVal(3,0b11110111); //row //low //
	DIO_u8WritePortVal(2,0b00100100);   //cols //high //
	Delay(1);

	DIO_u8WritePortVal(2,0b00000000); //switch all off
	DIO_u8WritePortVal(3,0b11101111); //row //low //
	DIO_u8WritePortVal(2,0b01000010);   //cols //high //
	Delay(1);

	DIO_u8WritePortVal(2,0b00000000); //switch all off
	DIO_u8WritePortVal(3,0b11011111); //row //low //
	DIO_u8WritePortVal(2,0b01111110);   //cols //high //
	Delay(1);

	DIO_u8WritePortVal(2,0b00000000); //switch all off
	DIO_u8WritePortVal(3,0b10111111); //row //low //
	DIO_u8WritePortVal(2,0b01000010);   //cols //high //
	Delay(1);

	DIO_u8WritePortVal(2,0b00000000); //switch all off
	DIO_u8WritePortVal(3,0b01111111); //row //low //
	DIO_u8WritePortVal(2,0b01000010);   //cols //high //
	Delay(1);*/

}
예제 #8
0
파일: main.c 프로젝트: mamdooh133/my-Work
void main (void)
{
	u8 x ;
	DIO_voidInit();
while(1)
{
DIO_u8WritePinVal(24,1);
DIO_u8ReadPinVal(23,&x);
if(x==1)
	DIO_u8WritePinVal(28,1);
else if(x==0)
	DIO_u8WritePinVal(28,0);
}
}
예제 #9
0
extern u8 SSD_u8TurnOff(u8 Copy_u8DispIdx) {
	u8 Local_u8Display_Type;
	u8 Local_u8Pin_Idx;
	u8 Local_u8Control_Signal;
	u8 Local_u8ErrorFlag;

	/*Comment!:Check range*/
	if (SSD_u8DISPCOUNT != 0 && Copy_u8DispIdx < SSD_u8DISPCOUNT) {

		/*Comment!: Get display type from display array*/
		Local_u8Display_Type = SSD_u8Display_Type_Array[Copy_u8DispIdx];

		/*Comment!: Clear control signal of display at Control_Signals_Array */
		SSD_u8Control_Signals_Array[Copy_u8DispIdx] =
				SSD_u8Control_Signals_Map[Local_u8Display_Type][SSD_u8OFFSTATE];

		/*Comment!: Deactivate display */
		Local_u8Pin_Idx = SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGCOMMON];
		Local_u8Control_Signal = SSD_u8Control_Signals_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(Local_u8Pin_Idx, Local_u8Control_Signal);

		Local_u8ErrorFlag = ok;
	} else {
		Local_u8ErrorFlag = error;
	}
	return Local_u8ErrorFlag;
}
예제 #10
0
파일: main.c 프로젝트: mamdooh133/my-Work
void cols(u8 *PIN_NUM)
{
	u8 i ;
	for(i=0 ;i<8;i++ )
	{
       if(PIN_NUM[i]==1)
    	   DIO_u8WritePinVal(ds,1);
       else
    	   DIO_u8WritePinVal(ds,0);

       	DIO_u8WritePinVal(clk,1);
       	DELAY(0.01);

       	DIO_u8WritePinVal(clk,0);
	}

}
예제 #11
0
int main(void) {
	__asm__("SEI");
	MCUCR |= (1<<0);//make it on change
	GICR |= (1<<6); // PIE for INT0

	DIO_u8WritePinDir(26,DIO_u8INPUT);
	DIO_u8WritePinDir(8,DIO_u8OUTPUT);
	DIO_u8WritePinDir(9,DIO_u8OUTPUT);

	while (1) {
		DIO_u8WritePinVal(8,LEDFlag);
		DIO_u8WritePinVal(9,DIO_u8HIGH);
		voidDELAY_MS(1000);
		DIO_u8WritePinVal(9,DIO_u8LOW);
		voidDELAY_MS(1000);
	}
	return 0;
}
예제 #12
0
void LCD_WaitLcd(void)
{
	u8 Local_u8ValBusyFlag;
	#if (LCD_u8LcdMode == LCD_u8Bit4)

	DIO_u8WritePinDir(LCD_u8D0,DIO_u8INPUT);//lcdd7=i/p .
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8INPUT);//lazm el 4 yb2o i/p 3shan ama b2lb enable mn high l low bib3t lcd btb3t high
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8INPUT);//lazm el 4 yb2o i/p 3shan ama b2lb enable mn high l low bib3t lcd btb3t high
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8INPUT);//lazm el 4 yb2o i/p 3shan ama b2lb enable mn high l low bib3t lcd btb3t high
	DIO_u8WritePinVal(LCD_u8ReadWrite,DIO_u8HIGH);//rw=1.
	#elif (LCD_u8LcdMode == LCD_u8Bit8)
	DIO_u8WritePinDir(LCD_u8D0,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D4,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D5,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D6,DIO_u8INPUT);
	DIO_u8WritePinDir(LCD_u8D7,DIO_u8INPUT);
	DIO_u8WritePinVal(LCD_u8ReadWrite,DIO_u8HIGH);//rw=1.
	#endif
	DIO_u8WritePinVal(LCD_u8Reset,DIO_u8LOW);//rs=0.
	do
	{
		Local_u8ValBusyFlag=0;
		DIO_u8WritePinVal(LCD_u8Enable,DIO_u8HIGH);//Enable=1.
		Delay_ms_Max1s(1);
		#if (LCD_u8LcdMode == LCD_u8Bit4)
		DIO_u8ReadPinVal(LCD_u8D3,&Local_u8ValBusyFlag );
		#elif (LCD_u8LcdMode == LCD_u8Bit8)
		DIO_u8ReadPinVal(LCD_u8D7,&Local_u8ValBusyFlag );
		#endif
		Delay_ms_Max1s(1);
		DIO_u8WritePinVal(LCD_u8Enable,DIO_u8LOW);//e=0.
		Delay_ms_Max1s(1);

		DIO_u8WritePinVal(LCD_u8Enable,DIO_u8HIGH);//e=1
		Delay_ms_Max1s(1);
	}while(Local_u8ValBusyFlag == LCD_u8Busy);
	DIO_u8WritePinVal(LCD_u8ReadWrite,DIO_u8LOW);//rw=0.

	#if (LCD_u8LcdMode == LCD_u8Bit4)
	DIO_u8WritePinDir(LCD_u8D0,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8OUTPUT);
	Delay_ms_Max1s(1);
	#elif (LCD_u8LcdMode == LCD_u8Bit8)
	DIO_u8WritePinDir(LCD_u8D0,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D1,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D2,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D3,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D4,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D5,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D6,DIO_u8OUTPUT);
	DIO_u8WritePinDir(LCD_u8D7,DIO_u8OUTPUT);
	#endif
}
예제 #13
0
void Stepper_voidRotate(void)
    {

    static u8 local_u8loop = 1;

    local_u8loop <<= 1;

    if (local_u8loop == 16)
	{

	local_u8loop = 1;

	}

    DIO_u8WritePinVal(10, GET_BIT(local_u8loop, 0));
    DIO_u8WritePinVal(11, GET_BIT(local_u8loop, 1));
    DIO_u8WritePinVal(12, GET_BIT(local_u8loop, 2));
    DIO_u8WritePinVal(13, GET_BIT(local_u8loop, 3));

    }
예제 #14
0
파일: main.c 프로젝트: mamdooh133/my-Work
void Write_H(void)
{
	u8 cola_H[]={1,0,0,0,0,0,0,0};
	u8 rowa_H[]={1,1,1,1,1,1,1,0};
	u8 colb_H[]={1,1,1,1,1,1,1,1};
	u8 rowb_H[]={0,0,0,1,0,0,0,0};
	u8 colc_H[]={0,0,0,0,0,0,0,1};
	u8 rowc_H[]={1,1,1,1,1,1,1,0};


	u8 x = 50 ;
			while(x)
			{

cols(cola_H);
rows(rowa_H);
DIO_u8WritePinVal(latch,1);
DELAY(0.001);
DIO_u8WritePinVal(latch,0);

cols(colb_H);
rows(rowb_H);
DIO_u8WritePinVal(latch,1);
DELAY(0.001);
DIO_u8WritePinVal(latch,0);

cols(colc_H);
rows(rowc_H);
DIO_u8WritePinVal(latch,1);
DELAY(0.001);
DIO_u8WritePinVal(latch,0);

x--;
			}
}
예제 #15
0
파일: main.c 프로젝트: BelalElkady/MyWork
void main(void) {

	u16 Local_u8ADCReading;
	u16 Local_u8LCDresult[5];
	u8 Local_u8SW;
	u8 Local_u8ADCanalog;
	DIO_voidInit();
	TACTILE_voidInit();
	ADC_voidConfig();
	ADC_voidEnable();
	LCD_voidInit();

	while (1) {

		ADC_voidReadSingleShot(&Local_u8ADCReading);
		DIO_u8ReadPinVal(DIO_u8PIN31, &Local_u8SW);
        Local_u8ADCanalog=((Local_u8ADCReading>>6)*(u16)5)/(u16)1024;
		switch (Local_u8SW) {
		case TACTILE_u8Pressed:
			DIO_u8WritePinVal(DIO_u8PIN27, 1);
			itoa(Local_u8ADCanalog+5, Local_u8LCDresult, 10);
			LCD_voidWriteString(Local_u8LCDresult);
			delay_ms(5);
			break;
		case TACTILE_u8Released:
			DIO_u8WritePinVal(DIO_u8PIN27, 0);
			itoa(Local_u8ADCanalog, Local_u8LCDresult, 10);
			LCD_voidWriteString(Local_u8LCDresult);
			delay_ms(5);
			break;

		}

		LCD_voidClearSceen();


	}

	return;
}
예제 #16
0
extern u8 SSD_u8Display(u8 Copy_u8DispIdx, u8 Copy_u8DispVal) {

	u8 Local_u8ErrorFlag;
	u8 Local_u8DispType;
	/*Comment!:Check range*/
	if (SSD_u8DISPCOUNT != 0 && Copy_u8DispIdx < SSD_u8DISPCOUNT) {

		/*Comment!: Copy values to values array */
		SSD_u8Values_Array[Copy_u8DispIdx] = Copy_u8DispVal;

		/*Comment!: Write number to 7 segments*/
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGA],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGA]);
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGB],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGB]);
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGC],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGC]);
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGD],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGD]);
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGE],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGE]);
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGF],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGF]);
		Local_u8DispType = SSD_u8Display_Type_Array[Copy_u8DispIdx];
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][SSD_u8SEGG],
				SSD_u8Numbers_Array[Local_u8DispType][Copy_u8DispVal][SSD_u8SEGG]);

		/*Comment!: Write to common pin at 7 segment*/
		DIO_u8WritePinVal(SSD_u8DIO_MAP[Copy_u8DispIdx][7],
				SSD_u8Control_Signals_Array[Copy_u8DispIdx]);

		Local_u8ErrorFlag = ok;
	} else {
		Local_u8ErrorFlag = error;
	}

	return Local_u8ErrorFlag;
}
예제 #17
0
void shift(u8 R,u8 C)
{

	DIO_u8WritePinVal(otpt_pin,0);  //output enable
	for(s8 i=0;i<8;i++)
{
DIO_u8WritePinVal(DS_pin,GETBIT(R,i)); // rows
DIO_u8WritePinVal(sh_clk,0); ///clk
DIO_u8WritePinVal(sh_clk,1); //clk
}

for(s8 i=0;i<8;i++)
{
DIO_u8WritePinVal(DS_pin,GETBIT(C,i)); //columns
DIO_u8WritePinVal(sh_clk,0); //clk
DIO_u8WritePinVal(sh_clk,1); //clk
}
DIO_u8WritePinVal(otpt_pin,1);  // output enable
}
예제 #18
0
파일: main.c 프로젝트: mamdooh133/my-Work
void step()
{
	if (flg==0)
{
	DIO_u8WritePinVal(st1,get_bit(m,0));
	DIO_u8WritePinVal(st2,get_bit(m,1));
	DIO_u8WritePinVal(st3,get_bit(m,2));
	DIO_u8WritePinVal(st4,get_bit(m,3));
}
	else
{
		DIO_u8WritePinVal(st4,get_bit(m,0));
		DIO_u8WritePinVal(st3,get_bit(m,1));
		DIO_u8WritePinVal(st2,get_bit(m,2));
		DIO_u8WritePinVal(st1,get_bit(m,3));
}

	m<<=1 ;
	if(m==16)
		m=1 ;
}
예제 #19
0
extern void RTOS_YellowOffTask(void)
{
	DIO_u8WritePinVal(RTOS_u8YellowLed,RTOS_u8LedOff);
}
예제 #20
0
void LCD_VoidCmd(u8 LCD_u8Command)
{
	//LCD_u8Port=LCD_u8Command;
	LCD_WaitLcd();
	#if (LCD_u8LcdMode == LCD_u8Bit8)
	DIO_u8WritePinVal(LCD_u8Reset,DIO_u8LOW );

	DIO_u8WritePinVal(LCD_u8D0,(LCD_u8Command&Lcd_u8Bit0 ));
	DIO_u8WritePinVal(LCD_u8D1,(LCD_u8Command&Lcd_u8Bit1 ));
	DIO_u8WritePinVal(LCD_u8D2,(LCD_u8Command&Lcd_u8Bit2 ));
	DIO_u8WritePinVal(LCD_u8D3,(LCD_u8Command&Lcd_u8Bit3 ));
	DIO_u8WritePinVal(LCD_u8D4,(LCD_u8Command&Lcd_u8Bit4 ));
	DIO_u8WritePinVal(LCD_u8D5,(LCD_u8Command&Lcd_u8Bit5 ));
	DIO_u8WritePinVal(LCD_u8D6,(LCD_u8Command&Lcd_u8Bit6 ));
	DIO_u8WritePinVal(LCD_u8D7,(LCD_u8Command&Lcd_u8Bit7 ));

	LCD_EnableLcd();

	//Delay_ms_Max1s(50);

	#else

	DIO_u8WritePinVal(LCD_u8Reset,DIO_u8LOW );

	//LCD_MaskLcdPins();

	DIO_u8WritePinVal(LCD_u8D0,(LCD_u8Command&Lcd_u8Bit4 )  );
	DIO_u8WritePinVal(LCD_u8D1,(LCD_u8Command&Lcd_u8Bit5 )  );
	DIO_u8WritePinVal(LCD_u8D2,(LCD_u8Command&Lcd_u8Bit6 )  );
	DIO_u8WritePinVal(LCD_u8D3,(LCD_u8Command&Lcd_u8Bit7 )  );

	LCD_EnableLcd();

	//LCD_MaskLcdPins();

	DIO_u8WritePinVal(LCD_u8D0,(LCD_u8Command&Lcd_u8Bit0 )   );
	DIO_u8WritePinVal(LCD_u8D1,(LCD_u8Command&Lcd_u8Bit1 )   );
	DIO_u8WritePinVal(LCD_u8D2,(LCD_u8Command&Lcd_u8Bit2 )   );
	DIO_u8WritePinVal(LCD_u8D3,(LCD_u8Command&Lcd_u8Bit3 )   );

	LCD_EnableLcd();

	//Delay_ms_Max1s(50);
	#endif

	return;
}
예제 #21
0
extern void SSD_voidInit(void) {

	/*Comment!:if there is at least one display initialize it*/
#if (SSD_u8DISPCOUNT>=1) && (SSD_u8DISPCOUNT<=6)
	/*Comment!:set segment bins as output*/
	DIO_u8WritePinDir(SSD_u8DISP1_SEGA, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_SEGB, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_SEGC, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_SEGD, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_SEGE, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_SEGF, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_SEGG, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP1_INITCOM, DIO_u8OUTPUT);

	/*Comment!:set 7 segments initial value */
	DIO_u8WritePinVal(SSD_u8DISP1_SEGA,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGA]);
	DIO_u8WritePinVal(SSD_u8DISP1_SEGB,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGB]);
	DIO_u8WritePinVal(SSD_u8DISP1_SEGC,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGC]);
	DIO_u8WritePinVal(SSD_u8DISP1_SEGD,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGD]);
	DIO_u8WritePinVal(SSD_u8DISP1_SEGE,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGE]);
	DIO_u8WritePinVal(SSD_u8DISP1_SEGF,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGF]);
	DIO_u8WritePinVal(SSD_u8DISP1_SEGG,
			SSD_u8Numbers_Array[SSD_u8DISP1TYPE][SSD_u8DISP1_INITVAL][SSD_u8SEGG]);
	DIO_u8WritePinVal(SSD_u8DISP1_INITCOM,
			SSD_u8Control_Signals_Array[SSD_u8DISP1]);
#endif

	/*Comment!:if there is at least two displays initialize them*/
#if (SSD_u8DISPCOUNT>=2) && (SSD_u8DISPCOUNT<=6)
	/*Comment!:set segment bins as output*/
	DIO_u8WritePinDir(SSD_u8DISP2_SEGA, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_SEGB, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_SEGC, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_SEGD, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_SEGE, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_SEGF, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_SEGG, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP2_INITCOM, DIO_u8OUTPUT);
	/*Comment!:set 7 segments initial value */
	DIO_u8WritePinVal(SSD_u8DISP2_SEGA,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGA]);
	DIO_u8WritePinVal(SSD_u8DISP2_SEGB,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGB]);
	DIO_u8WritePinVal(SSD_u8DISP2_SEGC,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGC]);
	DIO_u8WritePinVal(SSD_u8DISP2_SEGD,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGD]);
	DIO_u8WritePinVal(SSD_u8DISP2_SEGE,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGE]);
	DIO_u8WritePinVal(SSD_u8DISP2_SEGF,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGF]);
	DIO_u8WritePinVal(SSD_u8DISP2_SEGG,
			SSD_u8Numbers_Array[SSD_u8DISP2TYPE][SSD_u8DISP2_INITVAL][SSD_u8SEGG]);
	DIO_u8WritePinVal(SSD_u8DISP2_INITCOM,
			SSD_u8Control_Signals_Array[SSD_u8DISP2]);
#endif

	/*Comment!:if there is at least three displays initialize them*/
#if (SSD_u8DISPCOUNT>=3) && (SSD_u8DISPCOUNT<=6)
	/*Comment!:set segment bins as output*/
	DIO_u8WritePinDir(SSD_u8DISP3_SEGA, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_SEGB, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_SEGC, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_SEGD, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_SEGE, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_SEGF, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_SEGG, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP3_INITCOM, DIO_u8OUTPUT);
	/*Comment!:set 7 segments initial value */
	DIO_u8WritePinVal(SSD_u8DISP3_SEGA,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGA]);
	DIO_u8WritePinVal(SSD_u8DISP3_SEGB,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGB]);
	DIO_u8WritePinVal(SSD_u8DISP3_SEGC,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGC]);
	DIO_u8WritePinVal(SSD_u8DISP3_SEGD,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGD]);
	DIO_u8WritePinVal(SSD_u8DISP3_SEGE,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGE]);
	DIO_u8WritePinVal(SSD_u8DISP3_SEGF,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGF]);
	DIO_u8WritePinVal(SSD_u8DISP3_SEGG,
			SSD_u8Numbers_Array[SSD_u8DISP3TYPE][SSD_u8DISP3_INITVAL][SSD_u8SEGG]);
	DIO_u8WritePinVal(SSD_u8DISP3_INITCOM,
			SSD_u8Control_Signals_Array[SSD_u8DISP3]);
#endif

	/*Comment!:if there is at least one display initialize it*/
#if (SSD_u8DISPCOUNT>=4) && (SSD_u8DISPCOUNT<=6)
	/*Comment!:set segment bins as output*/
	DIO_u8WritePinDir(SSD_u8DISP4_SEGA, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_SEGB, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_SEGC, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_SEGD, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_SEGE, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_SEGF, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_SEGG, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP4_INITCOM, DIO_u8OUTPUT);
	/*Comment!:set 7 segments initial value */
	DIO_u8WritePinVal(SSD_u8DISP4_SEGA,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGA]);
	DIO_u8WritePinVal(SSD_u8DISP4_SEGB,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGB]);
	DIO_u8WritePinVal(SSD_u8DISP4_SEGC,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGC]);
	DIO_u8WritePinVal(SSD_u8DISP4_SEGD,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGD]);
	DIO_u8WritePinVal(SSD_u8DISP4_SEGE,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGE]);
	DIO_u8WritePinVal(SSD_u8DISP4_SEGF,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGF]);
	DIO_u8WritePinVal(SSD_u8DISP4_SEGG,
			SSD_u8Numbers_Array[SSD_u8DISP4TYPE][SSD_u8DISP4_INITVAL][SSD_u8SEGG]);
	DIO_u8WritePinVal(SSD_u8DISP4_INITCOM,
			SSD_u8Control_Signals_Array[SSD_u8DISP4]);
#endif

	/*Comment!:if there is at least one display initialize it*/
#if (SSD_u8DISPCOUNT>=5) && (SSD_u8DISPCOUNT<=6)
	/*Comment!:set segment bins as output*/
	DIO_u8WritePinDir(SSD_u8DISP5_SEGA, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_SEGB, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_SEGC, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_SEGD, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_SEGE, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_SEGF, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_SEGG, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP5_INITCOM, DIO_u8OUTPUT);
	/*Comment!:set 7 segments initial value */
	DIO_u8WritePinVal(SSD_u8DISP5_SEGA,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGA]);
	DIO_u8WritePinVal(SSD_u8DISP5_SEGB,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGB]);
	DIO_u8WritePinVal(SSD_u8DISP5_SEGC,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGC]);
	DIO_u8WritePinVal(SSD_u8DISP5_SEGD,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGD]);
	DIO_u8WritePinVal(SSD_u8DISP5_SEGE,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGE]);
	DIO_u8WritePinVal(SSD_u8DISP5_SEGF,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGF]);
	DIO_u8WritePinVal(SSD_u8DISP5_SEGG,
			SSD_u8Numbers_Array[SSD_u8DISP5TYPE][SSD_u8DISP5_INITVAL][SSD_u8SEGG]);
	DIO_u8WritePinVal(SSD_u8DISP5_INITCOM,
			SSD_u8Control_Signals_Array[SSD_u8DISP5]);
#endif

	/*Comment!:if there is at least one display initialize it*/
#if SSD_u8DISPCOUNT==6
	/*Comment!:set segment bins as output*/
	DIO_u8WritePinDir(SSD_u8DISP6_SEGA, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_SEGB, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_SEGC, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_SEGD, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_SEGE, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_SEGF, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_SEGG, DIO_u8OUTPUT);
	DIO_u8WritePinDir(SSD_u8DISP6_INITCOM, DIO_u8OUTPUT);
	/*Comment!:set 7 segments initial value */
	DIO_u8WritePinVal(SSD_u8DISP6_SEGA,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGA]);
	DIO_u8WritePinVal(SSD_u8DISP6_SEGB,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGB]);
	DIO_u8WritePinVal(SSD_u8DISP6_SEGC,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGC]);
	DIO_u8WritePinVal(SSD_u8DISP6_SEGD,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGD]);
	DIO_u8WritePinVal(SSD_u8DISP6_SEGE,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGE]);
	DIO_u8WritePinVal(SSD_u8DISP6_SEGF,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGF]);
	DIO_u8WritePinVal(SSD_u8DISP6_SEGG,
			SSD_u8Numbers_Array[SSD_u8DISP6TYPE][SSD_u8DISP6_INITVAL][SSD_u8SEGG]);
	DIO_u8WritePinVal(SSD_u8DISP6_INITCOM,
			SSD_u8Control_Signals_Array[SSD_u8DISP6]);
#endif

}
int main (void)
{
	u8 KeyPadVal,Toggle_3=0,Toggle_2=0,Toggle_1=0,SwitchPin;
	DIO_VoidInit();
	ExtInt_Init();
	Timer_VoidInit();
	ExtInt_EnableGlobalInt();

	//ExtInt_voidOverFlowInt0(Toggle);
	ExtInt_voidSetExtInt0(Toggle);

	while(1)
	{
		DIO_u8ReadPinVal(DIO_u8Pin24,&SwitchPin);
		if(u8_DebounceSenceHigh(SwitchPin,Pressed) == Pressed)
		{
			DIO_u8WritePinVal(ExternaInterruptZeroPin,TurnOn);
		}
		else DIO_u8WritePinVal(ExternaInterruptZeroPin,TurnOff);

		TotalTimeInMile=Timer_u16Count1mile();
		KeyPadVal=KeyPad_StructRead();
		if(KeyPadVal!=KeyPad_u8NoPressed)
		{
			KeyPadVal_2=KeyPadVal;
			//PORTB=KeyPadVal_2	;
		}
		else;
		if(TotalTimeInMile>=250)
		{

			if(Led_1==FiredInterrupt)
				{
					if(ToggleLed1==FirstPressed)
					{
						DIO_u8WritePinVal(FirstLed,Toggle_1^=1);
					}
					else DIO_u8WritePinVal(FirstLed,TurnOff);
				}
				else;

				if(Led_2==FiredInterrupt)
				{
					if(ToggleLed2==FirstPressed)
					{
						DIO_u8WritePinVal(SecondLed,Toggle_2^=1);
					}
					else DIO_u8WritePinVal(SecondLed,TurnOff);
				}
				else ;

				if(Led_3==FiredInterrupt)
				{
					if(ToggleLed3==FirstPressed)
					{
						DIO_u8WritePinVal(ThirdLed,Toggle_3^=1);
					}
					else DIO_u8WritePinVal(ThirdLed,TurnOff);
				}
				else;

			Timer_u16ResetCounter();
			Timer_u16ResetTotalTime();
		}
		else;
	}
	return 0;
}
void StepperRunning(u8 KeyValue) {
	static u8 Step = STEPPER_STEP_A; // 0,1,2,3
	static u8 DelayCounter = 0;
	DelayCounter++;
	switch (Step) {
	case STEPPER_STEP_A:
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN1, DIO_u8HIGH);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN2, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN3, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN4, DIO_u8LOW);
		break;
	case STEPPER_STEP_B:
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN2, DIO_u8HIGH);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN1, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN3, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN4, DIO_u8LOW);
		break;
	case STEPPER_STEP_C:
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN3, DIO_u8HIGH);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN1, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN2, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN4, DIO_u8LOW);
		break;
	case STEPPER_STEP_D:
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN4, DIO_u8HIGH);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN1, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN2, DIO_u8LOW);
		DIO_u8WritePinVal(STEPPER_MOTOR_PIN3, DIO_u8LOW);
		break;
	default:
		break;
	}
	if (DelayCounter > (DELAY_FOR_STEPPER * KeyValue)) {
		DelayCounter = 0;
		if (Step == STEPPER_STEP_D)
			Step = STEPPER_STEP_A;
		else {
			Step++;
		}
	}
}
extern void Buzzer_voidStop(void)
{
	DIO_u8WritePinVal(DIO_u8PIN0,u8ZERO);
}
void StepperOFF(void) {
	DIO_u8WritePinVal(STEPPER_MOTOR_PIN1, DIO_u8LOW);
	DIO_u8WritePinVal(STEPPER_MOTOR_PIN2, DIO_u8LOW);
	DIO_u8WritePinVal(STEPPER_MOTOR_PIN3, DIO_u8LOW);
	DIO_u8WritePinVal(STEPPER_MOTOR_PIN4, DIO_u8LOW);
}
예제 #26
0
void LCD_VoidData(u8 LCD_u8Data)
{
	LCD_WaitLcd();
	#if (LCD_u8LcdMode == LCD_u8Bit8)

	DIO_u8WritePinVal(LCD_u8Reset,DIO_u8HIGH );

	DIO_u8WritePinVal(LCD_u8D0,(LCD_u8Data&Lcd_u8Bit0 )  );
	DIO_u8WritePinVal(LCD_u8D1,(LCD_u8Data&Lcd_u8Bit1 )  );
	DIO_u8WritePinVal(LCD_u8D2,(LCD_u8Data&Lcd_u8Bit2 )  );
	DIO_u8WritePinVal(LCD_u8D3,(LCD_u8Data&Lcd_u8Bit3 )  );
	DIO_u8WritePinVal(LCD_u8D4,(LCD_u8Data&Lcd_u8Bit4 )  );
	DIO_u8WritePinVal(LCD_u8D5,(LCD_u8Data&Lcd_u8Bit5 )  );
	DIO_u8WritePinVal(LCD_u8D6,(LCD_u8Data&Lcd_u8Bit6 )  );
	DIO_u8WritePinVal(LCD_u8D7,(LCD_u8Data&Lcd_u8Bit7 )  );

	//ctrl = (1<<rs)|(0<<rw)|(1<<en); // RW as LOW and RS, EN as HIGH
	LCD_EnableLcd();
	//Delay_ms_Max1s(50); // delay to get things executed

	#else

	DIO_u8WritePinVal(LCD_u8Reset,DIO_u8HIGH );

	//LCD_MaskLcdPins();

	DIO_u8WritePinVal(LCD_u8D0,(LCD_u8Data&Lcd_u8Bit4 )   );
	DIO_u8WritePinVal(LCD_u8D1,(LCD_u8Data&Lcd_u8Bit5 )   );
	DIO_u8WritePinVal(LCD_u8D2,(LCD_u8Data&Lcd_u8Bit6 )   );
	DIO_u8WritePinVal(LCD_u8D3,(LCD_u8Data&Lcd_u8Bit7 )   );

	LCD_EnableLcd();

	//LCD_MaskLcdPins();

	DIO_u8WritePinVal(LCD_u8D0,(LCD_u8Data&Lcd_u8Bit0 )   );
	DIO_u8WritePinVal(LCD_u8D1,(LCD_u8Data&Lcd_u8Bit1 )   );
	DIO_u8WritePinVal(LCD_u8D2,(LCD_u8Data&Lcd_u8Bit2 )   );
	DIO_u8WritePinVal(LCD_u8D3,(LCD_u8Data&Lcd_u8Bit3 )   );

	LCD_EnableLcd();

	//Delay_ms_Max1s(50);
	#endif

	return ;
}
예제 #27
0
extern Keypad_u16Switches KEYPAD_Keypad_u16SwitchesRead(void)
    {

    u8 local_u8Switch_Current_State;
    u8 local_u8SwitchIdx;
    Keypad_u16Switches Keypad_u16State;

    /*Comment!: Initialize Switches as unPressed */
    Keypad_u16State.KEYPAD_u16Switches = KEYPAD_u16UNPRESSED;

    /*Comment!: Loop over all rows*/
    for (u8 Keypad_u8LoopCounter = 0; Keypad_u8LoopCounter < KEYPAD_u8NUM_ROWS; Keypad_u8LoopCounter++)
	{

	/*Comment!: make one output as pressed state and other outputs as released state */
	for (u8 Keypad_u8RowsCounter = 0; Keypad_u8RowsCounter < KEYPAD_u8NUM_ROWS; Keypad_u8RowsCounter++)
	    {

	    if (Keypad_u8RowsCounter == Keypad_u8LoopCounter)
		{

		DIO_u8WritePinVal(Keypad_u8RowS_Array[Keypad_u8RowsCounter], KEYPAD_u8PRESSEDSTATE);

		}
	    else
		{

		DIO_u8WritePinVal(Keypad_u8RowS_Array[Keypad_u8RowsCounter], !KEYPAD_u8PRESSEDSTATE);

		}
	    }

	for (u8 Keypad_u8ColumnsCounter = 0; Keypad_u8ColumnsCounter < KEYPAD_u8NUM_COLUMNS;
		Keypad_u8ColumnsCounter++)
	    {

	    /*Comment!: Get Switch Index  */
	    /*Comment!: Switch Index from 0~15*/
	    local_u8SwitchIdx = Keypad_u8ColumnsCounter + (KEYPAD_u8NUM_ROWS * Keypad_u8LoopCounter);

	    /*Comment!: Read Switch value*/
	    DIO_u8ReadPinVal(Keypad_u8COLUMNS_Array[Keypad_u8ColumnsCounter], &local_u8Switch_Current_State);

	    if (local_u8Switch_Current_State == KEYPAD_u8PRESSEDSTATE)
		{

		SET_BIT(Keypad_u16State.KEYPAD_u16Switches, local_u8SwitchIdx);

		}
	    else
		{

		CLR_BIT(Keypad_u16State.KEYPAD_u16Switches, local_u8SwitchIdx);

		}

	    }

	}

    return Keypad_u16State;
    }
예제 #28
0
int main()
    {

    u8 local_u8state = STARTING_POINT;
    u8 local_u8SwitchRead;
    u16 local_u16Counter;
    u8 local_Direction_Flag = RIGHT;
    u16 local_stepper_counter = 0;
    u8 local_Display_Flag = DISPLAY_OFF;
    Keypad_u16Switches keypad;
    u8 local_u8Switch_Pressed_num = STOP_SWITCH_INDEX;
    u8 local_u8MotorPin1Val[2] =
	{
	DIO_u8HIGH, DIO_u8LOW
	};
    u8 LOCAL_U8DirectionMATRIX[3][8] =
	{
	    {
	    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C
	    },
	    {
	    0x78, 0x44, 0x48, 0x70, 0x70, 0x48, 0x44, 0x42
	    },
	    {
	    0, 0, 0, 0, 0, 0, 0, 0
	    }
	};

    /*Comment!:calling initialization functions */
    DIO_voidInit();

    TACTILE_SWITCH_voidInit();

    KEYPAD_voidInit();

    /*Comment!: use pull up resistors on portc*/
    /*Comment!: this is against design rules but i had to use this way because there weren't pull up resistors on hardware*/
    *DIO_u8PORTC = 0x0f;

    /*Comment!:shift register work at rising edge so sh,st must be low before writing to shift register  */
    DIO_u8WritePinVal(SH_CP, DIO_u8LOW);
    DIO_u8WritePinVal(ST_CP, DIO_u8LOW);

    while (1)

	{

	/*Comment!:Display at Dot Matrix */
	for (u8 local_u8RowsLoopCounter = 0; local_u8RowsLoopCounter < 8; local_u8RowsLoopCounter++)
	    {

	    /*Comment!:active one row each time */
	    for (u8 local_u8RowIndex = 0; local_u8RowIndex < 8; local_u8RowIndex++)
		{

		/*Comment!:write bit to shift register */
		if (local_u8RowIndex != local_u8RowsLoopCounter)
		    {
		    DIO_u8WritePinVal(DS,
		    DIO_u8HIGH);
		    }
		else
		    {
		    DIO_u8WritePinVal(DS,
		    DIO_u8LOW);
		    }

		DIO_u8WritePinVal(SH_CP, DIO_u8HIGH);
		DIO_u8WritePinVal(SH_CP, DIO_u8LOW);

		}

	    /*Comment!:Write column  */
	    for (u8 local_u8ColumnsLoopCounter = 0; local_u8ColumnsLoopCounter < 8; local_u8ColumnsLoopCounter++)
		{

		/*Comment!:write bit to shift register */
		DIO_u8WritePinVal(DS,
			GET_BIT(LOCAL_U8DirectionMATRIX[local_Display_Flag][local_u8RowsLoopCounter],
				local_u8ColumnsLoopCounter));

		DIO_u8WritePinVal(SH_CP, DIO_u8HIGH);
		DIO_u8WritePinVal(SH_CP, DIO_u8LOW);

		}

	    /*Comment!:latch Rows and Columns to dot matrix */
	    DIO_u8WritePinVal(ST_CP, DIO_u8HIGH);
	    DIO_u8WritePinVal(ST_CP, DIO_u8LOW);

	    }

	/*comment!: end of displaying one column*/

	/*Comment!:read Keypad*/
	keypad = KEYPAD_Keypad_u16SwitchesRead();

	/*Comment!:Check if switch pressed */
	if (keypad.KEYPAD_u16Switches)
	    {
	    /*Comment!:get number of pressed switch */
	    local_u8Switch_Pressed_num = Stepper_16_Switch_Number(keypad.KEYPAD_u16Switches);

	    }
	else
	    {

	    }

	if ((local_u8Switch_Pressed_num < local_stepper_counter) && local_u8Switch_Pressed_num != STOP_SWITCH_INDEX)

	    {

	    Stepper_voidRotate();

	    local_stepper_counter = 0;

	    }
	else if (local_u8Switch_Pressed_num != STOP_SWITCH_INDEX)
	    {

	    local_stepper_counter++;

	    }
	else
	    {

	    }

	/*Comment!:read switch */
	TACTILE_SWITCH_u8Read(TACTILE_SWITCH_u8SWITCH1ID, &local_u8SwitchRead);

	switch (local_u8state)

	    {

	case STARTING_POINT:

	    if (local_u8SwitchRead == TACTILE_SWITCH_u8PRESSED)
		{
		/*Comment!:Rotate Motor */
		DIO_u8WritePinVal(DIO_u8PIN8, local_u8MotorPin1Val[local_Direction_Flag]);

		DIO_u8WritePinVal(DIO_u8PIN9, !local_u8MotorPin1Val[local_Direction_Flag]);

		/*Comment!:Change State */
		local_u8state = SWITCH_PRESSED;

		/*Comment!:Change direction at display */
		local_Display_Flag = local_Direction_Flag;

		/*Comment!:Reset Time Counter */
		local_u16Counter = 0;
		}

	    else if (local_u8SwitchRead != TACTILE_SWITCH_u8PRESSED)
		{

		/*Comment!:Stop motor */
		DIO_u8WritePinVal(DIO_u8PIN8, DIO_u8HIGH);

		DIO_u8WritePinVal(DIO_u8PIN9, DIO_u8HIGH);

		/*Comment!:Turn off dot matrix*/
		local_Display_Flag = DISPLAY_OFF;
		}

	    else
		{

		}

	    break;

	case SWITCH_PRESSED:

	    /*Comment!:increment counter that represents time */
	    local_u16Counter++;

	    if (local_u8SwitchRead != TACTILE_SWITCH_u8PRESSED)
		{

		/*Comment!:Checking time */
		if (local_u16Counter <= TIME_LIMIT)

		    {

		    /*Comment!:change state*/
		    local_u8state = CONTINOUS_MODE;

		    }

		else
		    {

		    /*Comment!:Change direction*/
		    local_Direction_Flag = !local_Direction_Flag;

		    /*Comment!:change state*/
		    local_u8state = STARTING_POINT;
		    }

		}

	    else
		{

		}

	    break;

	case CONTINOUS_MODE:

	    /*Comment!:Rotate Motor*/
	    DIO_u8WritePinVal(DIO_u8PIN8, local_u8MotorPin1Val[local_Direction_Flag]);

	    DIO_u8WritePinVal(DIO_u8PIN9, !local_u8MotorPin1Val[local_Direction_Flag]);

	    if (local_u8SwitchRead == TACTILE_SWITCH_u8PRESSED)
		{
		/*Comment!:stop motor*/
		DIO_u8WritePinVal(DIO_u8PIN8, DIO_u8HIGH);

		DIO_u8WritePinVal(DIO_u8PIN9, DIO_u8HIGH);

		/*Comment!:change state*/
		local_u8state = WAITING_FOR_SWITCH_RELEASE;

		}

	    else
		{

		}

	    break;

	case WAITING_FOR_SWITCH_RELEASE:

	    /*Comment!:waiting for switch release*/
	    if (local_u8SwitchRead != TACTILE_SWITCH_u8PRESSED)
		{

		local_u8state = STARTING_POINT;

		}

	    else
		{

		}
	    break;

	default:

	    break;

	    }

	}

    return 0;
    }
예제 #29
0
extern void RTOS_RedOffTask(void)
{
	DIO_u8WritePinVal(RTOS_u8RedLed,RTOS_u8LedOff);
}
예제 #30
0
extern void RTOS_GreenOffTask(void)
{
	DIO_u8WritePinVal(RTOS_u8GreenLed,RTOS_u8LedOff);
}