⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myserialport.c

📁 51单片机开发与应用技术详解(珍藏版)PPT及源码
💻 C
字号:
#include <reg52.h>
#include <stdio.h>

typedef unsigned char   BYTE;				//宏定义
typedef unsigned short   WORD;
typedef unsigned long   DWORD;

#define MSB(word)      (BYTE)(((WORD)(word) >> 8) & 0xff)
#define LSB(word)      (BYTE)((WORD)(word) & 0xff)

sbit P3_2=P3^2;							//计算机发送,单片机接收的标志
sbit P3_3=P3^3;							//单片机发送,计算机接收的标志
sbit P3_4=P3^4;							//HM628128最高位地址
sbit P3_6=P3^6;		 					//HM628128写使能
sbit P3_7=P3^7;							//HM628128读使能

bit AT89S52Send=0;							//单片机发送,计算机接收的软件标志位

void main(void)	  							//主程序
{
	unsigned int count;
	DWORD t;
	int i,j;
	count=0;								//初始化变量
	t=0;

	SCON=0x50;							//串口模式1,允许接收
	TMOD|=0x20;							//初始化T1为定时功能,模式2
	PCON|=0x80;							//设置SMOD=1
	TL1=0xF4;							//波特率4800bit/s,初值
	TH1=0xF4;
	IE|=0x90;								//中断
	TR1=1;								//启动定时器
	P3_6=1;								//写使能
	P3_7=1;			 					//读使能
	AT89S52Send=1;						//软件标志

	while(1)								//主循环
	{
		while(P3_2==0)					//计算机发送,单片机接收
		{
			if(RI)							//如果单片机接收到数据
			{
				P0=LSB(count);			//取低8位
				P2=MSB(count);			//取高8位
				if(t<=0xFFFF)
				{
					P3_4=0;				//最高位
				}
				else
				{
					P3_4=1;
				}
				count++;  				//计数递增
				t++;
				
				P3_6=0;					//HM628128写使能
				RI=0;					//RI清零
				P1=SBUF;				//将计算机发送的数据写入P1口
				P3_6=1;					//HM628128禁止写
			}

			AT89S52Send=1;				//软件标志位
		}
	
		while(P3_3==0 & AT89S52Send==1)  	//单片机发送,计算机接收
		{
			for (j=0;j<=0xFF;j++)				//读0000H~FFFFH
			{
				P3_4=0;
				for(i=0;i<=0xFF;i++)
				{
					P0=i;
					P2=j;
					P3_7=0;	   			//HM628128读使能
					SBUF=P1;	   		//将读到的数据写入SBUF,启动串行发送
					while(TI==0);  			//等待发送完毕
					TI=0;		   			//TI清零
					P3_7=1;				//HM628128禁止读
				}
				P3_7=1;
			}

			for (j=0;j<=0xFF;j++)	   			//读10000H~1FFFFH
			{
				P3_4=1;
				for(i=0;i<=0xFF;i++)
				{
					P0=i;
					P2=j;
					P3_7=0;		   		//HM628128读使能
					SBUF=P1;			//将读到的数据写入SBUF,启动串行发送
					while(TI==0);			//等待发送完毕
					TI=0;			 		//TI清零
					P3_7=1;		 		//HM628128禁止读
				}
				P3_7=1;
			}
			AT89S52Send=0;			 	//读标志清零
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -