📄 新建 文本文档.txt
字号:
#include<io.h>
#include"system.h"
void send(int a);
void write_fw(int fre,int pha);
int keyscan();
int main()
{
int freq=100,keyvalue1=0,keyvalue2=0,keyvalue3=0;
int vpp;
int keyvalue=0xff;
double temp;
int led[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
int led1[10]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};
IOWR(CON_WORD_BASE,0,0);
write_fw(freq,0);
while(1)
{
keyvalue=keyscan();
if(keyvalue==0xa)
{
while(1)
{
keyvalue=keyscan();
if(keyvalue==0xb) break;
freq=freq+10000;
usleep(20000);
write_fw(freq,0);
if(freq>=200000) freq=100;
}
}
}
while(1)
{
freq=freq+10000;
if (freq>200000) freq=100;
write_fw(freq,0);
usleep(20000);
}
IOWR(LED0_BASE,0,led[0]);
IOWR(LED1_BASE,0,led[0]);
IOWR(LED2_BASE,0,led[0]);
IOWR(LED3_BASE,0,led[0]);
IOWR(LED4_BASE,0,led[1]);
IOWR(LED5_BASE,0,led[0]);
IOWR(LED6_BASE,0,led[0]);
IOWR(LED7_BASE,0,led[0]);
while(1)
{
keyvalue1=keyscan();
if(keyvalue1<0xa)
{
keyvalue2=keyvalue2*10+keyvalue1;
keyvalue3=keyvalue2;
}
else if(keyvalue1==0xa)
{
IOWR(CON_WORD_BASE,0,0);
write_fw(keyvalue2,0);
keyvalue3=keyvalue2;
keyvalue2=0;
}
else if(keyvalue1==0xb)
{
IOWR(CON_WORD_BASE,0,0);
write_fw(keyvalue2*1000,0);
keyvalue3=keyvalue2*1000;
keyvalue2=0;
}
else if(keyvalue1==0xc)
{
IOWR(CON_WORD_BASE,0,0);
write_fw(keyvalue2*1000000,0);
keyvalue3=keyvalue2*1000000;
keyvalue2=0;
}
else if(keyvalue1==0xd)
{
IOWR(CON_WORD_BASE,0,0);
keyvalue3=keyvalue3+10000;
keyvalue2=keyvalue3;
write_fw(keyvalue2,0);
keyvalue2=0;
}
else if(keyvalue1==0xe)
{
IOWR(CON_WORD_BASE,0,0);
keyvalue3=keyvalue3-10000;
keyvalue2=keyvalue3;
write_fw(keyvalue2,0);
keyvalue2=0;
}
else if(keyvalue1==0xf)
{
vpp=IORD(PP_DATA_BASE,0);
IOWR(RESET_BASE,0,1);
usleep(100);
IOWR(RESET_BASE,0,0);
temp=vpp;temp=(temp-128)*100/3;
vpp=temp;
}
if(keyvalue1==0xf){
IOWR(LED0_BASE,0,led[0]);
IOWR(LED1_BASE,0,led[0]);
IOWR(LED2_BASE,0,led[0]);
IOWR(LED3_BASE,0,led[0]);
IOWR(LED4_BASE,0,led1[vpp%10000/1000]);
IOWR(LED5_BASE,0,led[vpp%1000/100]);
IOWR(LED6_BASE,0,led[vpp%100/10]);
IOWR(LED7_BASE,0,led[vpp%10]);
}
else {
IOWR(LED0_BASE,0,led[keyvalue3/10000000]);
IOWR(LED1_BASE,0,led[keyvalue3%10000000/1000000]);
IOWR(LED2_BASE,0,led[keyvalue3%1000000/100000]);
IOWR(LED3_BASE,0,led[keyvalue3%100000/10000]);
IOWR(LED4_BASE,0,led[keyvalue3%10000/1000]);
IOWR(LED5_BASE,0,led[keyvalue3%1000/100]);
IOWR(LED6_BASE,0,led[keyvalue3%100/10]);
IOWR(LED7_BASE,0,led[keyvalue3%10]);
}
}
}
void send(int a)
{
IOWR(FREQ_WORD_BASE,0,a);
IOWR(CON_WORD_BASE,0,1);
IOWR(CON_WORD_BASE,0,0);
}
void write_fw(int fre,int pha)
{
fre=fre*42.95;
send(pha<<3);
send(fre>>24);
send(fre>>16);
send(fre>>8);
send(fre);
IOWR(CON_WORD_BASE,0,2);
IOWR(CON_WORD_BASE,0,0);
}
int keyscan()
{
volatile int i,j,col,row;
int key[4][4]={1,2,3,4,5,6,7,8,9,0,0xa,0xb,0xc,0xd,0xe,0xf};//键盘编码
while(1)
{
IOWR(KEYBOARD_BASE,0,0);//选择所有行
usleep(100000);
if(IORD(KEYBOARD_BASE,0)!=15)//有键按下
{
usleep(100);
while(IORD(KEYBOARD_BASE,0)==15)break;
if(IORD(KEYBOARD_BASE,0)==15)break;
row=1;
for(i=0;i<4;i++)//行扫描
{
IOWR(KEYBOARD_BASE,0,~row);//选择行
usleep(20);
col=IORD(KEYBOARD_BASE,0);//读取列值
if(col!=15)//有键按下
{
col=~col & 0xf;
for(j=0;j<4;j++)
{
col>>=1;if(col==0)break;//转换列值
}
break;
}
row<<=1;//扫描下一行
}
break;
}
}
while(IORD(KEYBOARD_BASE,0)!=15);//等待按键松开
return key[i][j];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -