初学51遇到不能解释的问题,求教大家.
无意中试下面程序:
#include<at89x51.h>
void main(void)
{
p1_4=!p1_4;
}
p14居然输出声音不错的音频来.我试了好久在主程序加上延时音频变低.但是频率最高不能高过上述没有延时的频率.
主程序没有循环啊,为什么会有音频.
我只能找个说服自己的理由:是不是为了方便c语言默认取反,就输出一个稳定的音频,作为提示.
还是按照自己的想法变了一个,也能正常输出音频,频率可以正常改变.
#include<at89x51.h>
void delay(unsigned int m)//延时
{
unsigned int k=5*m;
while(--k);
}
void main(void)//主程序
{
unsigned char i=8;
p2=0xff;
while(1)
{
if(p2_0==0)//p20加频率
{i--;delay(1000);p3_7=!p3_7;}
else if(p2_1==0)//p21减少频率
{i++;delay(1000);p3_7=!p3_7;}
delay(i);
p1_4=!p1_4;
}
}