使用单片机测试PC或ARM的串口校验方式

本文介绍如何在普通的51单片机中下载程序,并详细解释了串口初始化、主函数、串口中断服务子程序的工作原理。通过设置不同的校验位,上位机能够判断是否进行奇偶校验或mark/space校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在普通的51单片机中下载以下程序:

#include <reg52.h>
sbit LED=P3^7;
//////////////////////串口初始化////////////////////////////////////////
void UartInit()
{
  
   TMOD=0X21; //定时器T1设为方式2
 
   TH1= 0xfd; //波特率设为9600
   TL1= 0xfd;  //
 
   SCON=0xd0; //方式3允许接收
   SM2 = 1;
   TR1=1;
   EA=1;
   ES=1;
 
}
/////////////////////////主函数///////////////////////////////////
void main()
{
	UartInit();	
	while(1)
	{}
}
////////////////////串口中断服务子程序////////////////////////
void uart() interrupt 4
{
	RI=0;
	LED=~LED;
}
/////////////////////////////end/////////////////////////////////////////////

这个程序大概介绍一下:SM2=1代表,上位机发的是 校验位 为1才会进中断,

这有两种情况

1,上位机 无奇偶校验 位 能进中断 

2,上位机 有 奇偶校验位 则 校验位为1是才能进中断即LED会闪烁!

上位机设置为奇校验时:发送 0x01 0x02能进入中断(校验位为1),发送0x03时不能进入中断(校验位为0),这样可以判断是否是 奇校验

同理可以判断偶校验!

上位机设置为mark校验时:上位机无论发 0x01,0x02,0x03都进入中断,LEC闪烁----这可以验证 是否为 mark校验

上位机设置为space校验时:上位机无论发0x01,0x02,0x03都不能进入中断,即LED不变化,----这可以验证是否为 space校验

2012年10月18日21:58:18

2012年11月4日16:16:39:不确信的请看参考文档:

Linux统》  http://wenku.baidu.com/view/35e48a97dd88d0d233d46a16.html

我是先接触单片机再接触Linux。。。并为之实验过。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值