工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->电源电路图->其他电源电路图->基于51单片机的电力载波通信开关电路的制作

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

作者:dolphin时间:2017-02-09

一、原理图:

二、C程序源代码

/*
此程序已经经本人亲自调试运行过,如有疑问,请联系
QQ:286288986
*/
#include //预定义头文件
#define uchar unsigned char//宏定义
sbit keyin=P3^3; //按键定义
sbitLED=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



评论

技术专区