【原创】RTL8019AS内部寄存器在C51定义
分类:RTL8019AS
2007.3.1414:50作者:|评论:1|阅读:1603
最近因为要做单片机控制51单片机的一个东西,所以有些东西想和大家分享!
慢慢来,一步一步做,我也是变做项目,边将自己的一些心得体会发到博客和大家一起分享!
今天先来一些简单的,定义RTL8019AS内部积存器,因为如果先不定义他们,我们又如何才能在单片机中
对他们进行访问呢?
好了,看下面的定义和说明!
51单片机与RTL8019AS的管脚连接如下所示:
SA19--SA10SA9SA8SA7SA6SA5SA4SA3SA2SA1SA0
GNDVCC|-GND-|P27P25P24P23P22P21P20
|<-0->|1001******
单片机访问RTL8019AS的端口定义如下所示:
P27P26P25P24P23P22P21P20P07P06P05P04P03P02P01P00
100*****00000000
从上图可以看出来,我使用的RTL8019AS的端口好是从8000H到9F00H截至的!
下面就是我定义的RTL8019AS的特殊功能寄存器的
#include
#defineTX_PAGES6
#defineNE_START_PG0x40//发送寄存器的首页地址
#defineTX_START_PGNE_START_PG
#defineNE_STOP_PG0x80//接收寄存器环的末地址+1
#defineRX_STOP_PGNE_STOP_PG//
#defineRX_START_PGNE_START_PG+TX_PAGES
#defineRX_CURR_PGRX_START_PG+1
//下面定义的是RTL8019AS特殊寄存器
#defineCRXBYTE[0x8000]//设置CR寄存器地址
#defineDMA_PORTXBYTE[0x9000]//设置远程DMA端口
#defineRESET_PORTXBYTE[0x9800]//设置复位端口
//---------定义PAGE0-------------
//定义PAGE0中的只读寄存器
#definePG0_CLDA0XBYTE[0x8100]
#definePG0_CLDA1XBYTE[0x8200]
#definePG0_BNRYXBYTE[0x8300]
#definePG0_TSRXBYTE[0x8400]
#definePG0_NCRXBYTE[0x8500]
#definePG0_FIFOXBYTE[0x8600]
#definePG0_ISRXBYTE[0x8700]
#definePG0_CRDA0XBYTE[0x8800]
#definePG0_CRDA1XBYTE[0x8900]
#definePG0_8019D0XBYTE[0x8A00]
#definePG0_8019D1XBYTE[0x8B00]
#definePG0_RSRXBYTE[0x8C00]
#definePG0_CNTR0XBYTE[0x8D00]
#definePG0_CNTR1XBYTE[0x8E00]
#definePG0_CNTR2XBYTE[0x8F00]
//定义PAGE0中的只写寄存器
#definePG0_PSTARTXBYTE[0x8100]
#definePG0_PSTOPXBYTE[0x8200]
#definePG0_BNRYXBYTE[0x8300]
#definePG0_TPSRXBYTE[0x8400]
#definePG0_TBCR0XBYTE[0x8500]
#definePG0_TBCR1XBYTE[0x8600]
#definePG0_ISRXBYTE[0x8700]
#definePG0_RSAR0XBYTE[0x8800]
#definePG0_RSAR1XBYTE[0x8900]
#definePG0_RBCR0XBYTE[0x8A00]
#definePG0_RBCR1XBYTE[0x8B00]
#definePG0_RCRXBYTE[0x8C00]
#definePG0_TCRXBYTE[0x8D00]
#definePG0_DCRXBYTE[0x8E00]
#definePG0_IMRXBYTE[0x8F00]
//定义PAGE1读写寄存器
#definePG1_PAR0XBYTE[0x8100]
#definePG1_PAR1XBYTE[0x8200]
#definePG1_PAR2XBYTE[0x8300]
#definePG1_PAR3XBYTE[0x8400]
#definePG1_PAR4XBYTE[0x8500]
#definePG1_PAR5XBYTE[0x8600]
#definePG1_CURRXBYTE[0x8700]
#definePG1_MAR0XBYTE[0x8800]
#definePG1_MAR1XBYTE[0x8900]
#definePG1_MAR2XBYTE[0x8A00]
#definePG1_MAR3XBYTE[0x8B00]
#definePG1_MAR4XBYTE[0x8C00]
#definePG1_MAR5XBYTE[0x8D00]
#definePG1_MAR6XBYTE[0x8E00]
#definePG1_MAR7XBYTE[0x8F00]
//定义PAGE2只读寄存器
#definePG2_PSTARTXBYTE[0x8100]
#definePG2_PSTOPXBYTE[0x8200]
#definePG2_TPSRXBYTE[0x8400]
#definePG2_RCRXBYTE[0x8C00]
#definePG2_TCRXBYTE[0x8D00]
#definePG2_DCRXBYTE[0x8E00]
#definePG2_IMRXBYTE[0x8F00]
//以下是特殊寄存器的位定义
//CR寄存器
#definestop_cmd0x01//停止接受或发送数据
#definestart_cmd0x02//启动接受或发送数据
#definetxp0x04//发送数据
#defineno_dma0x00//禁止DMA
#defineread_dma0x08//允许远程DMA读
#definewrite_dma0x10//允许远程DMA写
#definend_pck0x18//发送数据
#defineabort_dma0x20//退出/完成远程DMA
#definepage00x00//PAGE0选择
#definepage10x40//PAGE1选择
#definepage20x80//PAGE2选择
#definepage30xc0//PAGE3选择
//ISR中断状态寄存器
#defineisr_prx0x01//无错误接受数据包
#defineisr_ptx0x02//无错误发送数据包
#definerxe0x04//接受数据包带有如下错误:CRC错误、包丢失错误以及帧队列错误
#definetxe0x08//过分冲突导致传输错误
#defineovw0x10//接受缓冲器溢出
#definecnt0x20//当一个或多个网络计数器的MSB设置完成时该位被设置。
#definerdc0x40//远程DMA操作完成
#definerst0x80//复位
//DCR数据结构寄存器
#definewts0x01//字长的DMA传送
#definebos0x02//传送过程中高位放到MD15-8,低位放到MD7-0
#definelas0x04//16位DMA传送模式
#definels0x08//回路检测,正常操作
#definearm0x10//自动初始化远程操作,发送包命令执行
#definefifo000x00//2字节
#definefifo010x20//4字节
#definefifo100x40//8字节
#definefifo110x60//12字节
//TCR传输配置寄存器
#definetcr_config0x00//设置将要配置TCR寄存器的值
#definetcr_crc0x00//CRC正常操作
#definelb000x00//正常操作
#definelb010x02//内部LOOKBACK
#definelb100x04//外部LOOKBACK
#definelb110x06//外部LOOKBACK
#defineatd0x08//多播地址混乱接受
#defineofst0x10//冲突补偿
//TSR传送状态寄存器
#definetsr_ptx0x01//无错误接收数据
#definecol0x04//数据传输过程中出现冲突
#defineabt0x08//超频导致传送失败
#definecrs0x10//传送数据包时,有包丢失
#definecdh0x40//
#defineowc0x80//
//RCR接受配置寄存器
#definercr_config0x04//设置将要配置的RCR寄存器的值
#definep0x01//允许错误数据包被接受
#definear0x02//允许帧长度小于64bytes的数据包被接受
#defineab0x04//允许广播地址帧数据包被接收
#defineam0x08//允许多播地址数据包被被接收
#definepro0x10//允许所有具有目的地址数据包被接收
#definemon0x20//
//RSR接受状态寄存器
#definersr_prx0x01//无错误接受数据标志
#definersr_crc0x02//CRC错误位
#definefae0x04//帧同步错误位
#definempa0x10//数据包丢失位
#definephy0x20//多播或广播位
#definedis0x40//禁止接受位
#definedfr0x80//冲突位
本文发布于:2022-12-06 12:47:32,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/53041.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |