搜索
bottom↓
回复: 9

51单片机读引脚问题

[复制链接]

出0入0汤圆

发表于 2014-3-24 13:24:04 | 显示全部楼层 |阅读模式
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int

#define MAXCHAR 90
uchar  aa[MAXCHAR];

sbit fire=P0^0;                                    //火焰
sbit shake=P0^1;                                //震动

sbit dianshiji=P0^2;                        //电视机
sbit dianfanguo=P0^3;                    //电冰箱
sbit reshuiqi=P0^4;                                //热水器
sbit xiyiji=P0^5;                                //洗衣机
sbit men=P0^6;                                        //门
sbit buffer=P0^7;                                //蜂鸣器

void main()
{
               

        fire=1;                                    //火焰          检测IO口
        shake=1;                                //震动          检测IO口

        dihiji=1;                        //电视机
        dianfuo=1;                    /        eshuiqi=1;                                //热水器
        xiyiji=1;                                //洗衣机
        men=1;                                    //门

        flag=0;
        buffer=0;

        P10=1;
        P11=1;
        P12=1;
        P13=1;                  

           while(1)
    {       
                if(P10==0)
                {
                        //发送中文短信李四
                   send_english_3();
                   delay(1000);
                }
                if(P11==0)
                {
                        //发送中文短信赵五
                   send_english_4();
                }               
                if(strstr(aa,"+CMTI")!=NULL)    //缓存中有+CMTI字符
        {
            
                        clearBuff();
            Print_Str(CMGF1);
            delay(10);
                        Print_Str(CMGF1);
            delay(10);
                        Print_Str(CMGF1);
            delay(10);
            while(Hand()==0);
            clearBuff();
            Print_Str(CMGR);            //读取1号位置的短信
            delay(10);
                        Print_Str(CMGR);            //读取1号位置的短信
            delay(10);
                        Print_Str(CMGR);            //读取1号位置的短信
            delay(10);


                        if(strstr(aa,"hn")!=NULL)                 //户内模式
            {       
                send_english();
                                flag=1;
            }
                        if(strstr(aa,"out")!=NULL)                 //户外模式
            {       
                send_english();
                                flag=2;
            }
                        if(flag==2)                                                           //户外模式
                        {
                                if(strstr(aa,"men")!=NULL)                  
                    {       
                                        flag1++;
                                        if(flag1==1)
                                                men=0;
                                        if(flag1==2)
                                        {
                                                flag1=0;
                                                men=1;       
                                        }
                        send_english();               
                    }
                                if(strstr(aa,"dfg")!=NULL)                  
                    {
                                        flag2++;
                                        if(flag2==1)
                                                dianfanguo=0;
                                        if(flag2==2)
                                        {
                                                flag2=0;
                                                dianfanguo=1;       
                                        }
                        send_english();                       
                    }
       
                                if(strstr(aa,"rsq")!=NULL)                  
                    {       
                                        flag3++;
                                        if(flag3==1)
                                                reshuiqi=0;
                                        if(flag3==2)
                                        {
                                                flag3=0;
                                                reshuiqi=1;       
                                        }
                        send_english();                       
                    }
       
                                if(strstr(aa,"tv")!=NULL)                  
                    {       
                                        flag4++;
                                        if(flag4==1)
                                                dianshiji=0;
                                        if(flag4==2)
                                        {
                                                flag4=0;
                                                dianshiji=1;       
                                        }
                        send_english();                       
                    }
       
                                if(strstr(aa,"xyj")!=NULL)                  
                    {       
                                        flag5++;
                                        if(flag5==1)
                                                xiyiji=0;
                                        if(flag5==2)
                                        {
                                                flag5=0;
                                                xiyiji=1;       
                                        }
                        send_english();                       
                    }
       
                                if(fire==1)
                                {       
                                        fire=0;
                                        send_english_1();
                                        for(i=5;i>0;i--)                  //蜂鸣器响5次报警
                                        {
                                                buffer=0;
                                                delay(100);
                                                buffer=1;
                                                delay(100);
                                        }
                                }
                                                                                                        //户外模式
                                if(shake==0)
                                {       
                                        shake=1;
                                        send_english_2();
                                        for(i=3;i>0;i--)                  //蜂鸣器响3次报警
                                        {
                                                buffer=0;
                                                delay(100);
                                                buffer=1;
                                                delay(100);
                                        }
                                }                       
                        }
        }
                if(flag==1)                                                           //户内模式
                        {
                                 if(shake==0)
                                {       
                                        shake=1;
                               
                                        for(i=3;i>0;i--)            //蜂鸣器响3次报警
                                        {
                                                buffer=0;
                                                delay(100);
                                                buffer=1;
                                                delay(100);
                                        }
                                }
                                if(fire==1)
                                {
                                        fire=0;
                                        for(i=5;i>0;i--)             //蜂鸣器响5次报警
                                        {
                                                buffer=0;
                                                delay(100);
                                                buffer=1;
                                                delay(100);
                                        }
                                }
       
                        }
                                 
哪位大侠帮小弟看一下,为啥火焰传感器和震动传感器无法检测到

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2014-3-24 14:28:14 | 显示全部楼层
if(fire==1){fire=0;
为什么要这样写呢?
最后貌似少了几个大括号,建议把该对齐的地方对齐。

出0入0汤圆

 楼主| 发表于 2014-3-24 17:31:40 | 显示全部楼层
lcw_swust 发表于 2014-3-24 14:28
if(fire==1){fire=0;
为什么要这样写呢?
最后貌似少了几个大括号,建议把该对齐的地方对齐。 ...

奥奥,我把IO口检测的那段程序放在一进while(1)时能都执行相应的程序,为啥一放在flag1或者flag2条件之下再进行扫描IO口就不执行了呢?

出0入0汤圆

发表于 2014-3-24 18:32:45 | 显示全部楼层
这个程序排序好乱      

出0入8汤圆

发表于 2014-3-24 19:00:12 | 显示全部楼层
想法跟踪下不就可以了了么?

出0入0汤圆

发表于 2014-3-24 21:18:05 | 显示全部楼层
贪狼lyb 发表于 2014-3-24 17:31
奥奥,我把IO口检测的那段程序放在一进while(1)时能都执行相应的程序,为啥一放在flag1或者flag2条件之下 ...

看来楼主不明白
if(fire==1){fire=0;
应当替换为
if(fire==0){

出0入0汤圆

发表于 2014-3-24 22:37:53 | 显示全部楼层
你这通过编译了吗?最好源程序贴出来吧

出0入0汤圆

发表于 2014-3-25 08:58:59 | 显示全部楼层
早上起来细看了一下一的程序,缺少两个“}”
这两个“}”分别是while(1)和main()的
如果你的while(1)的右打开括号实在  if(flag==2)     //户外模式
这肯定是你现在的现象因为while(1)不可能执行后面的代码

出0入0汤圆

 楼主| 发表于 2014-3-25 13:14:44 | 显示全部楼层
JohnsonTan 发表于 2014-3-25 08:58
早上起来细看了一下一的程序,缺少两个“}”
这两个“}”分别是while(1)和main()的
如果你的while(1)的右 ...

恩呢是的,谢谢指点

出0入0汤圆

发表于 2014-4-10 14:26:26 | 显示全部楼层
其实以后出现问题 ,可以用一个LED灯,做为程序的检测作用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 04:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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