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

📄 jmr3904-io.c

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 C
字号:
#define READ_UINT8( _register_, _value_ ) \        ((_value_) = *((volatile unsigned char *)(_register_)))#define WRITE_UINT8( _register_, _value_ ) \        (*((volatile unsigned char *)(_register_)) = (_value_)) /* - Board specific addresses for serial chip */#define DIAG_BASE       0xfffff300#define DIAG_SLCR       (DIAG_BASE+0x00)#define DIAG_SLSR       (DIAG_BASE+0x04)#define DIAG_SLDICR     (DIAG_BASE+0x08)#define DIAG_SLDISR     (DIAG_BASE+0x0C)#define DIAG_SFCR       (DIAG_BASE+0x10)#define DIAG_SBRG       (DIAG_BASE+0x14)#define DIAG_TFIFO      (DIAG_BASE+0x20)#define DIAG_RFIFO      (DIAG_BASE+0x30)#define BRG_T0          0x0000#define BRG_T2          0x0100#define BRG_T4          0x0200#define BRG_T5          0x0300#define READ_UINT16( _register_, _value_ ) \     ((_value_) = *((volatile unsigned short *)(_register_)))#define WRITE_UINT16( _register_, _value_ ) \     (*((volatile unsigned short *)(_register_)) = (_value_))unsigned charinbyte (void){  unsigned char c;  unsigned short disr;    for (;;)    {      READ_UINT16 (DIAG_SLDISR, disr);      if (disr & 0x0001)	break;    }  disr = disr & ~0x0001;  READ_UINT8 (DIAG_RFIFO, c);  WRITE_UINT16 (DIAG_SLDISR, disr);  return c;}voidoutbyte (unsigned char c){  unsigned short disr;    for (;;)    {      READ_UINT16 (DIAG_SLDISR, disr);      if (disr & 0x0002)	break;    }  disr = disr & ~0x0002;  WRITE_UINT8 (DIAG_TFIFO, c);  WRITE_UINT16 (DIAG_SLDISR, disr);}/* Stuff required to setup IO on this board */void board_serial_init (void){  WRITE_UINT16 (DIAG_SLCR, 0x0020);  WRITE_UINT16 (DIAG_SLDICR, 0x0000);  WRITE_UINT16 (DIAG_SFCR, 0x0000);  WRITE_UINT16 (DIAG_SBRG, BRG_T2 | 5);}/* If you want this to be initialized as part of the stuff which gets called   by crt0, it should be named 'hardware_init_hook'.   Local implementations may want to move or add to this function OR   do the initializations after main() is entered.*/void hardware_init_hook(void){  board_serial_init() ;}     /* Structure filled in by get_mem_info.  Only the size field is   actually used (by sbrk), so the others aren't even filled in.  */struct s_mem{  unsigned int size;  unsigned int icsize;  unsigned int dcsize;};/* mem_size is provided in the linker script so that we don't have to   define it here. */extern char _mem_size[];voidget_mem_info (mem)     struct s_mem *mem;{  mem->size = (unsigned int)_mem_size;}

⌨️ 快捷键说明

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