|
這是我的按鍵部分
void key_int0() interrupt 0
{
uchar keytemp;
uint total_freq;//總頻率
EA=0;
TR0=0;
delay(10);
if(key==0) //判斷按鍵是否按下
{
keytemp=P3&0xf0;//獲取P3口高四位的值
switch(keytemp) //根據按鍵次數選擇波形
{
case 0xe0:
waveform++;
if(waveform>2)waveform=0;
break;
case 0xd0:
wavefreq[waveform]++; // 頻率按單位增加
if(wavefreq[waveform]>10)wavefreq[waveform]=1;
break;
case 0xb0: // 頻率按單位遞減
wavefreq[waveform]--;
if(wavefreq[waveform]<1)wavefreq[waveform]=10;
break;
}
THtemp=waveTH[waveform*10+(wavefreq[waveform]-1)];
//方括號中選取第幾個數后,并把該值賦給T_temp
TLtemp=waveTL[waveform*10+(wavefreq[waveform]-1)];
total_freq=wavefreq[waveform]*freq_unit[waveform];//求輸出頻率(個數*單位)
lcd_hang2[5]=total_freq%10+0x30;//在液晶中顯示個位,(0x30在液晶顯示中表示數字0)
total_freq/=10; lcd_hang2[4]=total_freq%10+0x30; //顯示十位
total_freq/=10; lcd_hang2[3]=total_freq%10+0x30; //顯示百位
total_freq/=10; lcd_hang2[2]=total_freq%10+0x30; //顯示千位
disp_lcd(0x80,&lcd_hang1[waveform*16]);//在第一行顯示
disp_lcd(0xc0,lcd_hang2);//在第二行顯示
}
EA=1;TR0=1;//開啟總中斷與定時器
}
|
|