w83977af.h

来自「瑞泰创新的GX-ARM9-2410EP教学实验系统的所有基础实验源代码,内容齐全」· C头文件 代码 · 共 150 行

H
150
字号
#ifndef W83977AF_H
#define W83977AF_H

#define W977_BASE (0x20800000)

#define W977_EFIO_BASE  (W977_BASE+0x370)

#define W977_EFIO2_BASE (W977_BASE+0x3f0)

//***************** define the number of logic devive ************************

#define W977_DEVICE_IR 0x06
#define W977_DEVICE_GPIO1 0x07
#define W977_DEVICE_UARTA 0x02
#define W977_DEVICE_UARTB 0x03
#define W977_DEVICE_KBC   0x05

//***************** define the register number in uart************************

#define RBR 0x00
#define TBR 0x00
#define ICR 0x01
#define ISR 0x02
#define UFR 0x02
#define UCR 0x03
#define HCR 0x04
#define USR 0x05
#define HSR 0x06
#define UDR 0x07
#define BLL 0x00
#define BHL 0x01

//***************** in the register UCR **************************************

#define BDLAB 0x80
#define SSE 0x40
#define PBFE 0x20
#define EPE 0x10
#define PBE 0x08
#define MSBE 0x04
#define DATA_LEN_5 00
#define DATA_LEN_6 01
#define DATA_LEN_7 10
#define DATA_LEN_8 11

//**************** in the register USR ****************************************

#define RFEI 0x80
#define TSRE 0x40
#define TBRE 0x20
#define SBD 0x10
#define NSER 0x08
#define PBER 0x04
#define OER 0x02
#define RDR 0x01

//**************** in the register HCR ****************************************

#define INT_LOOP_EN 0x10
#define IRQ_ENABLE 0x08
#define LOOP_RI 0x04
#define RTS 0x02
#define DTR 0x01

//**************** in the register HSR ****************************************

#define DCD 0x80
#define RI 0x40
#define DSR 0x20
#define CTS 0x10
#define TDCD 0x08
#define FERI 0x04
#define TDSR 0x02
#define TCTS 0x01

//*****************************************************************************


static void outb(unsigned char data, unsigned int addr)
{
	(*(volatile unsigned char *)(addr)) = data;
}

static  unsigned char inb(unsigned int addr)
{
	return(*(volatile unsigned char *)(addr)) ;
}


/*
 * Enter extended function mode
 */
static  void w977_efm_enter(unsigned int efio)
{
        outb(0x87, efio);
        outb(0x87, efio);
}

/*
 * Select a device to configure 
 */

static  void w977_select_device(unsigned char devnum, unsigned int efio)
{
	outb(0x07, efio);
	outb(devnum, efio+1);
} 

/* 
 * Write a byte to a register
 */
static  void w977_write_reg(unsigned char reg, unsigned char value, unsigned int efio)
{
	outb(reg, efio);
	outb(value, efio+1);
}

/*
 * read a byte from a register
 */
static  unsigned char  w977_read_reg(unsigned char reg, unsigned int efio)
{
	outb(reg, efio);
	return inb(efio+1);
}

/*
 * Exit extended function mode
 */
static void w977_efm_exit(unsigned int efio)
{
	outb(0xAA, efio);
}

/*
 * Exit extended function mode
 */


static void w977_conf_write(unsigned char value, unsigned int iobase)
{
	outb(value,W977_BASE+iobase);
}

static unsigned char w977_conf_read( unsigned int iobase)
{
	return inb(W977_BASE+iobase);
}

#endif

⌨️ 快捷键说明

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