/*********************************************************IO口模拟232测试程序,仿单片机KeilCx51应用开发技术中的程序主要的功能是在利用串口调试工具发送一个8bit的数据,而后单片机接收后把这个数据发送给模拟串口*********************************************************/#include""sbitTx_Pin=P3^7;//发送端口sbitRx_Pin=P1^0;//接收端口sbitBaud0=P1^6;sbitBaud1=P1^7;//波特率选择bitFlag=0;//若标志位为1,则表示串口已经过了一位的时间#defineuncharunsignedchar#defineunintunsignedintuncharHighTime;uncharLowTime;/********************************************************/bitCheckAvailStartBit()//检测开始位{return(Rx_Pin==0);//若为0,则返回1,即有数据传送//若为1,则返回0,即没有接收到数据}/********************************************************/voidTimer0()interrupt1//定时器中断处理{Flag=1;TL0=LowTime;TH0=HighTime;}/********************************************************/uncharReceiveByte()//接收字节{uncharData;uninti;Data=0x00;TR0=1;//开始定时while(Flag==0);Flag=0;//开始位不采样for(i=0;i<=7;i++){Data>>=1;//移位处理if(Rx_Pin==1)//为1的话,则进行处理{Data|=0x80;}while(Flag==0);//若Flag为0,则时间还未到,等待//若Flag为1,则一位的时间已经到,准备接收数据Flag=0;}while(Flag==0);//对第9位停止位的处理Flag=0;while(Flag==0){if(Rx_Pin)//检测到停止位,退出{break;}}TR0=0;//关闭定时器return(Data);//返回数据}/********************************************************/voidSendByte(uncharData){uninti;TR0=1;//开始定时Tx_Pin=0;//起始位,0while(Flag==0);Flag=0;for(i=0;i<=7;i++){if(Data&0x01){Tx_Pin=1;}else{Tx_Pin=0;}Data>>=1;while(Flag==0);Flag=0;}Tx_Pin=1;//结束位TR0=0;//关闭定时器}/********************************************************/
IO口模拟232测试程序 来自淘豆网m.daumloan.com转载请标明出处.