Copa Hetai-Comunicación en serie del Proyecto 5 de Hetai MCU

Copa Hetai-Comunicación en serie del Proyecto 5 de Hetai MCU


Prefacio

Lo que se actualiza en este capítulo trata sobre la comunicación en serie de Hetai MCU Se utilizan el chip y la placa del HT66F2390, y el programa de descarga e-link se utiliza para la depuración. El programa se modifica y depura con la ayuda de las rutinas usat oficiales de Hetai. Se espera que el efecto del programa envíe "Depuración del experimento de comunicación en serie MFT Hetai MCU HT66F2390 de la Universidad de Tecnología de Guangdong" al asistente de depuración en serie en un tiempo fijo de 1 segundo. El asistente de depuración en serie envía los caracteres correspondientes y el El microcontrolador devuelve los caracteres correspondientes al asistente de depuración. Más uno envía 0x01 para encender LED1.


Sugerencia: El siguiente es el contenido de este artículo, los siguientes casos son para referencia

1. ¿Usas análisis de rutina?

Primero echemos un vistazo al programa, no hay nada que decir antes, es decir, la definición y declaración del recuento de datos, longitud de los datos, etc., centrándonos en la parte de compilación condicional a continuación, que es también la parte que marqué.
Inserte la descripción de la imagen aquí
Aquí se usa la compilación condicional, y las funciones son las siguientes
# si el segmento de programa de expresión constante 1
#else segmento de programa 2
#endif
Su función es, si el valor de la expresión constante es verdadero (no 0), entonces el segmento de programa 1 será compilado; de lo contrario, compile el segmento de programa 2. Por lo tanto, el programa puede realizar diferentes funciones en diferentes condiciones.
BRGH_0 en la rutina se ha definido macro como 1 en uart.h. Entonces aquí está el programa _u0cr2 = 0b11101100;
Inserte la descripción de la imagen aquí
mire el registro U0CR2 nuevamente, su función principal es controlar la habilitación o deshabilitación del transmisor, receptor y varias fuentes de interrupción UART0. Se explica en detalle aquí. Quienes estén interesados ​​pueden consultar las funciones correspondientes que han elegido en el manual técnico para que puedan tener una comprensión más profunda.
Inserte la descripción de la imagen aquí
Para la función de enviar un byte, si desea enviar una matriz, puede definir una matriz de cadenas y luego usar el bucle for para enviarla.

void UART_Send_Byte(unsigned char Data_byte)
{
    
    	
	_ur0e=0;
	while(_txif0==0);
	_txr_rxr0=Data_byte;
	_ur0e=1;
}

Recibir función de datos

//	Receive serial data   接收一系列数据   
//  这里是一个中断函数
void __attribute((interrupt(0x3c))) UART_Receive(void)
{
    
    
	GCC_NOP();
	if(_ur0f==1)
	{
    
    
		if(_perr0==1||_oerr0==1||_nf0==1||_ferr0==1)
		{
    
    
			asm("lmov a,___txr_rxr0");	//read RXR0 register to clear RXIF0 bit
		}else
		{
    
    
			Rcv_Time_Counter=0;
			while(_rxif0==0);
			if(Data_Counter<16)
			{
    
    
				Rcv_Data[Data_Counter] = _txr_rxr0;	
				Data_Counter++;
			}else
			{
    
    
				Data_Counter=0;
				Rcv_Data[Data_Counter] = _txr_rxr0;	
			}
			
		}
		_ur0f=0;
	}
}

Dos, escribe el programa

Función principal

#include "HT66F2390.h"
#include "delay.h"
#include "uart.h"
#include "LED.h"
#include "string.h"   //调用strlen函数要引入字符串的头文件

void main()
{
    
    
	int t=0,i=0;    //用于计时
	char date[]="广东工业大学MFT团队合泰单片机串口实验";
	LED_Init();  //LED初始化
	UART_SET();   //串口函数初始化
	while(1)
	{
    
    
		GCC_CLRWDT();   //清除看门狗
		delay_ms(10);
		t++;
		if(RECEIVE_Finish_Flag==1)
		{
    
    
			if(Rcv_Data[0]==0x01)
			{
    
    
				LED1 =!LED1;
			}
			for(i=0;i<RCV_Data_Length;i++)UART_Send_Byte(Rcv_Data[i]);
			RECEIVE_Finish_Flag=0;   //清除接收标志位		
		}
		if(t==100)
		{
    
    
			for(i=0;i<strlen(date);i++)
			{
    
    
				UART_Send_Byte(date[i]);
			}
			LED2 =!LED2;    //LED2取反用来显示工作是否正常
			t=0;
		}
		GCC_CLRWDT();   //清除看门狗
	}

}

para resumir

Este artículo de comunicación serial está aquí por el momento, debido a que no ha sido descargado para depurarlo, por lo que puede haber errores, los cuales serán modificados con el tiempo. El siguiente artículo es la sección del temporizador.
El archivo del proyecto se cargará aquí después de descargarlo y depurarlo.

Supongo que te gusta

Origin blog.csdn.net/newpeopie/article/details/114382794
Recomendado
Clasificación