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

📄 uart.txt

📁 这是一个串行通信接口的实例就是在单片机时钟频率在12MHz 波特率 9600bps 的通信方式下实现软件UART的发送程序。
💻 TXT
字号:
串行通信接口

这是一个串行通信接口的实例


就是在单片机时钟频率在12MHz 波特率 9600bps 的通信方式下实现软件UART的发送程序。

#include <reg51.h>
#include<stdio.h>
sbit P10 = 0x90;
void uart_transmit(char ByteToBeSend);
xdata unsigned char TxByte=0;/*要发送的字节数据*/
unsigned char nTxIndex=0;/*发送单个字符的位指针*/
unsigned char nTxBit=0;/* 单个字符数据位*/
bit UartBusy=0;
main()
{ 	
	TMOD=0x01;	/* 定时器0工作在方式1 */
	EA=1;		/* 全局中断允许 */
	uart_transmit(0xAA);
	while(1)
if(UartBusy==0)	uart_transmit(0xAA);
}

void Timer0_Overflow() interrupt 1 using 0
{		if(nTxIndex<8)
			{nTxBit=(TxByte>>nTxIndex)&0x01;
	 		P10=nTxBit;/* 产生数据位 */
			}
	else if(nTxIndex==8)
			P10=1;/* 产生停止位 */ 
		TH0=0xFF;	/* 写入计数初值到TH0 */
		TL0=0x97;	/* 写入计数初值到TL0 */
					/* 1T后溢出 */	
		TF0=0;		/* 定时器0中断标志位清0 */
if(nTxIndex==9)
	{ET0=0;		/*关闭定时器0中断*/
	UartBusy=0;	/*Uart发送完毕*/
	nTxIndex=0;	/* 接收下一个数据的D0位 */
	}
nTxIndex++;

}
void uart_transmit(char ByteToBeSend)
{  	TxByte=ByteToBeSend;
 	TH0=0xFF;	
	TL0=0x97;	/* 写入计数初值到TL0 */
	TR0=1;		/* 定时器0准备开始 */
	P10=0;		/* 产生起始位*/
	TF0=0;		/* 定时器0中断标志位清0 */
	ET0=1;		/* 定时器0中断允许*/
	UartBusy=1;
}

⌨️ 快捷键说明

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