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

📄 io_uart.c

📁 一般單晶片 GPIO 模擬MCU硬體uart通訊介面,增加MCU的功能應用!
💻 C
字号:

void Init_IO_Uart(void);
void IO_PutChar(char tmpchar);
void IO_PutString(const char *Name2);
__interrupt void ReloadTimer1(void);


#define IO_SOT		PDR1_P17
#define IO_SOT_D	DDR1_D17

typedef   unsigned char BYTE ;
typedef   unsigned int  WORD ;
typedef   unsigned long	DOUBLEWORD;
typedef   long     	LONGWORD  ;

typedef union{
    BYTE byte;
    struct{ 	BYTE B0:1; BYTE B1:1; BYTE B2:1; BYTE B3:1; 
    			BYTE B4:1; BYTE B5:1; BYTE B6:1; BYTE B7:1; }bit;
}TYPE_FLAG,TYPE_BIT8;
 
unsigned char	UartFlag;
TYPE_BIT8	UartChar;


void Init_IO_Uart(void)
{
	IO_SOT_D = 1;	IO_SOT = 1;  
	UartFlag = 10;
    // initialise reload timer 1 
    TMRLR1 = 52;		// set reload value 	,	BPS 9600 = 104uS = 52*2uS
    TMCSR1 = 0x81B;     	// prescaler 2us at 16 MHz 
}

/* Reload Timer 1 */
__interrupt void ReloadTimer1(void)
{
//	UartFlag 0 1 2 3 4 5 6 7 8 9 10	
//	IO_SOT----\_/xxxxxxxxxxxxxxx-----
//	UartChar bit 0 1 2 3 4 5 6 7
//
	switch(UartFlag)	{
		case 10:	IO_SOT = 1;			break;
		case 0:		IO_SOT = 1;	UartFlag++;	break;
		case 1:		IO_SOT = 0;	UartFlag++;	break;
		case 2: case 3: case 4: case 5:
		case 6: case 7: case 8: case 9:
			if(UartChar.bit.B0)	IO_SOT = 1;
			else			IO_SOT = 0;
			UartChar.byte >>=1;	UartFlag++;
			break;
		default:	IO_SOT = 1;	UartFlag=10;break;
	}
	TMCSR1_UF = 0;
}

void IO_PutChar(char tmpchar)
{
	while(UartFlag!=10);
	UartChar.byte = tmpchar;	UartFlag = 0;
}

void IO_PutString(const char *Name2)	/* Puts a String to UART */
{
	char c;
	int i,len;
 
	len = strlen(Name2);	
	for (i=0; i<len; i++) 	{	c=(Name2[i]);	IO_PutChar(c);	}
}

⌨️ 快捷键说明

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