51单片机串口通信模板_基于51单片机的电力载波通信开关电路的制作

本文介绍了如何使用51单片机实现电力载波通信开关电路,包括C语言和汇编语言程序源代码,用于接收和处理数据。通过按键和LED指示灯进行交互,详细讲解了串口通信方式2的配置和波特率设定,适用于初学者进行单片机开发实践。
摘要由CSDN通过智能技术生成

一、原理图:

2d89a5e968784b586b3953906c0be2c2.bmp

二、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值