PT2262及PT2272的单片机c语言编程.docVIP

  • 43
  • 0
  • 约2.64千字
  • 约 4页
  • 2017-05-18 发布于四川
  • 举报
PT2262及PT2272的单片机c语言编程

PT2262和PT2272的单片机c语言编程 2011-05-01 23:34 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int union?//定义共用体 { ?uint?? word; ?struct ??{ //结构bytes ??uchar byte_addr; ??uchar byte_data; ??} ?bytes; }a_0,a_1; ? //位定义 sbit W_REM =P3^3; //遥控接收输入脚 sbit LED0 =P1^0; sbit LED2 =P1^2; ? bit bdata recv_flg,? //接收正确位标志(1:正确 0:错误) ??? //因为当按住PT2262的按键不放的时候PT2262会把编码不断的送出 ??? //设置lianji_flg位用来检测按键有没有放开过如果没有放开则不再响应 lianji_flg; //按键没有放开过标志(1:连接 0:点击) uchar? // addr_a0, //接收的8位地址编码A0 // addr_a1, //接收的8位地址编码A1 // data_a0, //接收的4位数据编码A0 // data_a1, //接收的4位数据编码A1 addr_user_a0, //设定的8位地址密码A0 addr_user_a1; //设定的8位地址密码A1 void d50us(uchar n) //50uS延时 { ?? uchar data i,j; ?for(j=n;j;j--) //[1T+2T+(2i+2)T+1T+2T]*n+1T+2T+2T=(2i+8)*n+5T ?{ ??for(i=21;i;i--) ;//延时2T+2T*i=(2i+2)T ?} } /****************解码核心函数,好长长*******************/ PT2272_deco() //解码 { ?uchar i,cnt; ?if(recv_flg); ?else ?{?//清除上次解码内容 ?cnt =12;//接收12位编码- /*先找出接收码的开头即5ms左右的高电平,设置高电平时间为4~6ms检测和等待4ms的高电平*/ ?for(i=80;i;i--) ?{ //延时4mS ?if(!W_REM) ??i=80; ?else ??d50us(1); ?}? ?//等待在2ms内接收到的低电平 -------------------------------------------- ?for(i=40;i;i--)//延时4mS ?{ ??if(!W_REM) break; ??else d50us(1); ?} ?//4ms到6ms内接收到下降沿则跳去解码否则返回 ?//超出6ms接收错误返回 ?if(i) ?{ ?? recv_flg =0; //清按键没有放开过标志 ?? goto PT2272_deco_exit; //返回 ---- ?} ?//等待300us后采集接收信号 ?d50us(6); ?//采集接收信号并记录 ?a_0.word=a_1.word=0; ?for(i=0;i6;i++) ?{ ??if(W_REM) ??{ ?? a_0.word |=0x01; ??} ??a_0.word =1; ??while(!W_REM) ; ??while(W_REM) ;? ??d50us(6); ??if(W_REM) ??{ ?? a_1.word |=0x01; ??} ??a_1.word =1; ??//等待第二个码值的下降沿 ??while(!W_REM) ; //___wd___ ??while(W_REM) LED2=~LED2; ?}? ?a_0.word =4;/*把接收的编码左移4位将8位密码放在同一字节上*/ ?a_1.word =4; ? if(? (a_0.bytes.byte_addr==addr_user_a0) (a_1.bytes.byte_addr==addr_user_a1)? ) ?? { ??recv_flg =1; ??lianji_flg =1; ?? } ? else ???? { ??recv_flg =0; ??lianji_flg =0; ? } ?} ?PT2272_deco_exit: ?return; } /****************接收遥控码******************/ void remote_2272_deco() //(解码程序) { ?uint i;? ?for(i

文档评论(0)

1亿VIP精品文档

相关文档