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

📄 51通讯程序

📁 51单片机IO 口模拟232通讯程序 占用定时器0
💻
字号:
#include <reg51.h>
#include <string.h>
//sbit BT_SND =P0^0;
//sbit BT_REC =P1^1;
sbit	P_RXD       = P0^0;		//数据发送端
sbit	P_READY	    = P0^1;		//READY,准备好数据接收状态指示     "0",Ready Status;"1",Busy Status
sbit	P_RESET     = P0^2;		//语音板复位端
sbit	WATCH_DOG     = P2^6;
/**********************************************
IO 口模拟232通讯程序 占用定时器0 
**********************************************/
//#define MODE_QUICK
//#define F_TM TF0

#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;
unsigned char  flag;
void wait(void)
{
	int i;
	for(i=0;i<20;i++)
	{	;}
}

void IntTimer0() interrupt 1 using 0 
{
flag=1; 
}
//发送一个字符
void PSendChar(unsigned char t)
{	int i;
	unsigned char text,te;
	TL0=0XA0;
	ACC=t;
TIMER0_ENABLE;     P_RXD=0;   	flag=0; while(flag==0);     //启动位	
    	P_RXD=ACC0; flag=0;  	while(flag==0);//先送出低位
	P_RXD=ACC1;	flag=0;   	while(flag==0);
	P_RXD=ACC2; 	flag=0;  	while(flag==0);
	P_RXD=ACC3;	flag=0; 	while(flag==0);
    	P_RXD=ACC4;	flag=0;  	while(flag==0);
	P_RXD=ACC5; flag=0;  	while(flag==0);
	P_RXD=ACC6;	flag=0;   	while(flag==0);  	
	P_RXD=ACC7; flag=0; 	while(flag==0);
	P_RXD=1;  flag=0; 	 	while(flag==0);//停止位
//	P_RXD=1;  flag=0; 	 	while(flag==0);//停止位
 
	while(P_READY==1) 
	{
		wait();	//直到接收准备好
       WATCH_DOG=!WATCH_DOG;
    }	
	TIMER0_ENABLE;     P_RXD=0;   	flag=0; while(flag==0);
	text=t;
	for(i=0;i<8;i++)					//1个字节
		{
			te  = (text&0x01);				//取最低位
			if(te!=1) P_RXD=0;		//最低位不是1
			else        P_RXD=1;		//最低位是1				
			text=text>>1;				//最低位右移出,继续判断左边1位
			flag=0;      while(flag==0); 
		}	
//	while(P_READY==1) wait();
	P_RXD=1; 	flag=0;     while(flag==0); 	//结束位	


	TIMER0_DISABLE; //停止timer
	
	
}

⌨️ 快捷键说明

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