在51单片机上,我想要同时实现流水灯和蜂鸣器,而且在灯1,3,5,7亮时蜂鸣器发声,其他时刻不发声》

#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbi... #include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
uchar temp;
void delay(uint);
void main()
{
uint n=1;
temp=0xfe;
P1=temp;
while(1)
{
if(n%2==1)
beep=0;
else
beep=1;
temp=_crol_(temp,1);
delay(10000);
P1=temp;
n=n++;;

}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

哪里错了啊
展开
 我来答
hck2llj
2012-11-05 · TA获得超过2197个赞
知道小有建树答主
回答量:1196
采纳率:75%
帮助的人:1073万
展开全部
是我孤陋寡闻还是怎么的,不过我还真没见过这样n=n++;;的写法,如果你是想让n隔一段延时就加1的话,直接这样n++就可以了,或者n=n+1。
还有,你不觉得你这个延时太长了吗?接近10秒的延时,这样调试起来得多累啊。
你的n定义为无符号整型,而且没定义上限,它会一直加到65535才溢出为0的,这无疑加大了单片机的工作量。虽然这是小程序感觉不出来,但是对你以后的写代码习惯影响很大。
在使用蜂鸣器之前,先确定你的硬件是没问题的,否则你会无限的怀疑自己的代码。方法是:写一段100%准确的最简单的代码去检查硬件是否正确。如果是有源蜂鸣器的话,直接让IO拉高或拉低(具体看你的驱动电路)就可以让它响了。如果是无源的,那得输出一段波形才行。
smokeghost
2012-11-06 · TA获得超过544个赞
知道小有建树答主
回答量:354
采纳率:100%
帮助的人:341万
展开全部
你好
一楼答得超好
先给你提个建议,把问题明确,是编译通不过,还是通过了运行与设计不符,幸亏你的程序短,否则,没几个人会帮你分析的。
另:程序结构有问题,既然1357点亮时蜂鸣器动作,那么为什么要用两个完全不相干的变量,各干各的事,靠机遇吗,如果程序运行时间无限延长,总有乱套的时候,现在就这两个变量及功能,那么多了呢,有中断,调用,跳转,你怎么来协调。希望帮到你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
murexster
2012-11-05 · TA获得超过386个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:167万
展开全部
是什么样的问题,表述清楚咯
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式