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

📄 uart0.c

📁 vC++读写HID_USB设备,包含hid_usb的固件程序和上位机程序
💻 C
字号:
//UART0.c
//uart0 相关程序

#include "mytype.h"
#include "config.h"
#include<ds89c4xx.h>

//extern uint8 xdata *pt;
//uint8 sending;
uint8 code HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

void UartInit0(void)    //8位数据位,1位停止位,无校验,波特率uartbuadrate
{
	//EA = 0;
	TMOD &= 0x0F;
 	TMOD |= 0x20;    //定时器1工作在模式2
	SCON0 = 0x50;	//串口工作在方式1
	PCON |= 0x80;	//smod = 1;
	TH1 = 256 - ((fosc/12)/16)/uart0baudrate;	//根据波特率计算定时器初值
	TL1 = 256 - ((fosc/12)/16)/uart0baudrate;
	ES0=0;         //串行中断允许=0
 	TR1=1;        //启动定时器1
	TI_0 = 0;	//
	RI_0 = 0;
 	REN_0=1;        //允许接收 
	//IP1 = 0x50;	
	//IP0 = 0x40;	//PORT1优先级3,PORT0优先级2
 	//EA=1;         //允许中断   
}

void PutChar0(uint8 send)	//发送一个字节的数据
{
	SBUF0 = send;
	while(0 == TI_0)	;
	TI_0 = 0;	//TI_0 = 1,发送完成,再清0
}

void PutString0(uint8 *psend, uint8 idata length)	//发送字符串,以字符串长度或'\0'结束
{
	while(length--)
	{
		PutChar0(*psend);
		psend++;
		if(*psend == '\0')
			return;
	}
}

void PutUint320(uint32 idata send,uint8 idata shuzhi)	//将32位的无符号数通过UART发送
{
	uint8 idata buffer[10];
	int8 idata i;
	for(i=9;i>=0;i--)
	{
		buffer[i] = send%shuzhi + '0';	//转换成ASCII码
		send = send/shuzhi;
	}
	for(i=0;i<=9;i++)
	{
		if(buffer[i] != '0')
			break;
	}
	if(10 == i)
		i = 9;		//如果传入为0,则至少显示一个0
	for( ;i<=9;i++)
	{
		PutChar0(buffer[i]);
	}
}

void PutHex0(uint8 idata send)	//将8位无符号数转换成16进制后发送
{
	PutChar0('0');
	PutChar0('x');
	PutChar0(HexTable[(send >> 4)]);
	PutChar0(HexTable[(send & 0x0f)]);
	PutChar0(' ');
}

/*void PutHex16bit0(uint16 send)
{
	PutChar0('0');
	PutChar0('x');
	PutChar0(HexTable[(send >> 12)]);
	PutChar0(HexTable[((send >> 8) & 0x0f)]);
	PutChar0(HexTable[((uint8)send) >> 4]);
	PutChar0(HexTable[(uint8)send & 0x0f]);
	PutChar0(' ');
} */

void NextLine0(void)	//换行
{
	PutChar0(0x0d);
	PutChar0(0x0a);
}

void UART0_ISR(void) interrupt 4 		//uart 中断程序
{
	//uint8 temp;
	if(RI_0 == 1)    //收到数据
  	{
		RI_0 = 0;                     //清中断请求
		//temp = SBUF0;
  	}
 	else  //发送完一字节数据
  	{
   		TI_0 = 0;
   		//sending = 0;               //清发送标志
  	}
}

⌨️ 快捷键说明

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