Exemplo n.º 1
0
void kkk_setanalog(unsigned char page,unsigned char offset)
{
	unsigned char mykey=0,i,buffer[4];
	unsigned int temp;
	unsigned int *p=(unsigned int*)SEG_A;
	WriteChinese(Sheding,0,16,'R');
	WriteChinese(Sheding+32,0,32,'R');
	
	temp=Analog[(page+offset)%25]*RATIO;
	buffer[0]=temp/1000;
	buffer[1]=temp%1000/100;
	buffer[2]=temp%100/10;
	buffer[3]=temp%10;
	for(i=0;i<4;)
	{
		mykey=keyscan();
		switch(mykey)
		{
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
			buffer[i]=mykey-1;
			WriteChar(Ezk+16*(mykey-1+'0'-0x20),2*(offset+1),8*i,'R');
			break;
		case 11:break;
		case 12:
			i++;
			while(mykey==12)
			{
				mykey=keyscan();
			}
			break;
		case 13:break;
		case 14:break;
		case 15:break;
		case 16:return;
		}
		delay(500);
	}
	temp=(buffer[0]*1000+buffer[1]*100+buffer[2]*10+buffer[3]);
	Analog[(page+offset)%25]=temp/RATIO;
	flash_clr(p);
	flash_write_int16(p++,0x55);
	for(i=0;i<25;i++)
	{
		flash_write_int16(p++,Analog[i]);
	}
}
Exemplo n.º 2
0
void main()
{
	TxBuf[0]=0x00; 
	Read_18B20_Temperature();
	Read_18B20_Temperature();
	delay1ms(200);
	Read_18B20_Temperature();
	Read_18B20_Temperature();
	delay1ms(200);
	Read_18B20_Temperature();
	Read_18B20_Temperature();
	delay1ms(200);
	nRF24L01_Config();	  //初始化NRF24L01
	SPI_RW_Reg(FLUSH_TX,0);	
	EX1=1;
	IT1=1;
	EA=1;
	init_1602();
	while(1)
	{
		Read_18B20_Temperature();
		keyscan();
		Control();
		display();
		TxBuf[0]=0xAA;
		TxBuf[2]=Tem_dispbuf[4];
		TxBuf[3]=Tem_dispbuf[0]; 
		TxBuf[4]=beep_flag;
		nRF24L01_TxPacket(TxBuf); //发送数据
		delay1ms(10);
	}

}
Exemplo n.º 3
0
void Record_data()
{
	keyscan();
	
	if(flag_new)
	{
		
		switch(key)
		{
			case 1:	if(flag_d==1) Height++;
					if(flag_d==2) Weight++;
					break;
			case 2:	if(flag_d==1) Height--;
					if(flag_d==2) Weight--;
					break;
			case 3:	flag_d++;break;
			default:  break;
		}
		if(flag_d==1)	{	LCD_WriteChar(78,2,'*');LCD_WriteChar(78,3,' ');}
		if(flag_d==2)   {	LCD_WriteChar(78,3,'*');LCD_WriteChar(78,2,' ');}
		if(flag_d==3)	flag_data=1; 
	   	LCD_WriteNum(45,2,Height);
		LCD_WriteNum(51,3,Weight);

	   flag_new=0;
	}		
}
Exemplo n.º 4
0
void main()
{
	uart_init();
	while(1)
	{
		keyscan();
	}
}
Exemplo n.º 5
0
void main()
{
	init();
	while(1)
	{
		keyscan();
	}
}
Exemplo n.º 6
0
 void  keydown(void)
 {  
  	P1=0xF0;
	if(P1!=0xF0)  //判断按键是否按下 如果按钮按下 会拉低P1其中的一个端口
	{
	  keyscan();
    }
 }
Exemplo n.º 7
0
void main()
{
	init_1602();
	display("0.");
	while(1)
	{
		keyscan();
	}
}
Exemplo n.º 8
0
void main()
{
	init();
	while(1)
	{
		keyscan();
		display(num);
	}
}
Exemplo n.º 9
0
//一些列的延时函数,都是在晶振频率为12MHz的情况下使用的
void delay1ms(uint num)
{
	uint i;
	while((num--!=0)&&(keyscan()==0xFF))
	{
		for(i=0;i<72;i++)
		;
	}
}
Exemplo n.º 10
0
void main()
{	
	IE=0X00;
	
	while(1)
	{	
		keyscan();
	}//while

}//fun
Exemplo n.º 11
0
Arquivo: 4x4.c Projeto: anan-cn/MCU
/**********************************************************

  判键是否按下子函数

**********************************************************/
void  keydown()
{  
   P1=0xf0;
   if((P1&0xf0)!=0xf0)
   {
     keyscan();
     P0=disp_code[key];
     beep();
   }
} 
Exemplo n.º 12
0
main()
{	IODIR1=LCD|RS|EN;
	lcd_init();
	while(1)
	{	lcd_string("while");
		lcd_data(keyscan());
		delay_ms(5000);
		lcd_cmd(0x01);
	}

}
Exemplo n.º 13
0
main()
{
unsigned char ret;
unsigned char buf[8];
unsigned char i=0;
unsigned char l1=strlen(pass);
unsigned char l2;
lcd_init();
lcd_cmd(0x80);
lcd_string("password:"******"Invalid");
delay_ms(5000);
}
else
{
//ret=strcmp(pass,buf);
ret=my_comp(pass,buf,l2);
if(ret==0)
{
	lcd_cmd(0x01);
	lcd_string("Valid");
	delay_ms(5000);
}
else
	{
	lcd_cmd(0x01);
	lcd_string("Invalid");
	delay_ms(5000);
	}
}
}
Exemplo n.º 14
0
main()
{
 uchar m;
    P2=0xff;
    IRIN=1;                    //I/O口初始化
    BEEP=1;
    RELAY=1; 
	
    delay1(10);                 //延时
    lcd_init();                //初始化LCD             
        
    lcd_pos(0);                //设置显示位置为第一行的第1个字符

     m = 0;
    while(cdis1[m] != '\0')
     {                         //显示字符
       lcd_wdat(cdis1[m]);
       m++;
     }

    lcd_pos(0x40);             //设置显示位置为第二行第1个字符
     m = 0;
    while(cdis2[m] != '\0')
     {
       lcd_wdat(cdis2[m]);      //显示字符
       m++;
     }


	IE = 0x81;                 //允许总中断中断,使能 INT0 外部中断
	TCON = 0x01;               //触发方式为脉冲负边沿触发
  while(1)
	{
	
		keyscan();
 
	delay(10);
    	switch(key)								   //读出对应值
		{
					
			case 1:P1= 0x08;break;
			case 2:P1= 0x3f;break;
			case 3:P1= 0x2d;break;
			case 4:P1= 0x08;break;
			case 5:P1= 0x10;break;
			case 6:P1= 0x20;break;
			case 7:P1= 0x40;break;
			case 8:P1= 0x80;break;
			default:break; 
		 
		}  
}
}//end main
Exemplo n.º 15
0
void main()
{
	init ();
    LCD1602_init();
	LCD_init();
	while(1)
	{
		keyscan ();
		keycheck ();
		f_choose();

	}
}
Exemplo n.º 16
0
void main(void)
{

   while(1){
 
   	 led1on;

     keyscan();


     
   }

}
Exemplo n.º 17
0
void main()
{
	init();
	init_24c02();
	ET0=1; //计时器0开启
	TR0=1; //计时器打开
	while(1)
	{
		keyscan();
		if(flag==1)
		{
			display2();
		}
	}
}
Exemplo n.º 18
0
void Run_jibu()
{
	keyscan();
	if(flag_new)
	{
		
		switch(key)
		{
			case 1:	if(run_mode==0) run_mode=1;
					else if(run_mode==1) run_mode=0;
					else if(run_mode==2) run_mode=0;
					break;
			case 2:	run_mode=2;
					break;
			case 3:	flag_running=1;run_bu=run_bushu;break;
			default:  break;
		}

	   	flag_new=0;

	   	switch(run_mode)
		{
			case 0:	Display_time();
					break;
			case 1:	Display_step();
					break;
			case 2:	LCD_WriteString(0,2,"Height:    cm");
					LCD_WriteString(0,3,"Weight:    kg");
					LCD_WriteNum(45,2,Height);
					LCD_WriteNum(51,3,Weight);
					break;
			default:  break;
		}	
	}
	if(flag_time&&(run_mode==0))
	{
		flag_time=0;
		LCD_WriteNum(30,3,time_m);
		LCD_WriteNum(55,3,time_s);
	}

	if(run_flag&&(run_mode==1))
	{
		run_flag=0;
		LCD_WriteNum(20,3,run_bushu);
	}
		
}
Exemplo n.º 19
0
void key_T()
{
   keyscan();
   if(flag_new)
   {
  		switch(key)
		{
			case 1:	T_warn++;   break;
			case 2:	T_warn--;   break;
			case 3:	flag_T=1;   break;
			case 4:	;   break;
			default:  break;
		}
		flag_new=0;
	}
}
Exemplo n.º 20
0
void main()
{	
	s1sta=s1;
	s2sta=s2;
	while(1)
	{
		keyscan();		   //扫描按键状态是否变化,即是否有人更改了按键状态。
		if(change)
		{
			change=0;	   //清零
			light=~light;  //一旦发现有开关状态发生了变化,则灯的状态就取反。(若以前亮,则熄灭;反之则打亮)
			s1sta=s1;	   //同时,将s1和s2的当前状态送给s1sta和s2sta,为以后的比较做准备。
			s2sta=s2;
		}	
	}
}
Exemplo n.º 21
0
void main()
{
	init_1602();
	init_24c02();
	init();
	readtemp();
	EA=1;
	ET0=1;
	TR0=0;
	while(1)
	{
		keyscan();
		if(second==0)
		{
			if(ahour==hour&&amin==minute)
			{
				display3();
				alarmflag=1;
				beep=0;
				while(alarmflag==1)
				{
					if(k1==0||k2==0||k3==0||k4==0)
					{
						alarmflag=0;
						write_com(0x01);
						beep=1;
						while(k1==0||k2==0||k3==0||k4==0);
					}
				}
			}
		}
		if(flag==0&&k3==0)
		{
			display4();
		}
		if(flag==0&&alarmflag==0)
		{
			display1();
		}
		if(flag==1&&alarmflag==0)
		{
			display2();
		}
	}
} 
Exemplo n.º 22
0
void deal_key()
{
	keyscan();
	 if(flag_new)
	 {
	 	switch(key)
		{
			case 1:	if(flag_deter==0) flag_mode=!flag_mode;break;
			case 2:	key=2;   break;
			case 3:	flag_deter=1;break;
			default:  break;
		}
		 if(flag_deter==0)
		 {	 
			 if(flag_mode)  	   LCD_WriteString(0,3,"To some music?");
			 else if(!flag_mode)   LCD_WriteString(0,3," Want to run? ");
		 }
		 flag_new=0;
	 }
}
Exemplo n.º 23
0
void main()
{
    //initialize all ports & functions
    sys_init();
    while(1)
    {
        //scan & get password
        key=keyscan();
        if((button_press_count<password_length) && (key!=0))
        {
            password_entered[button_press_count]=key;              //save entered digit
            button_press_count++;
            //strobe LED to indicate genuine key press
            key_press_indicator=1;
            Delay_ms(250);
            key_press_indicator=0;
            key=0;
        }
        password_entry_complete_check();          //verify entered password & send appropriate messages
        password_change();          //check for password change request & send appropriate messages
    }
}
Exemplo n.º 24
0
//主函数											   
void main()
{
	uchar /*decimal,count,*/need=1,mark=0,liandeng=0;
	double figure9;
	long figure01,figure02,figure0,mfigure1,mfigure2;
	figure1=figure2=figure3=figure4=keynum=decimal=count=mfigure1=mfigure2=0;	   //figure1第一运算数的整数部分 figure2第一运算数的小数部分 figure3第二运算数的整数部分 figure4第二运算数的小数部分
	P3=0xff;
	while(1)
	{	
		keynum=keyscan();
		if((keynum>=0)&&(keynum<=9))//输入的是数字
		{
			if(liandeng==1)
			{
				figure1=figure2=figure3=figure4=keynum=decimal=count=0;
			}
			liandeng=0;
			if(decimal==0)//整数部分
				figure1=keynum+figure1*10;
			if(decimal==1)//小数部分
			{
				count++;
				switch(count)
				{
					case 1:figure2=keynum*10000;break;
					case 2:figure2=figure2+keynum*1000;break;
					case 3:figure2=figure2+keynum*100;break;
					case 4:figure2=figure2+keynum*10;break;
					case 5:figure2=figure2+keynum;break;
					case 6:err=1;
				}
			}
			need=1;
		}			  
		if((keynum>=11)&&(keynum<=14))
		{
			mark=keynum;//符号
			figure3=figure1;
			figure4=figure2;
			figure1=0;
			figure2=0;
			decimal=0;
			liandeng=0;
			count=0;
		}
		if(keynum==15)//输入等号
		{
			if(liandeng==0)			  //判断是否第一次输入等号
			{
				figure01=figure1;
				figure02=figure2;
				switch(mark)
				{
					case 11:					  //加法运算
					{
						figure2=figure2+figure4;
						if(figure2>99999)
						{
							figure2=figure2%100000;
							figure1=figure1+figure3+1;
						}
						else
						{
							figure1=figure1+figure3;
						}
						break;
					}
					case 12:					  //减法运算
					{
						figure0=figure4-figure2;
						if(figure0<0)
						{
							figure2=figure4+100000-figure2;
							figure1=figure3-1-figure1;
						}
						else
						{
							figure2=figure4-figure2;
							figure1=figure3-figure1;
						}				
						break;
					}
					case 13:					  //乘法运算
					{
						figure9=((double)figure1+(double)figure2/100000)*((double)figure3+(double)figure4/100000);
						figure1=(long)figure9;
						figure2=(long)((figure9-figure1)*100000);
						break;
					}
					case 14:					 //除法运算
					{
						figure9=((double)figure3+(double)figure4/100000)/((double)figure1+(double)figure2/100000);
						figure1=(long)figure9;
						figure2=(long)((figure9-figure1)*100000);
						break;
					}	 
				}
			}
			else
			{
				switch(mark)
				{
					case 11:
					{
						figure2=figure2+figure02;
						if(figure2>99999)
						{
							figure2=figure2%100000;
							figure1=figure1+figure01+1;
						}
						else
						{
							figure1=figure1+figure01;
						}
						break;
					}
					case 12:
					{
						figure0=figure02-figure2;
						if(figure0<0)
						{
							figure2=figure02+100000-figure2;
							figure1=figure01-1-figure1;
						}
						else
						{
							figure2=figure02-figure2;
							figure1=figure01-figure1;
						}				
						break;
					}
					case 13:
					{
						figure9=((double)figure1+(double)figure2/100000)*((double)figure01+(double)figure02/100000);
						figure1=(long)figure9;
						figure2=(long)((figure9-figure1)*100000);
						break;
					}
					case 14:
					{
						figure9=((double)figure01+(double)figure02/100000)/((double)figure1+(double)figure2/100000);
						figure1=(long)figure9;
						figure2=(long)((figure9-figure1)*100000);
						break;
					}
				}
			}
			decimal=0;
			liandeng=1;
			need=1;
		}
		if(keynum==16)
		{
			decimal=1;//小数位
		}
		if(keynum==18)//根号
		{
			figure9=sqrt((double)figure1+(double)figure2/100000);
			figure1=(long)figure9;
			figure2=(long)((figure9-figure1)*100000);
			need=1;
		} 	
		if(keynum==17)//AC
		{
			figure1=figure2=figure3=figure4=keynum=decimal=count=0;
			liandeng=err=0;
			need=1;
		}
		if(keynum==19)//MC
		{
			mfigure1=0;
			mfigure2=0;
		}
		if(keynum==20)//MR
		{
			figure1=mfigure1;
			figure2=mfigure2;
			need=1;
		}
		if(keynum==21)//M+
		{
			mfigure1=figure1;
			mfigure2=figure2;
		}
		if(keynum==22)//M-
		{
			mfigure1=-figure1;
			mfigure2=figure2;
		}
		if(need==1)
		{
			choose();
		} 
		display();
		need=0;
	}
}
Exemplo n.º 25
0
static int
analyze(int maxleng, int const *lengv,
        int nsrcs, RANGE const *srcv,
        PARTNO ** mapv, PARTNO mdata[][256], int *posp, int *skipp, int *lenp)
{
    int i, j, k, step, width[maxleng + 1];
    int pos = *posp, skip = 0, len = 0, nparts = 1;
//fprintf(stderr,"calculate nparts: "); char const *sep = "";
    while (1) {
        int p = pos + skip, more;

        if (p >= maxleng)
            break;

        if (!mapv[p])           // get (SCANWID) more maps 
            keyscan(p, srcv, nsrcs, mdata, mapv);

        for (i = more = 0; i < 256; ++i)
            more += mapv[p][i];
        if (!more)
            break;
        width[p] = more += lengv[p] && p > *posp;
        if (more == 1) {
            *mapv[p] = UNUSED;
            mapv[p] = mdata[0];
        }

        // TODO: nparts at any stage is not this value! It needs to be
        // the sum of child indices, not just the product of dimensions.
        if (nparts * more == 1)
            ++pos;              // skip leading const bytes at start of range in first iteration only 
        else if (nparts * more > MAXPARTS)  //WRONG
            break;
        else
            ++skip, nparts *= more; //WRONG
//fprintf(stderr, "%s(%d%s)", sep, more, lengv[p] && p > *posp ? "" : "-1"); sep = " * ";
    }
    for (len = skip; width[pos + len - 1] == 1; --len);

//fprintf(stderr, " = %d; recalc = 1", nparts);
    for (i = len, nparts = step = 1; --i >= 0;) {

        if (width[pos + i] > 1) {

            j = lengv[pos + i] ? step : 0;
            for (k = 0; k < 256; ++k) {
                if (mapv[pos + i][k]) {
                    mapv[pos + i][k] = j;
                    j += step;
                }
            }
//fprintf(stderr, " + %d", j - step);
            nparts += j - step;
            step = j;
        }
    }
//fprintf(stderr, "= %d\n", nparts);
    *posp = pos;
    *skipp = skip;
    *lenp = len;
    return nparts;
}
Exemplo n.º 26
0
void Mission2()
{
	uchar key1=0;
	uchar cAD=0;
	uint iAD=0;
	uint iDA=0;
	uchar cDA=0;
	uchar cSendDA=0;
	senddata(0x88);
	senddata(0xFF);//stop flash
	*da=1;//send 10 to DA when the program start run.
	cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);
	while(key1!=0x05)
    {
		//get AD0 and show in the 8765 LED
		delay1ms(500);
		cAD=adin();
		//cAD=cDA;
		//iAD=(int)((int)cAD/255*2000);
		//去抖动
		/*iAD=arrAD[3]*1000+arrAD[2]*100+arrAD[1]*10+arrAD[0];
		if(abs(iAD-(int)cAD*10)>valve)
		{
			iAD=cAD*10;
			arrAD[3]=(uchar)(iAD/1000);
			iAD=iAD%1000;
			arrAD[2]=(uchar)(iAD/100);
			iAD=iAD%100;
			arrAD[1]=(uchar)(iAD/10);
			iAD=iAD%10;
			arrAD[0]=(uchar)iAD;
		}
		*/
		iAD=cAD*10;
		arrAD[3]=(uchar)(iAD/1000);
		iAD=iAD%1000;
		arrAD[2]=(uchar)(iAD/100);
		iAD=iAD%100;
		arrAD[1]=(uchar)(iAD/10);
		iAD=iAD%10;
		arrAD[0]=(uchar)iAD;
		//show AD in 8765 LED
		senddata(0x87);
		senddata(arrAD[3]);//display thousand in the 8th
		senddata(0x86);
		senddata(arrAD[2]);//display hundred in the 7th
		senddata(0x85);
		senddata(arrAD[1]);//display ten in the 6th
		senddata(0x84);
		senddata(arrAD[0]);//display one in the 5th
		senddata(0x83);
		//show setting in 4321 LED
		senddata(A[3]);//display thousand in the 4th
		senddata(0x82);
		senddata(A[2]);//display hundred in the 3th
		senddata(0x81);
		senddata(A[1]);//display ten in the 2th
		senddata(0x80);
		senddata(A[0]);//display one in the 1th
		if(cAD<(A[3]*100+A[2]*10+A[1]+(A[0]>=5?1:0)))
		{
			if(cSendDA<230)
				cSendDA=cSendDA+1;
		}
		else if(cAD>(A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0)))
		{
			if(cSendDA>1)
				cSendDA=cSendDA-1;
		}
		//send to DA
		iDA=A[3]*1000+A[2]*100+A[1]*10+A[0];
		//iDA=A[3]*100+A[2]*10+A[1];
		//cDA=iDA/2000*255;
		//cDA=A[3]*100+A[2]*10+A[1];
		*da=cSendDA;
		key1=keyscan();
		if(key1!=0xFF)
		{
			while(keyscan()!=0xFF)
			;
 		}
		switch(key1)
		{
			case 1://add 1mA
				if(iDA<=1999)
				{
					iDA=iDA+1;
					A[3]=(uchar)(iDA/1000);
					iDA=iDA%1000;
					A[2]=(uchar)(iDA/100);
					iDA=iDA%100;
					A[1]=(uchar)(iDA/10);
					iDA=iDA%10;
					A[0]=iDA;
				}
				cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);			
				break;
			case 2://minus 1mA
				if(iDA>=21)
				{
					iDA=iDA-1;
					A[3]=(uchar)(iDA/1000);
					iDA=iDA%1000;
					A[2]=(uchar)(iDA/100);
					iDA=iDA%100;
					A[1]=(uchar)(iDA/10);
					iDA=iDA%10;
					A[0]=iDA;
				}
				cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);
				break;
			case 3://add 100mA
				if(iDA<=1900)
				{
					iDA=iDA+100;
					A[3]=(uchar)(iDA/1000);
					iDA=iDA%1000;
					A[2]=(uchar)(iDA/100);
					iDA=iDA%100;
					A[1]=(uchar)(iDA/10);
					iDA=iDA%10;
					A[0]=iDA;
				}
				cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);
				break;
			case 4://minus 100mA
				if(iDA>=120)
				{
					iDA=iDA-100;
					A[3]=(uchar)(iDA/1000);
					iDA=iDA%1000;
					A[2]=(uchar)(iDA/100);
					iDA=iDA%100;
					A[1]=(uchar)(iDA/10);
					iDA=iDA%10;
					A[0]=iDA;
				}
				cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);
				break;
			case 6://add 10mA
				
				if(iDA<=1990)
				{
					iDA=iDA+10;
					A[3]=(uchar)(iDA/1000);
					iDA=iDA%1000;
					A[2]=(uchar)(iDA/100);
					iDA=iDA%100;
					A[1]=(uchar)(iDA/10);
					iDA=iDA%10;
					A[0]=iDA;
				}
				cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);
				break;
			case 7://minus 10mA
				if(iDA>=30)
				{
					iDA=iDA-10;
					A[3]=(uchar)(iDA/1000);
					iDA=iDA%1000;
					A[2]=(uchar)(iDA/100);
					iDA=iDA%100;
					A[1]=(uchar)(iDA/10);
					iDA=iDA%10;
					A[0]=iDA;
				}
				cSendDA=A[3]*100+A[2]*10+A[1]+((A[0]>=5)?1:0);
				break;	
		}
	}
	if(keyscan()!=0xFF)
	{
		while(keyscan()!=0xFF)
		;
	}
	
}
Exemplo n.º 27
0
//setup at startup
void Mission1()
{
	uchar key1=0;
	uchar tmpA[4]={0,0,0,0};
	uint tmp=0;
	A[0]=0;
	A[1]=2;
	A[2]=0;
	A[3]=0;
	AIndex=0;
	//send 0 to DA
	*da=10;
	while(key1!=0x05)
    {
		//show 1D  0200
		senddata(0xCF);
		senddata(0x01);//display "1" in the 8th
		senddata(0xCE);
		senddata(0x0D);//display "d" in the 7th
		senddata(0x85);
		senddata(0x0F);//display " " in the 6th
		senddata(0x84);
		senddata(0x0F);//display " " in the 5th
		senddata(0x83);
		senddata(A[3]);//display thousand in the 4th
		senddata(0x82);
		senddata(A[2]);//display hundred in the 3th
		senddata(0x81);
		senddata(A[1]);//display ten in the 2th
		senddata(0x80);
		senddata(A[0]);//display one in the 1th
		
		senddata(0x88);
		senddata(~(0x01<<AIndex));//flash
		key1=keyscan();
		if(key1!=0xFF)
		{
			while(keyscan()!=0xFF)
			;
			tmpA[0]=A[0];
			tmpA[1]=A[1];
			tmpA[2]=A[2];
			tmpA[3]=A[3];
 		}
		switch(key1)
		{
			case 1://add 1
				
				if(tmpA[AIndex]==9)
				{
					tmpA[AIndex]=0;
				}
				else
					tmpA[AIndex]=tmpA[AIndex]+1;
				tmp=tmpA[3]*1000+tmpA[2]*100+tmpA[1]*10+tmpA[0];
				if((tmp<=2000)&&(tmp>=20))
					A[AIndex]=tmpA[AIndex];
				break;
			case 2://minus 1
				if(tmpA[AIndex]==0)
				{
					tmpA[AIndex]=9;
				}
				else
					tmpA[AIndex]=tmpA[AIndex]-1;
				tmp=tmpA[3]*1000+tmpA[2]*100+tmpA[1]*10+tmpA[0];
				if((tmp<=2000)&&(tmp>=20))
					A[AIndex]=tmpA[AIndex];
				break;
			case 3://move left
				if(AIndex==3)
				{
					AIndex=0;
				}
				else
					AIndex=AIndex+1;
				break;
			case 4://move right
				if(AIndex==0)
				{
					AIndex=3;
				}
				else
					AIndex=AIndex-1;
				break;		
		}
	}
}
Exemplo n.º 28
0
void keys()
{
	char oldkey, newkey;
	int stat = 0;
	__u16 keycode;
	sem_t * sem_id;
	int ret = 0;
	struct timeval oldtv, newtv;
	struct timezone tz;
	int temp;

	sem_id = sem_open(UX400_SEM_CPLD, O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, 1);
	if(sem_id == SEM_FAILED) {
		perror("UX400 KEY sem_open");
		exit(1);
	}

	fancontrol(0x33);
	
	gettimeofday(&oldtv, &tz);
	
	for(;;){
		if(sem_wait(sem_id) < 0) {
			perror("UX400 KEY sem_wait");
			exit(1);
		}

		ret = powerkey();

		if(sem_post(sem_id) < 0) {
			perror("UX400 KEY sem_post");
		}
		
		if( ret == 1){
			key_send(KEY_POWER, 1 );
			usleep(50000);
			key_send(KEY_POWER, 0 );

			sleep(1);

			key_send(KEY_POWER, 1 );
			usleep(50000);
			key_send(KEY_POWER, 0 );

			sleep(1);

			key_send(KEY_POWER, 1 );
			usleep(50000);
			key_send(KEY_POWER, 0 );
		}

		if(sem_wait(sem_id) < 0) {
			perror("UX400 KEY sem_wait");
			exit(1);
		}
		
		newkey = keyscan();

		if(sem_post(sem_id) < 0) {
			perror("UX400 KEY sem_post");
		}

//		if(newkey != 0x1F)  printf("key read: 0x%x\n", newkey);
		
		gettimeofday(&newtv, &tz);
				
//		printf("sec: %d, usec: %d\n", newtv.tv_sec, newtv.tv_usec);
		
		if((oldkey == newkey)&&(newkey != 0x1F)){
			if(newtv.tv_sec == oldtv.tv_sec){
				temp = newtv.tv_usec - oldtv.tv_sec;
			}else{
				temp = newtv.tv_usec + 1000000 - oldtv.tv_sec;
			}
			
			oldtv = newtv;
//			printf("temp = %d\n", temp);

			if( temp < KEY_INTERVAL)
				continue;
		}
		
		oldtv = newtv;
		oldkey = newkey;
		
		switch(newkey){
			case 0x1F:
			case 0x00:

			break;

			case VEEX_KEY_BACKLIGHT:
				key_send(KEY_F5, 1 );
				usleep(50000);
				key_send(KEY_F5, 0 );
			break;
			case VEEX_KEY_SUMARY:
//				printf("SUMARY!\n");
				key_send(KEY_F6, 1 );
				usleep(50000);
				key_send(KEY_F6, 0 );
			break;
			case VEEX_KEY_HELP:
				key_send(KEY_F3, 1 );
				usleep(50000);
				key_send(KEY_F3, 0 );
			
			break;
			case VEEX_KEY_FILE:
				key_send(KEY_F1, 1 );
				usleep(50000);
				key_send(KEY_F1, 0 );
			break;
			case VEEX_KEY_HISTORY:
				key_send(KEY_F4, 1 );
				usleep(50000);
				key_send(KEY_F4, 0 );
			
			break;
			default:

			break;
		}
		usleep(50000);
	}
}
Exemplo n.º 29
0
int main( void )
{
	// Stop watchdog timer to prevent time out reset
	WDTCTL = WDTPW + WDTHOLD;
	init_device();
	InitLCM();
	WriteCom(0x3f,'L');//play on;
	WriteCom(0x3f,'R');
	ClearLCM();
	checkflash();
	
	P6SEL|=0x01;
	ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V;
	ADC12CTL1=SHP;
	ADC12MCTL0=SREF_1;
	
	WriteChinese(hzstr,0,0,'L');
	WriteChinese(hzstr+32,0,16,'L');
	WriteChinese(hzstr+64,0,32,'L');
	WriteChinese(hzstr+96,2,0,'L');
	WriteChinese(hzstr+128,2,16,'L');
	WriteChinese(hzstr+160,2,32,'L');
	
	WriteChar(Ezk+16*('m'-0x20),6,40,'L');
	WriteChar(Ezk+16*('V'-0x20),6,48,'L');
	
	ADC12CTL0|=ENC;
	ADC12CTL0|=ADC12SC;
	while(1)
	{
		kkk_showAD(0);
		k=keyscan();
		if(k==12)
		{
			while(k)//等待按键弹起
			{
				k=keyscan();
			}
                        close_timerA();
			ClearLCM();
			kkk_setparameter();
			ClearLCM();
			WriteChinese(hzstr,0,0,'L');
			WriteChinese(hzstr+32,0,16,'L');
			WriteChinese(hzstr+64,0,32,'L');
			WriteChinese(hzstr+96,2,0,'L');
			WriteChinese(hzstr+128,2,16,'L');
			WriteChinese(hzstr+160,2,32,'L');
			
			WriteChar(Ezk+16*('m'-0x20),6,40,'L');
			WriteChar(Ezk+16*('V'-0x20),6,48,'L');
			kkk_showAD(0);
                        init_timerA();
		}
		if(k==15)//reset
		{
			while(k)//等待按键弹起
			{
				k=keyscan();
			}
			WDTCTL =WDT_MRST_32;
			while(1);
		}
		delay(2000);
	}
}
Exemplo n.º 30
0
void keys()
{
	char temp;
	int stat = 0;
	__u16 keycode;
	sem_t * sem_id;

	fancontrol(0x33);

	sem_id = sem_open(UX400_SEM_CPLD, O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, 1);
	if(sem_id == SEM_FAILED) {
		perror("UX400 KEY sem_open");
		exit(1);
	}
	
	system("/usr/bin/ux400-vga");

	for(;;){
		if(sem_wait(sem_id) < 0) {
			perror("UX400 KEY sem_wait");
			exit(1);
		}

		if(powerkey() == 1){
			key_send(KEY_POWER, 1 );
			key_send(KEY_POWER, 0 );

			key_send(KEY_POWER, 1 );
			key_send(KEY_POWER, 0 );
		}
		temp = keyscan();

		if(sem_post(sem_id) < 0) {
			perror("UX400 KEY sem_post");
		}

		switch(temp){
			case 0x1F:
			case 0x00:
				if(stat == 1){
					key_send(keycode, 0);
				}
				stat = 0;
			break;
			case VEEX_KEY_BACKLIGHT:
				if(stat != 1) key_send(KEY_F5, 1);
				stat = 1;
				keycode = KEY_F5;
			break;
			case VEEX_KEY_SUMARY:
				if(stat != 1) key_send(KEY_F6, 1 );
				stat = 1;
				keycode = KEY_F6;
			break;
			case VEEX_KEY_HELP:
				if(stat != 1) key_send(KEY_F3, 1);
				stat = 1;
				keycode = KEY_F3;
			break;
			case VEEX_KEY_FILE:
				if(stat != 1) key_send(KEY_F1, 1);
				stat = 1;
				keycode = KEY_F1;
			break;
			case VEEX_KEY_HISTORY:
				if(stat != 1) key_send(KEY_F4, 1);
				stat = 1;
				keycode = KEY_F4;
			break;
			default:
				if(stat == 1){
					key_send(keycode, 0);
				}
				stat = 0;
			break;
		}
		usleep(100000);
	}
}