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