• 注册
当前位置:1313e > 默认分类 >正文

三菱无机房通讯解析

#include "elenessamessage.h"u8 ioio;
/******************** IO配置函数 **************************/     //-------
void    tongxunGPIO_config(void)                         // ------//改一下输出模式,复位值改装
{
/****模块下面做完注释掉*******——————————————————————————————————————————————————————————————————————————————————————————————*P2M0 = 0;         //设置准双向口P2M1 = 0;       **/P5M0 = 0;         //设置准双向口       //
    P5M1 = 0;
/****模块下面做完注释掉*******——————————————————————————————————————————————————————————————————————————————————————————————**P1M0 = 0xff;    //设置led推挽输出模式(调试专用)  //模块调用不需要P1M1 = 0;     **/TXGZ1=0;TXGZ2=0;}
//***************100us软定时----------------------------//大概采样中间值
//版本2017年10月31日 15:14:08void Delay100us()        //@11.0592MHz
{unsigned char i, j;_nop_();_nop_();i = 2;j = 15;do{while (--j);} while (--i);
}//***************200us软定时----------------------------
//版本2017年10月31日 15:14:08
void Delay200us()        //@11.0592MHz   软件定时器
{unsigned char i, j;i = 3;j = 35;do{while (--j);} while (--i);
}/*******这个直接累加多少个200us
//版本2017年10月31日 15:14:08void  delay_200us(unsigned char us)
{     unsigned char k;
for(k=0;k*//******************** 判断是否有数据变化否者将停止运行寻找id地址,将亮通讯故障灯 **************************/
//版本2017年10月31日
u8 tongxunguzhang(){u8  i;i=0;while(KEYGAODI)                 //如果电平下降跳出{i++; Delay200us();if(i==250)return 0;} //如果电平一直不下降或者上升,将返回故障i=0;while(!KEYGAODI){i++; Delay200us();if(i==12)return 0;} //如果电平一直不下降或者上升,将返回故障i=0;while(KEYGAODI){i++; Delay200us();if(i==12)return 0;} //如果电平一直不下降或者上升,将返回故障return 1;}/******************** 寻找数据头下降沿下降函数 **************************/
//版本2017年10月31日
//
//     寻找5ms          10次是2ms  15次 刚好3ms  就是连续采集到15次,表示高电平
//--------______----

bit xunzhi()
{unsigned char i=0;unsigned char j=0;//TXGZ3=1;           //避免陷入死循环,如果不陷入死循环,将很快灭掉do{if(KEYGAODI==1)i++;else{i=0;j++;if(j>254)return 0;}         //如果一直低电平故障,将跳出0值
 Delay200us();} while (i<15);return 1;                             //检测到大于3ms的高电平值1
}//**********************读取id值****************************
//版本2017年10月31日   基本没变
void duqu()
{    ioio=0;while(KEYGAODI);//等待电平下降或者上  _nop_();
 Delay100us(); Delay200us();
if(!KEYGAODI)      //第一位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第2位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第3位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第4位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第5位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第6位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第7位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();
if(!KEYGAODI)      //第8位  因为三菱编码加密缘故,从低往高读取,需右移,{ioio>>=1;ioio=(ioio|0x80);}elseioio>>=1;Delay200us();    }u8 panduan()
{  u8 k=0;     u8 kk=0;if(tongxunguzhang())  //判断是否通讯正常//if(1)  //判断是否通讯正常
  { while(k!=40)           //找到f7  f7  f8   第4个才为楼层数据   
   {if(xunzhi())//需找5ms空隙 { duqu();        //读取ip值if(ioio==0xf7)  //是否这个值,如果是,找到该值_ _ _ -_ _ _ _11101111(oxf7)   //注意这个值以  测量为准
     {Delay200us();duqu();if(ioio==0xf7)    //在此寻找f7
        {Delay200us();duqu();if(ioio==0xf8)    //在此寻找f8
         {Delay200us();duqu();kk=ioio;//退出循环return kk;}}}}k++;}{TXGZ2=1;/****模块下面做完注释掉*******——————————————————————————————————————————————————————————————————————————————————————————————**P1=0x83;     **/return 0x30;}    //20次  找不到数据值1     ————————————————————一定要在外面做数据灯,万一陷入死循环
}else{TXGZ1=1;/****模块下面做完注释掉*******——————————————————————————————————————————————————————————————————————————————————————————————**P1=0xff;       **/return 0x2f;}//通讯故障亮起 //可以设置
}
无机房
#ifndef __ELENESSAMESSAGE_H
//        elenessamessage.h           
#define    __ELENESSAMESSAGE_H
#include    "STC15.H"
#include 
#include    "config.h"
//typedef     unsigned char    u8;
//typedef     unsigned int    u16;
//typedef     unsigned long    u32;//下面是所需要的io口
#define KEYGAODI P53       ////接受信号io
#define TXGZ1 P50           //直接没检测到信号 亮起
#define TXGZ2 P51          //20次没记录亮起
//#define TXGZ3 P52          //死循环亮起
void    tongxunGPIO_config(void);//初始化io模块        //占用了p5, 模块调试玩注释掉p2(复位)  p1(led)
u8 panduan();  //直接读取值出来, //30(20次  找不到数据值)....2f是通讯直接有问题故障吗#endif
/*****u8 kkk[64]={0x40,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,//   100x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,//200x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40,//300x40,0x3f,0x86,0xdb, 0x40,0x40,0x40,0x40, 0x40,0x40,0x40,0x40, 0x40,0x40,0x3f,0x86};
****/
无机房.h

分析了数据花了三天,有些数据不想分析了,只是分析我想要的楼显数据,这里只是做显示作用。

不提供远程控制作用,也不会做,也不想做,做了等于侵权。

本人学习用的,难免不足,不提供技术支援。

禁止商业用途,仅限学习交流使用。

转载于:https://www.cnblogs.com/chenfeiguoguo/p/9030866.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录