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

📄 m21_uart.txt

📁 CoreRiver MCU C语言程序集! 包括:ADC/POWER/PWM/UART/TIME0
💻 TXT
字号:
// File : m21_uart.c 

#include <gc89c520_tq32i.h>

unsigned char	received_data;
unsigned char transmit_ready;
unsigned char response;

void initialize();

void putchar(char ch)
{
	while(transmit_ready == 0);
	transmit_ready = 0;
	SBUF = ch;
}

void delay()
{
	char temp;
	for(temp=0;temp<20;temp++);	
}

void uart_int(void) interrupt SIO_VECTOR
{
	if (TI) 
	{				
		// Transmit Mode
		TI = 0;
		transmit_ready = 1;
	} 
	else if (RI) 
	{		
		// Receive Mode
		received_data = SBUF;
		RI = 0;
		
		if(1) //received_data=='T')
		{
			response = 1;
		}
		else
		{
			SBUF = received_data; // Resend to Serial Port
			while(!TI);
			delay();
			TI=0;
		}
	}
}

void main()
{
	initialize();

	putchar('T');
		
	while(1)
	{
		if(response == 1)
		{
			response = 0;
		}
	};
}

void initialize() 
{
	while (!(STATUS & 0x10)); 	// XTUP Check (Crystal AMP)	
	EXIF = EXIF | XTRG_;		// System Clock is Crystal Osc. (default =0, Ring Osc.)

	response = 0;
	transmit_ready = 1;

	ALTSEL |= 0x04;

	// *Fosc = 22.1284MHz 57600 bps	
	
	TMOD  = 0x20; 	// Timer 1 : Mode 2<Auto Reload>
	
	// UART Mode 1 (8-bit UART)
	
	PCON |= 0x80;
	TH1 = 0xFE;
		
	REN	  = 1;		// Reception Enable 
	TF1   = 0;		  
	ES    = 1;		// UART Interrupt (Commnucation) Enable	
	EA =  1;		// All Interrupts Enable
	TR1 = 1;	// Timer1 Start (Enable)
} // End: void initialize(void)


⌨️ 快捷键说明

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