51单片机IO口模拟串口通讯的设计

发布时间:2023-10-12  

#include

sbit BT_SND =P1^0;


sbit BT_REC =P1^1;

IO 口模拟232通讯程序

使用两种方式的C程序 占用定时器0

#define MODE_QUICK

#define F_TM F0

#define TIMER0_ENABLE TL0=TH0; TR0=1;

#define TIMER0_DISABLE TR0=0;


sbit ACC0= ACC^0;

sbit ACC1= ACC^1;

sbit ACC2= ACC^2;

sbit ACC3= ACC^3;

sbit ACC4= ACC^4;

sbit ACC5= ACC^5;

sbit ACC6= ACC^6;

sbit ACC7= ACC^7;

void IntTimer0() interrupt 1

{

F_TM=1;

}

//发送一个字符

void PSendChar(unsigned char inch)

{

#ifdef MODE_QUICK

ACC=inch;

F_TM=0;

BT_SND=0; //start bit

TIMER0_ENABLE; //启动

while(!F_TM);

BT_SND=ACC0; //先送出低位

F_TM=0;

while(!F_TM);

BT_SND=ACC1;

F_TM=0;

while(!F_TM);

BT_SND=ACC2;

F_TM=0;

while(!F_TM);

BT_SND=ACC3;

F_TM=0;

while(!F_TM);

BT_SND=ACC4;

F_TM=0;

while(!F_TM);

BT_SND=ACC5;

F_TM=0;

while(!F_TM);

BT_SND=ACC6;

F_TM=0;

while(!F_TM);

BT_SND=ACC7;

F_TM=0;

while(!F_TM);

BT_SND=1;

F_TM=0;

while(!F_TM);

TIMER0_DISABLE; //停止timer

#else

unsigned char ii;

ii=0;

F_TM=0;

BT_SND=0; //start bit

TIMER0_ENABLE; //启动

while(!F_TM);

while(ii《8)

{

if(inch&1)

{

BT_SND=1;

}

else

{

BT_SND=0;

}

F_TM=0;

while(!F_TM);

ii++;

inch》》=1;

}

BT_SND=1;

F_TM=0;

while(!F_TM);

#endif

TIMER0_DISABLE; //停止timer

}

//接收一个字符

unsigned char PGetChar()

{

#ifdef MODE_QUICK

TIMER0_ENABLE;

F_TM=0;

while(!F_TM); //等过起始位

ACC0=BT_REC;

TL0=TH0;

F_TM=0;

while(!F_TM);

ACC1=BT_REC;

F_TM=0;

while(!F_TM);

ACC2=BT_REC;

F_TM=0;

while(!F_TM);

ACC3=BT_REC;

F_TM=0;

while(!F_TM);

ACC4=BT_REC;

F_TM=0;

while(!F_TM);

ACC5=BT_REC;

F_TM=0;

while(!F_TM);

ACC6=BT_REC;

F_TM=0;

while(!F_TM);

ACC7=BT_REC;

F_TM=0;

while(!F_TM)

{

if(BT_REC)

{

break;

}

}

TIMER0_DISABLE; //停止timer

return ACC;

#else

unsigned char rch,ii;

TIMER0_ENABLE;

F_TM=0;

ii=0;

rch=0;

while(!F_TM); //等过起始位

while(ii《8)

{

rch》》=1;

if(BT_REC)

{

rch|=0x80;

}

ii++;

F_TM=0;

while(!F_TM);

}

F_TM=0;

while(!F_TM)

{

if(BT_REC)

{

break;

}

}

TIMER0_DISABLE; //停止timer

return rch;

#endif

}

//检查是不是有起始位

bit StartBitOn()

{

return (BT_REC==0);

}

void main()

{

unsigned char gch;

TMOD=0x22; /*定时器1为工作模式2(8位自动重装),0为模式2(8位

自动重装) */

PCON=00;

TR0=0; //在发送或接收才开始使用

TF0=0;

TH0=(256-96); //9600bps 就是 1000000/9600=104.167微秒 执行的

timer是

//

104.167*11.0592/12= 96

TL0=TH0;

ET0=1;

EA=1;

PSendChar(0x55);

PSendChar(0xaa);

PSendChar(0x00);

PSendChar(0xff);

while(1)

{

if(StartBitOn())

{

gch=PGetChar();

PSendChar(gch);

}

}

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    构建MINI2440开发板Ubuntu开发环境;1 引言   做嵌入式开发,调试开发板最常使用的工具就是串口和网口,本文主要介绍在Ubuntu系统如何安装和设置串口软件(minicom和kermit......
    所示。 4 串口转网口模块的软件实现    本串口转网口模块的软件需要建立两个任务,一是初始化,二是任务调度。其中初始化包括时钟初始化,协议栈初始化,IP地址初始化,网关地址初始化,子网......
    一些汽车爱好者和改装爱好者来说,他们可能需要对车辆进行改装或定制。CAN转串口转换器可以用于连接和控制各种改装设备或系统,从而实现个性化的车辆定制。 ......
    系统串口使用的是USART1在PA2/PA3,由于GD32F310G-START并未提供串口转USB电路,所以需要使用杜邦线外接一个串口转USB的模块与电脑串口软件进行通信; 进入bsp文件......
    别人使用的开发板与PC的USB转串口,oh mygod!!还是不行。 心灰意冷,心灰意冷。没有什么东西可以有问题的了。是不是串口软件有问题,手贱点换个串口试试,-----》串口数据出来了!!! 神经病,怎么......
    通信接口。TTL串口通常用于连接微控制器、单片机和其他低电平设备。 这些USB到串口转换方案通常提供驱动程序或虚拟串口软件,以便在计算机上建立串口通信连接。用户可以通过设置串口参数(如波特率、数据位、停止......
    基于STM32F407的USB转串口功能实现;之前的文章中介绍过STM32的USB接口虚拟串口的功能。本篇文章在此基础上,以STM32F407为例,介绍USB转串口功能的实现。 要实现USB转串口......
    存储器是一块独立的rom,用来存储启动代码,实现通过串口、usb、网口等对单片机的烧写。 ......
    进行远程收发。发送的命令,经内部局域网传送到远端的网口转串口设备。中层的集控器主要负责对命令识别并实现该命令的相关操作,如全抄表、单用户抄表和定时抄表命令。下达的命令经RS485总线......
    数据个数, 最后由(5)根据以太网帧头携带的上层协议类型判断是交给IP协议还是ARP协议处理。 移植完毕, 进行数据收发实验验证。使用TCP传输协议, 由网口虚拟串口软件VSPM通过串口......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>