vt100.c

来自「PIC 18F8680 CAN bus Demo」· C语言 代码 · 共 152 行

C
152
字号
/* Include Header files  */

#include 	"vt100.h"
#include 	<usart.h>
#include	<delays.h>	

void VT100_puthex(unsigned char HEX_Val)
{
	unsigned char Temp_HEX ;

	Temp_HEX = (HEX_Val >> 4) & 0x0f ;

	if ( Temp_HEX > 9 )Temp_HEX += 0x37 ;
    else Temp_HEX += 0x30 ;
	while (BusyUSART( ));
	WriteUSART(Temp_HEX) ;

	Temp_HEX = HEX_Val  & 0x0f ;
	if ( Temp_HEX > 9 )Temp_HEX += 0x37 ;
    else Temp_HEX += 0x30 ;
	while (BusyUSART( ));
	WriteUSART(Temp_HEX) ;
}


void InitializeVT100(void)
{
	VT100_Clear_Screen( );			// Clear screen of VT-100 Terminal
	VT100_Cursor_Position(0,0);		// Set Cursor at (0,0)
	
}

void VT100_ESC(void)	// Send "ESC [" to UART
{
	while (BusyUSART());
	WriteUSART('\x1b');
	while (BusyUSART());
	WriteUSART('[');
}

void VT100_Clear_Screen(void)  // Send "ESC [ 2 J " to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART('2');
	while (BusyUSART());
	WriteUSART('J'); 
	Delay10KTCYx(10);			// 1us * 10000 * 10 = 0.1S
}

void VT100_Clear_Right (void ) // Send "ESC [ K" to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART('K');
}

void VT100_Clear_Line (void) // Send "ESC [ 2 K" to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART('2');
	while (BusyUSART());
	WriteUSART('K');
}

void VT100_Cursor_Up (unsigned char Xn) // Send "ESC [ Pn A" to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART(Xn);
	while (BusyUSART());
	WriteUSART('A');
}
void VT100_Cursor_Down (unsigned char Xn) // Send "ESC [ Pn B" to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART(Xn);
	while (BusyUSART());
	WriteUSART('B');
}
void VT100_Cursor_Right (unsigned char Yn) // Send "ESC [ Pn C" to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART(Yn);
	while (BusyUSART());
	WriteUSART('C');
}
void VT100_Cursor_Left (unsigned char Yn) // Send "ESC [ Pn D" to UART
{
	VT100_ESC( ); 
	while (BusyUSART());
	WriteUSART(Yn);
	while (BusyUSART());
	WriteUSART('D');
}
/* set cursor position with Xn,Yn Setting */
void VT100_Cursor_Position (unsigned char Yn, unsigned char Xn) 
{
	unsigned char ASCII_Temp;
	
	VT100_ESC( ); 
	while (BusyUSART());
	
	ASCII_Temp=(Yn/10) + '0';
	WriteUSART(ASCII_Temp);
	while (BusyUSART());
	ASCII_Temp=(Yn%10) + '0';
	WriteUSART(ASCII_Temp);
	
	while (BusyUSART());
	WriteUSART(';');
	
	ASCII_Temp=(Xn/10) + '0';
	WriteUSART(ASCII_Temp);
	while (BusyUSART());
	ASCII_Temp=(Xn%10) + '0';
	WriteUSART(ASCII_Temp);
	
	while (BusyUSART());
	WriteUSART('H');
}

void VT100_Cursor_Index (void) // Send "ESC D" to UART
{
	while (BusyUSART());
	WriteUSART('\x1b');
	while (BusyUSART());
	WriteUSART('D');
}
void VT100_Cursor_R_Index (void) // Send "ESC M" to UART
{
	while (BusyUSART());
	WriteUSART('\x1b');
	while (BusyUSART());
	WriteUSART('M');
}
void VT100_Cursor_Home (void) // Send "/r" to UART
{
	while (BusyUSART());
	WriteUSART('\n');
}
void VT100_Cursor_N_Line (void) // Send "ESC E" to UART
{
	while (BusyUSART());
	WriteUSART('\x1b');
	while (BusyUSART());
	WriteUSART('E');
}

⌨️ 快捷键说明

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