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]); } }
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); } }
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; } }
void main() { uart_init(); while(1) { keyscan(); } }
void main() { init(); while(1) { keyscan(); } }
void keydown(void) { P1=0xF0; if(P1!=0xF0) //判断按键是否按下 如果按钮按下 会拉低P1其中的一个端口 { keyscan(); } }
void main() { init_1602(); display("0."); while(1) { keyscan(); } }
void main() { init(); while(1) { keyscan(); display(num); } }
//一些列的延时函数,都是在晶振频率为12MHz的情况下使用的 void delay1ms(uint num) { uint i; while((num--!=0)&&(keyscan()==0xFF)) { for(i=0;i<72;i++) ; } }
void main() { IE=0X00; while(1) { keyscan(); }//while }//fun
/********************************************************** 判键是否按下子函数 **********************************************************/ void keydown() { P1=0xf0; if((P1&0xf0)!=0xf0) { keyscan(); P0=disp_code[key]; beep(); } }
main() { IODIR1=LCD|RS|EN; lcd_init(); while(1) { lcd_string("while"); lcd_data(keyscan()); delay_ms(5000); lcd_cmd(0x01); } }
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); } } }
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
void main() { init (); LCD1602_init(); LCD_init(); while(1) { keyscan (); keycheck (); f_choose(); } }
void main(void) { while(1){ led1on; keyscan(); } }
void main() { init(); init_24c02(); ET0=1; //计时器0开启 TR0=1; //计时器打开 while(1) { keyscan(); if(flag==1) { display2(); } } }
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); } }
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; } }
void main() { s1sta=s1; s2sta=s2; while(1) { keyscan(); //扫描按键状态是否变化,即是否有人更改了按键状态。 if(change) { change=0; //清零 light=~light; //一旦发现有开关状态发生了变化,则灯的状态就取反。(若以前亮,则熄灭;反之则打亮) s1sta=s1; //同时,将s1和s2的当前状态送给s1sta和s2sta,为以后的比较做准备。 s2sta=s2; } } }
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(); } } }
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; } }
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 } }
//主函数 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; } }
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; }
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) ; } }
//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; } } }
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); } }
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); } }
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); } }