基于51单片机的电力载波通信开关电路的制作

出处:电子市场时间:2016-08-27
一、原理图:

 二、C程序源代码

/*
此程序已经经本人亲自调试运行过,如有疑问,请联系
QQ:286288986
*/
#include   //预定义头文件
#define uchar unsigned char //宏定义
sbit keyin=P3^3; //按键定义
sbit LED=P3^5; //指示灯定义
uchar a; //接收数据记存器
void main() //主函数
{
 keyin=1; //按键口置1
 led=1;  //灭led灯
 TMOD=0x20; //选择顶时器/计数器1中的方式2
 SP=0x60;   // 设置堆榨地址
 TH1=0xfd; //波特率9600bit/s
 TL1=0xfd;
 SCON=0x50; //串口通信方式2,允许收发
 TR1=1;  //开启计数器
 while(1)   //循环
 {  
  if(keyin==0) //判断按键是否按下,是则按键处理
  {
   SBUF=0x00; //接收数据处理
   while(TI==0) ;  //发送完清除接收标志位
   TI=0;
  }
  if(RI==1)  //是否接收
  {
   RI=0;   //接收完接收标志位清零
   a=SBUF;   //读接收数据
   if(a==0)   //判断接收数据是否正确
   {
    if(led==1) //正确led灯取反
    led=0;
    else 
    led=1;
   }
  }
 }
}

三、汇编程序

/*

 此程序已经经本人亲自调试过,如果在学习当中有什么疑问,
 QQ:286288986
*/

 ORG 00H   
 JMP START    //开始
 ORG 10H    //开始地址
START:
 MOV SP,#60H    //设置堆榨地址
 MOV SCON,#50H //串口通信方式2,允许收发
 MOV  TMOD,#20H //选择顶时器/计数器1中的方式2
 MOV TH1,#0FDH //波特率9600bit/s
 MOV TL1,#0FDH
 SETB TR1  //开启计数器
 SETB P3.3  //开关输入口置1
 SETB P3.5  //LED显示口灭
SCAN:
 JB RI,UART   //判断是否接收
 JNB P3.3,KEYIN //判断按键是否按下,是则按键处理
 JMP SCAN  //不是按键扫描
KEYIN:
  MOV  A,#5AH  //发送数据装入A
 MOV SBUF,A  //发送数据
WAIT:    // 等待发送
 JBC TI,SCAN  //发送完了清除TI标志位
 JMP WAIT
UART:      //接收数据处理
  MOV A,SBUF 
 CJNE A,#5AH,ERROR  //简单的地址码设置为5AH,用户可随便定义
 CLR RI    //清除接收标志位
 CPL P3.5   //点亮灯
ERROR:
 JMP SCAN   //返回到扫描
END

上一篇:几种直流电机驱动电路图及设计思路
下一篇:一个经典输出短路保护电路

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关电路图