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 + -
显示快捷键?