电子工程师技术服务社区
- 社区首页
- 下载
- 6.zip
资料描述
1、仿真效果
2、代码
#include
#include
bit flag;
sbit p1_7=p1^7;
sbit p1_0=p1^0;
unsigned char count;
void dely500(void)
{
unsigned char i;
for(i=250;i>0;i--)
{
_nop_();
}
}
void main(void)
{
while(1)
{
if(p1_7==0)
{
for(count=200;count>0;count--)
{
p1_0=~p1_0;
dely500();
}
for(count=200;count>0;count--)
{
p1_0=~p1_0;
dely500();
dely500();
}
}
}
}
3、分析
(1)这个程序实现的是蜂鸣器发声,不过我认为程序是有一些问题,下面分析下。
(2)cpu在两个for循环中运行时,p1_7发生变化时,不会跳出循环,不过我计算了下时间大概在几百毫秒,貌似影响不大。
(3)p1_7为高电平时,p1_0没有一个确定的状态,我觉得p1_0应该为高电平,否则凤鸣器会一直响。
(4)if(p1_7==0)好像也有问题,应该是先读取p1_7的值,再判断。例如;
temp=p1_7;
if(temp==0);
最后附上附件,手懒得可以自己下载直接仿真。