📄 文档 (8)含有中断.txt
字号:
for(i=0;i<=6;i++)
{
CLK = 0; //时钟为低电平
if(DO)
{ //如果采集到的位为1
Temp1=Temp1+1; //给临时存储Temp1加1
Temp1=Temp1<<1;
} //临时存储器左移一位
else
Temp1=Temp1<<1; //如果采集到的数位为0,临时存储器左移一位
_nop_();
_nop_();
_nop_();
_nop_();
CLK = 1;
} //时钟为高电平,完成一个时钟周期数据采集
CLK = 0;
if(DO) Temp1=Temp1+1;
if(DO) Temp2=0x80;
CLK = 1;
//采集数据校验
for(i=0;i<=6;i++)
{
CLK=0;
if(DO){
Temp2=Temp2>>1;
Temp2=Temp2+0x80; }
else
Temp2=Temp2>>1;
CLK = 1;
}
CS = 1;
if(Temp1==Temp2) //判断数据采集是否有效
{
error=0;
return Temp1;
}
else
{
error=1;
return Temp1;
}
}
void timer0() interrupt 1 using 1
{
TH0=~(500/256) ;
TL0=-(500%250);
beep=!beep;
}
void main()
{
unsigned int result;
uchar i;
uchar t;
uchar i2;
uchar j=0; //标记
ulong a=1000,b=1000; //a用来记录频率;b用来记录频率间隔(开始是为1000HZ)
ulong c=0;
uchar code d[]="please insert F:";
uchar code q[]="insert code: ";
uchar code w[]="please insert DF:" ;
uchar ask[20];
/* uchar code str0='1';
uchar code str1='2';
uchar code str2='3';
uchar code str3='A';
uchar code str4='4';
uchar code str5='5';
uchar code str6='6';
uchar code str7='B';
uchar code str8='7';
uchar code str9='8';
uchar code str10='9';
uchar code str11='c';
uchar code str12='*';
uchar code str13='0';
uchar code str14='#';
uchar code str15='D';
*/
unsigned char offset=0x80; //定义一个偏移地址变量,lcd1602 写入控制字时用到
unsigned char key;
delay(2);
lcd1602_bus=0xff;
lcd1602_init();
lcd1602_wrcmd(offset+0x00);
xianshi(0);
// lcd1602_clear();
while(1)
{
key=getkey_ii();
if (key==8)
{
TMOD=0x01;
TH0=~(500/256) ;
TL0=-(500%250);
TR0=1;
ET0=1;
EA=1;
while(key!=15)
{
key=getkey_ii();
}
EA=0;
}
/*************** A键上调 ******************/
if(key==7)
{
j=j+1;
if(j>6)j=0;
xianshi(j);
}
/*************** B键下调 ******************/
if (key==3)
{
if (j==0) j=7;
j=j-1;
xianshi(j);
}
/************* SIN *******************/
if(key==0 || ((j==0)&&(key==15)))
{ key=getkey_ii();
ad9850(a,b,c);
delay(1000);
}
/*************** OOK *****************/
if(key==1 || ((j==1)&&(key==15)))
{
key=18;
i2=0;
lcd1602_init();
lcd1602_clear();
while(key!=15)
{
key=getkey_ii();
delay(100);
if (key==0) {i2=i2+1; ask[i2-1]=1 ;}
if (key==13) {i2=i2+1; ask[i2-1]=0; }
lcd1602_clear();
for(i=0;i<18;i++) lcd1602_wrdata(q[i]);
lcd1602_wrcmd(offset+0x40); //换行
for(i=0;i<i2;i++) lcd1602_wrdata(ask[i]+0x30);
}
if(i2!=0)
{
lcd1602_clear();
key=18;
while(key!=15)
{
for(i=0;i<i2;i++)
{
if(ask[i]==0) ad9850(0,0,0);
if(ask[i]==1) ad9850(300,0,0);
lcd1602_clear();
lcd1602_wrcmd(offset+0x40); //换行
for(t=0;t<i2;t++) lcd1602_wrdata(ask[t]+0x30);
delay_1ms(10);
key=getkey_ii();
}
}
}
xianshi(j);
}
/************* SET F *******************/
if(key==2|| ((j==2)&&(key==15)))
{ a=0;
lcd1602_clear();
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
key=18; //避免和下面的WHILE语句条件冲突;临时改变KEY 只变一次
while(key!=15 )
{
key=getkey_ii();
if(key==0)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
a=a*10+1;
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
xianshu(a);
//lcd1602_wrcmd(offset+0x40);
// for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
}
else if (key==1)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+2;
xianshu(a);
//lcd1602_wrcmd(offset+0x40);
//for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
}
else if (key==2)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+3;
xianshu(a);
// lcd1602_wrcmd(offset+0x40);
// for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
}
else if (key==4)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
a=a*10+4;
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
xianshu(a);
}
else if (key==5)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+5;
xianshu(a);
}
else if (key==6)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+6;
xianshu(a);
}
else if (key==8)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+7;
xianshu(a);
}
else if (key==9)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+8;
xianshu(a);
}
else if (key==10)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+9;
xianshu(a);
}
else if (key==13)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
lcd1602_wrcmd(offset+0x40); //换行
a=a*10+0;
xianshu(a);
}
}
xianshi(0);
j=0;
ad9850(a,b,c);
} //设定频率
/************* SET DF *******************/
if(key==4 || ((j==3)&&(key==15)))
{ b=0;
lcd1602_clear();
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
key=18; //避免和下面的WHILE语句条件冲突;临时改变KEY 只变一次
while(key!=15 )
{
key=getkey_ii();
if(key==0)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
b=b*10+1;
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
xianshu(b);
//lcd1602_wrcmd(offset+0x40);
// for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
}
else if (key==1)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+2;
xianshu(b);
//lcd1602_wrcmd(offset+0x40);
//for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
}
else if (key==2)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+3;
xianshu(b);
// lcd1602_wrcmd(offset+0x40);
// for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
}
else if (key==4)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
b=b*10+4;
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
xianshu(b);
}
else if (key==5)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+5;
xianshu(b);
}
else if (key==6)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+6;
xianshu(b);
}
else if (key==8)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+7;
xianshu(b);
}
else if (key==9)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+8;
xianshu(b);
}
else if (key==10)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+9;
xianshu(b);
}
else if (key==13)
{
lcd1602_clear();
lcd1602_wrcmd(offset+0x00);
for(i=0;i<17;i++) lcd1602_wrdata(w[i]);
lcd1602_wrcmd(offset+0x40); //换行
b=b*10+0;
xianshu(b);
}
}
xianshi(0);
j=0;
ad9850(a,b,c);
}
if(key==5|| ((j==4)&&(key==15)))
{
c=dushu();
ad9850(a,b,c);
}
//相位控制
/*********** FSK ******************/
if(key==6|| ((j==5)&&(key==15)))
{
key=18;
i2=0;
lcd1602_init();
lcd1602_clear();
while(key!=15)
{
key=getkey_ii();
delay(100);
if (key==0) {i2=i2+1; ask[i2-1]=1 ;}
if (key==13) {i2=i2+1; ask[i2-1]=0; }
lcd1602_clear();
for(i=0;i<18;i++) lcd1602_wrdata(q[i]);
lcd1602_wrcmd(offset+0x40); //换行
for(i=0;i<i2;i++) lcd1602_wrdata(ask[i]+0x30);
}
lcd1602_clear();
key=18;
if (i2!=0)
{
while(key!=15)
{
for(i=0;i<i2;i++)
{
if(ask[i]==0) ad9850(150,0,0);
if(ask[i]==1) ad9850(300,0,0);
lcd1602_clear();
lcd1602_wrcmd(offset+0x40); //换行
for(t=0;t<i2;t++) lcd1602_wrdata(ask[t]+0x30);
delay_1ms(10);
key=getkey_ii();
}
}
xianshi(j);
}
}
/************* *键用来步减 *******************/
if(key==12){a=a-b; ad9850(a,b,c);} //
/************* #用来步加 *******************/
if(key==14) {a=a+b; ad9850(a,b,c);} //
/************* FM *******************/
if(key==8 || ((j==6)&&(key==15)))
{
key=18;
while(key!=15)
{
key=getkey_ii();
result=adc_tlc0838(0)*5*10/255;
if (result!=50)
{
lcd1602_clear();
xianshu(result/10);
lcd1602_wrdata('.');
xianshu(result%10);
ad9850(result*50,0,0) ;
}
}
xianshi(j);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -