找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3135|回复: 10
打印 上一主题 下一主题
收起左侧

单片机C51编程遇到了一个问题

[复制链接]
回帖奖励 20 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次(中奖概率 20%)
跳转到指定楼层
楼主
ID:187835 发表于 2017-5-8 11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
....
while(1)
{
  ADresult[0]=getdata(0);
  if( X<=100 || X>=200)
  {
   BUZZER=1;
  }
  else
  {
   BUZZER=0;
  }
.....
当X=150,这个时候蜂鸣器不响;然而:
...
unsigned int  X;
BUZZER=0;
while(1)
{
  
ADresult[0]=getdata(0);
  if( X<=100 || X>=200)
  {
   BUZZER=1;
  }
  //else
  //{
  //BUZZER=0;
  //}
.....
else去掉,当X=150时,蜂鸣器还是响,很费解为什么当if条件不满足(X=150)时,仍然执行了“ BUZZER=1”?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:187835 发表于 2017-5-8 12:09 | 只看该作者
解决了。并非是单片机执行了if{},而是条件不满足时自动跳过,执行了P2^7=1 (BUZZER的定义式:BUZZER=P2^7)。else注释掉后,在加一句BUZZER=0即可。那么单片机在默认的时候P2^7口是输出高电平喽?

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:47933 发表于 2017-5-8 22:10 | 只看该作者
Magatop 发表于 2017-5-8 12:09
解决了。并非是单片机执行了if{},而是条件不满足时自动跳过,执行了P2^7=1 (BUZZER的定义式:BUZZER=P2^7) ...

除P0口未上拉时外,其他端口在空闲时都是高电平
回复

使用道具 举报

地板
ID:187835 发表于 2017-5-9 02:16 来自手机 | 只看该作者
1楼的解决方案是强制fengming=0,超出这个范围也不会响,并没有解决问题。。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:170270 发表于 2017-5-9 09:14 | 只看该作者
while(1)
{
  
ADresult[0]=getdata(0);
  if( X<=100 || X>=200)
  {
   BUZZER=1;
  }
主程序只要满足一次 BUZZER=1就一直存在了
回复

使用道具 举报

6#
ID:151834 发表于 2017-5-9 10:45 | 只看该作者
好像看懂了
回复

使用道具 举报

7#
ID:198577 发表于 2017-5-9 12:43 | 只看该作者
看看语法有没有错误
回复

使用道具 举报

8#
ID:187835 发表于 2017-5-9 13:54 来自手机 | 只看该作者
依然是你 发表于 2017-5-9 09:14
while(1)
{
  

主程序只送了一次150,没有满足BUZZER=1的条件啊。。
回复

使用道具 举报

9#
ID:187835 发表于 2017-5-9 13:57 来自手机 | 只看该作者
文龙 发表于 2017-5-9 10:45
好像看懂了

求指教
回复

使用道具 举报

10#
ID:74868 发表于 2017-5-10 15:51 | 只看该作者
else去掉,默认 BUZZER高电平
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表