📄 ha_print.c
字号:
/*
********************************************************************************************
*file/function name: FILE NAME HA_PRINT.C
*function parameters type and requirement:NO
*return type:NO
*description:PROGRAM THE FUNCTION: ER HA_PRINT( U32 ADD, U32 ERROR_CODE ),THE FUNCTION USED TO VERITIFY THE HARDWARE
*modify history:CREATED BY LC,2003-4-2 15:17
*misc
********************************************************************************************
*/
#include "HA_typedef.h"
#include "hardware_reg.h"
#include "hardware.h"
/*
********************************************************************************************
*file /functionname:FUNCTION NAME ER HA_PRINT( U32 ADD, U32 ERROR_CODE )
*function parameters type and requirement:
*return type:
*description:
*modify history: LC CREATED 2003-4-2 15:43
*misc
********************************************************************************************
*/
extern ER print( U32 addr, U32 errsymb )
{
#ifndef RELEASE_CODE
if( ( addr < (U32)HA_ERRORBASE ) || (addr > (U32)HA_ERRORTOP) )
{
return (ER)E_PAR;
}
else;
#endif
*(RP)addr = errsymb;
return E_OK;
}
/*
*this function is esed to print the data(ascii code) to the UART
*/
extern ER print_num( U32 addr, U32 num )
{
U32 D31_28, D27_24, D23_20, D19_16, D15_12, D11_8,D7_4, D3_0;
U32 i;
U32 mask;
mask = *(RP)(INTC_IMSK); //remain mask reg
*(RP)(INTC_IMSK)=-1UL; //mask all int
for(i=0; i<10000; i++);
//write_reg(UART1_THR, 0x45); //SEND E
//write_reg(UART1_THR, 0x52); //SEND R
write_reg(UART1_THR, 78); //SEND n
write_reg(UART1_THR, 117); //SEND u
write_reg(UART1_THR, 109); //SEND m
write_reg(UART1_THR, 98); //SEND b
write_reg(UART1_THR, 101); //SEND e
write_reg(UART1_THR, 114); //SEND r
write_reg(UART1_THR, 0x3A); //SEND :
for(i=0; i<10000; i++);
D31_28 = (addr & 0XF0000000 ) >> 28; //8
D27_24 = (addr & 0X0F000000 ) >> 24; //7
D23_20 = (addr & 0X00F00000 ) >> 20; //6
D19_16 = (addr & 0X000F0000 ) >> 16; //5
D15_12 = (addr & 0X0000F000 ) >> 12; //4
D11_8 = (addr & 0X00000F00 ) >> 8;
D7_4 = (addr & 0X000000F0) >> 4;
D3_0 = ( addr & 0X0000000F ) ;
write_reg(UART1_THR, 0x30);
write_reg(UART1_THR, 0x58); //send 0x
/////////////////////////////////////////////////8
if( D31_28 <= 9 ) //IS NUMBER
{
D31_28= D31_28 + 0X30;
}
else //IS ALPHA
{
D31_28 = D31_28 + 0X37;
}
write_reg(UART1_THR, D31_28);
//////////////////////////////////////////////7
if( D27_24 <= 9 ) //IS NUMBER
{
D27_24= D27_24 + 0X30;
}
else //IS ALPHA
{
D27_24 = D27_24 + 0X37;
}
write_reg(UART1_THR, D27_24);
///////////////////////////////////////////////6
if( D23_20 <= 9 ) //IS NUMBER
{
D23_20= D23_20 + 0X30;
}
else //IS ALPHA
{
D23_20 = D23_20 + 0X37;
}
write_reg(UART1_THR, D23_20);
///////////////////////////////////////////////5
if( D19_16 <= 9 ) //IS NUMBER
{
D19_16= D19_16 + 0X30;
}
else //IS ALPHA
{
D19_16 = D19_16 + 0X37;
}
write_reg(UART1_THR, D19_16);
/////////////////////////////////////////////
write_reg(UART1_THR, 0x5F);
/////////////////////////////////////////4
if( D15_12 <= 9 ) //IS NUMBER
{
D15_12= D15_12 + 0X30;
}
else //IS ALPHA
{
D15_12 = D15_12 + 0X37;
}
write_reg(UART1_THR, D15_12);
////////////////////////////////////////////3
if( D11_8 <= 9 ) //IS NUMBER
{
D11_8= D11_8 + 0X30;
}
else //IS ALPHA
{
D11_8 = D11_8 + 0X37;
}
write_reg(UART1_THR, D11_8);
///////////////////////////////////////////2
if( D7_4 <= 9 ) //IS NUMBER
{
D7_4= D7_4 + 0X30;
}
else //IS ALPHA
{
D7_4 = D7_4 + 0X37;
}
write_reg(UART1_THR, D7_4);
///////////////////////////////////////////////////1
if( D3_0 <= 9 ) //IS NUMBER
{
D3_0= D3_0 + 0X30;
}
else //IS ALPHA
{
D3_0 = D3_0 + 0X37;
}
write_reg(UART1_THR, D3_0);
/////////////////////////////////////////////////////
write_reg(UART1_THR, 0x1); //SEND YANG
write_reg(UART1_THR, 0x30);
write_reg(UART1_THR, 0x58); //send 0x
for(i=0; i<10000; i++);
//////////send the ERROR CODE
D31_28 = (num & 0XF0000000 ) >> 28; //8
D27_24 = (num & 0X0F000000 ) >> 24; //7
D23_20 = (num & 0X00F00000 ) >> 20; //6
D19_16 = (num & 0X000F0000 ) >> 16; //5
D15_12 = (num & 0X0000F000 ) >> 12; //4
D11_8 = (num & 0X00000F00 ) >> 8;
D7_4 = (num & 0X000000F0) >> 4;
D3_0 = ( num & 0X0000000F ) ;
/////////////////////////////////////////////////8
if( D31_28 <= 9 ) //IS NUMBER
{
D31_28= D31_28 + 0X30;
}
else //IS ALPHA
{
D31_28 = D31_28 + 0X37;
}
write_reg(UART1_THR, D31_28);
//////////////////////////////////////////////7
if( D27_24 <= 9 ) //IS NUMBER
{
D27_24= D27_24 + 0X30;
}
else //IS ALPHA
{
D27_24 = D27_24 + 0X37;
}
write_reg(UART1_THR, D27_24);
///////////////////////////////////////////////6
if( D23_20 <= 9 ) //IS NUMBER
{
D23_20= D23_20 + 0X30;
}
else //IS ALPHA
{
D23_20 = D23_20 + 0X37;
}
write_reg(UART1_THR, D23_20);
///////////////////////////////////////////5
if( D19_16 <= 9 ) //IS NUMBER
{
D19_16= D19_16 + 0X30;
}
else //IS ALPHA
{
D19_16 = D19_16 + 0X37;
}
write_reg(UART1_THR, D19_16);
/////////////////////////////
write_reg(UART1_THR, 0x5f);
/////////////////////////////////////////4
if( D15_12 <= 9 ) //IS NUMBER
{
D15_12= D15_12 + 0X30;
}
else //IS ALPHA
{
D15_12 = D15_12 + 0X37;
}
write_reg(UART1_THR, D15_12);
////////////////////////////////////////////3
if( D11_8 <= 9 ) //IS NUMBER
{
D11_8= D11_8 + 0X30;
}
else //IS ALPHA
{
D11_8 = D11_8 + 0X37;
}
write_reg(UART1_THR, D11_8);
///////////////////////////////////////////2
if( D7_4 <= 9 ) //IS NUMBER
{
D7_4= D7_4 + 0X30;
}
else //IS ALPHA
{
D7_4 = D7_4 + 0X37;
}
write_reg(UART1_THR, D7_4);
///////////////////////////////////////////////////1
if( D3_0 <= 9 ) //IS NUMBER
{
D3_0= D3_0 + 0X30;
}
else //IS ALPHA
{
D3_0 = D3_0 + 0X37;
}
write_reg(UART1_THR, D3_0);
/////////////////////////////////////////////////////
write_reg(UART1_THR, 0X0D);
write_reg(UART1_THR, 0X0A); //\n
for(i=0; i<10000; i++);
*(RP)(INTC_IMSK)= mask; //resume mask reg
return E_OK;
}
//***********************************************************
//FPGA print function
//***********************************************************
extern ER prints(char *s)
{
int i;
//U32 mask;
//mask = *(RP)(INTC_IMSK); //remain mask reg
//*(RP)(INTC_IMSK)=-1UL; //mask all int
while(*s != '\0')
{
{
*(RP)UART1_THR = *s++;
}
for(i=0; i<5000; i++);
}
*(RP)UART1_THR = '\n';
//*(RP)(INTC_IMSK)= mask; //resume mask reg
return E_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -