Blame | Last modification | View Log | Download | RSS feed
ifndef __reg80f91inc
__reg80f91inc equ 1
save
listing off ; no listing over this file
;****************************************************************************
;* *
;* AS(L) - File REG80F91.INC *
;* *
;* Contains Bit & Register Definitions for Zilog eZ80F91 *
;* *
;****************************************************************************
include "spi.inc"
include "uart.inc"
include "i2c.inc"
include "gpio.inc"
include "rtc.inc"
include "flash.inc"
;----------------------------------------------------------------------------
; Memory Limits
RAMSTART equ 0e000h ; assumes RAM_ADDR_U = 00h
RAMEND equ RAMSTART+1fffh
EMAC_RAMSTART equ 0c000h
EMAC_RAMEND equ EMAC_RAMSTART+1fffh
;----------------------------------------------------------------------------
; Product ID
ZDI_ID_L port 00h ; eZ80 Product ID Low Byte Register (r)
ZDI_ID_H port 01h ; eZ80 Product ID High Byte Register (r)
ZDI_ID_REV port 02h ; eZ80 Product ID Revision Register (r)
;----------------------------------------------------------------------------
; Interrupt Priority
INT_P0 port 10h ; Interrupt Priority Register - Byte 0 (r/w)
INT_P1 port 11h ; Interrupt Priority Register - Byte 1 (r/w)
INT_P2 port 12h ; Interrupt Priority Register - Byte 2 (r/w)
INT_P3 port 13h ; Interrupt Priority Register - Byte 3 (r/w)
INT_P4 port 14h ; Interrupt Priority Register - Byte 4 (r/w)
INT_P5 port 15h ; Interrupt Priority Register - Byte 5 (r/w)
;----------------------------------------------------------------------------
; Ethernet Media Access Controller
EMAC_TEST port 20h ; EMAC Test Register (r/w)
TEST_FIFO equ 1 << 6 ; FIFO test mode enabled
TxRx_SEL equ 1 << 5 ; Select the Transmit FIFO when FIFO test mode is enabled
SSTC equ 1 << 4 ; Short Cut Slot Timer Counter
SIMR equ 1 << 3 ; Simulation Reset
FRC_OVR_ERR equ 1 << 2 ; Force Overrun error in Receive FIFO
FRC_UND_ERR equ 1 << 1 ; Force Underrun error in Transmit FIFO
LPBK equ 1 << 0 ; EMAC Transmit interface is looped back into EMAC Receive interface
EMAC_CFG1 port 21h ; EMAC Configuration Register 1 (r/w)
PADEN equ 1 << 7 ; EMAC pads all short frames by adding zeroes to the end of the data field
ADPADN equ 1 << 6 ; EMAC pads all short frames to 64 bytes and append a valid CRC. This bit is ignored if PADEN is cleared to 0
VLPAD equ 1 << 5 ; Enable frame detection by comparing the two bytes following the source address with 0x8100 (VLAN Protocol ID) and pad accordingly.
CRCEN equ 1 << 4 ; Append CRC to every frame regardless of padding options
FULLD equ 1 << 3 ; Enable FULL-DUPLEX mode
FLCHK equ 1 << 2 ; Both Transmit and Receive frame lengths are compared to the length/type field.
HUGEN equ 1 << 1 ; Allow unlimited sized frames to be received
DCRCC equ 1 << 0 ; Four bytes of proprietary header, ignored by CRC, exists on the front of IEEE 802.3 frames
EMAC_CFG2 port 22h ; EMAC Configuration Register 2 (r/w)
BPNB equ 1 << 7 ; No Backoff
NOBO equ 1 << 6 ; No exponential backfill
LCOL_S equ 0 ; # of bytes after SFD for late collision
LCOL_M equ 3fh << LCOL_S
EMAC_CFG3 port 23h ; EMAC Configuration Register 3 (r/w)
LONGP equ 1 << 7 ; The EMAC only allows Receive packets that contain preamble fields less than 12 bytes in length
PUREP equ 1 << 6 ; The EMAC verifies the content of the preamble to ensure that it contains a value of 55h and that it is error-free
XSDFR equ 1 << 5 ; The EMAC defers to the carrier indefinitely as per the IEEE 802.3 specification
BITMD equ 1 << 4 ; Enable 10 Mbps ENDEC mode
RETRY_S equ 0 ; number of retransmission after collision
RETRY_M equ 15 << RETRY_S
EMAC_CFG4 port 24h ; EMAC Configuration Register 4 (r/w)
TPCF equ 1 << 6 ; Transmit pause control frame
THDF equ 1 << 5 ; Enable back pressure
PARF equ 1 << 4 ; Receive broken frames
RxFC equ 1 << 3 ; EMAC acts upon pause control frames received
TxFC equ 1 << 2 ; PAUSE control frames are allowed to be transmitted
TPAUSE equ 1 << 1 ; Force a pause condition
RxEN equ 1 << 0 ; EMAC receiver enabled
EMAC_STAD_0 port 25h ; EMAC Station Address - Byte 0 (r/w)
EMAC_STAD_1 port 26h ; EMAC Station Address - Byte 1 (r/w)
EMAC_STAD_2 port 27h ; EMAC Station Address - Byte 2 (r/w)
EMAC_STAD_3 port 28h ; EMAC Station Address - Byte 3 (r/w)
EMAC_STAD_4 port 29h ; EMAC Station Address - Byte 4 (r/w)
EMAC_STAD_5 port 2ah ; EMAC Station Address - Byte 5 (r/w)
EMAC_TPTV_L port 2bh ; EMAC Transmit Pause Timer Value - Low Byte (r/w)
EMAC_TPTV_H port 2ch ; EMAC Transmit Pause Timer Value - High Byte (r/w)
EMAC_IPGT port 2dh ; EMAC Inter-Packet Gap (r/w)
EMAC_IPGR1 port 2eh ; EMAC Non-Back-Back IPG (r/w)
EMAC_IPGR2 port 2fh ; EMAC Non-Back-Back IPG (r/w)
EMAC_MAXF_L port 30h ; EMAC Maximum Frame Length - Low Byte (r/w)
EMAC_MAXF_H port 31h ; EMAC Maximum Frame Length - High Byte (r/w)
EMAC_AFR port 32h ; EMAC Address Filter Register (r/w)
PROM equ 1 << 3 ; Enable Promiscuous Mode
MC equ 1 << 2 ; Accept any multicast message
QMC equ 1 << 1 ; Accept only qualified multicast (QMC) messages
BC equ 1 << 0 ; Accept broadcast messages
EMAC_HTBL_0 port 33h ; EMAC Hash Table - Byte 0 (r/w)
EMAC_HTBL_1 port 34h ; EMAC Hash Table - Byte 1 (r/w)
EMAC_HTBL_2 port 35h ; EMAC Hash Table - Byte 2 (r/w)
EMAC_HTBL_3 port 36h ; EMAC Hash Table - Byte 3 (r/w)
EMAC_HTBL_4 port 37h ; EMAC Hash Table - Byte 4 (r/w)
EMAC_HTBL_5 port 38h ; EMAC Hash Table - Byte 5 (r/w)
EMAC_HTBL_6 port 39h ; EMAC Hash Table - Byte 6 (r/w)
EMAC_HTBL_7 port 3ah ; EMAC Hash Table - Byte 7 (r/w)
EMAC_MIIMGT port 3bh ; EMAC MII Management Register (r/w)
LCTLD equ 1 << 7 ; Rising edge causes the CTLD control data to be transmitted to external PHY if MII is not busy.
RSTAT equ 1 << 6 ; Rising edge causes status to be read from external PHY
SCINC equ 1 << 5 ; Scan PHY address increments upon SCAN cycle
SCAN equ 1 << 4 ; Perform continuous Read cycles via MII management
SPRE equ 1 << 3 ; Suppress the MDO preamble
CLKS_S equ 0 ; MDIO Clock Divisor
CLKS_M equ 7 << CLKS_S
EMAC_CTLD_L port 3ch ; EMAC PHY Configuration Data - Low Byte (r/w)
EMAC_CTLD_H port 3dh ; EMAC PHY Configuration Data - High Byte (r/w)
EMAC_RGAD port 3eh ; EMAC PHY Register Address Register (r/w)
EMAC_FIAD port 3fh ; EMAC PHY Unit Select Address Register (r/w)
EMAC_PTMR port 40h ; EMAC Transmit Polling Timer Register (r/w)
EMAC_RST port 41h ; EMAC Reset Control Register (r/w)
SRST equ 1 << 5 ; Software Reset
HRTFN equ 1 << 4 ; Reset Transmit function
HRRFN equ 1 << 3 ; Reset Receive function
HRTMC equ 1 << 2 ; Reset EMAC Transmit Control function
HRRMC equ 1 << 1 ; Reset EMAC Receive Control function
HRMGT equ 1 << 0 ; Reset EMAC Management function
EMAC_TLBP_L port 42h ; EMAC Transmit Lower Boundary Pointer - Low Byte (r/w)
EMAC_TLBP_H port 43h ; EMAC Transmit Lower Boundary Pointer - High Byte (r/w)
EMAC_BP_L port 44h ; EMAC Boundary Pointer - Low Byte (r/w)
EMAC_BP_H port 45h ; EMAC Boundary Pointer - High Byte (r/w)
EMAC_BP_U port 46h ; EMAC Boundary Pointer - Upper Byte (r/w)
EMAC_RHBP_L port 47h ; EMAC Receive High Boundary Pointer - Low Byte (r/w)
EMAC_RHBP_H port 48h ; EMAC Receive High Boundary Pointer - High Byte (r/w)
EMAC_RRP_L port 49h ; EMAC Receive Read Pointer - Low Byte (r/w)
EMAC_RRP_H port 4ah ; EMAC Receive Read Pointer - High Byte (r/w)
EMAC_BUFSZ port 4bh ; EMAC Buffer Size Register (r/w)
BUFSZ_S equ 6 ; EMAC Rx/Tx buffer size
BUFSZ_M equ 3 << BUFSZ_S
BUFSZ_256B equ 0 << BUFSZ_S
BUFSZ_128B equ 1 << BUFSZ_S
BUFSZ_64B equ 2 << BUFSZ_S
BUFSZ_32B equ 3 << BUFSZ_S
TPCF_LEV_S equ 0 ; Transmit Pause Control Frame level
TPCF_LEV_M equ 3fh << TPCF_LEV_S
EMAC_IEN port 4ch ; EMAC Interrupt Enable Register (r/w)
TxFSMERR equ 1 << 7 ; Enable Transmit State Machine Error Interrupt
MGTDONE equ 1 << 6 ; Enable MII Management Done Interrupt
Rx_CF equ 1 << 5 ; Enable Receive Control Frame Interrupt
Rx_PCF equ 1 << 4 ; Enable Receive Pause Control Frame Interrupt
Rx_DONE equ 1 << 3 ; Enable Receive Done Interrupt
Rx_OVR equ 1 << 2 ; Enable Receive Overrun Interrupt
Tx_CF equ 1 << 1 ; Enable Transmit Control Frame Interrupt
Tx_DONE equ 1 << 0 ; Enable Transmit Done Interrupt
EMAC_ISTAT port 4dh ; EMAC Interrupt Status Register (r/w)
TxFSMERR_STAT equ 1 << 7 ; Internal error occured in the EMAC Transmit path
MGTDONE_STAT equ 1 << 6 ; The MII Management has completed
Rx_CF_STAT equ 1 << 5 ; Receive Control Frame Interrupt
Rx_PCF_STAT equ 1 << 4 ; Receive Pause Control Frame Interrupt
Rx_DONE_STAT equ 1 << 3 ; Receive Done Interrupt
Rx_OVR_STAT equ 1 << 2 ; Receive Overrun Interrupt
Tx_CF_STAT equ 1 << 1 ; Transmit Control Frame Interrupt
Tx_DONE_STAT equ 1 << 0 ; Transmit Done Interrupt
EMAC_PRSD_L port 4eh ; EMAC PHY Read Status Data - Low Byte (r/w)
EMAC_PRSD_H port 4fh ; EMAC PHY Read Status Data - High Byte (r/w)
EMAC_MIISTAT port 50h ; EMAC MII Status Register (r/w)
BUSY equ 1 << 7 ; MII management operation in progress
MIILF equ 1 << 6 ; Local copy of PHY Link fail bit
NVALID equ 1 << 5 ; MII Scan result is not valid
RDADR_S equ 0 ; Denotes PHY addressed in current scan cycle
RDADR_M equ 1fh << RDADR_S
EMAC_RWP_L port 51h ; EMAC Receive Write Pointer - Low Byte (r/w)
EMAC_RWP_H port 52h ; EMAC Receive Write Pointer - High Byte (r/w)
EMAC_TRP_L port 53h ; EMAC Transmit Read Pointer - Low Byte (r/w)
EMAC_TRP_H port 54h ; EMAC Transmit ReadPointer - High Byte (r/w)
EMAC_BLKSLFT_L port 55h ; EMAC Receive Blocks Left Register - Low Byte (r/w)
EMAC_BLKSLFT_H port 56h ; EMAC Receive Blocks Left Register - High Byte (r/w)
EMAC_FDATA_L port 57h ; EMAC FIFO Data - Low Byte (r/w)
EMAC_FDATA_H port 58h ; EMAC FIFO Data - High Byte (r/w)
EMAC_FFLAGS port 59h ; EMAC FIFO Flags Register (r/w)
TFF equ 1 << 7 ; Transmit FIFO full
TFAE equ 1 << 5 ; Transmit FIFO almost empty
TFE equ 1 << 4 ; Transmit FIFO empty
RFF equ 1 << 3 ; Receive FIFO full
RFAF equ 1 << 2 ; Receive FIFO almost full
RFAE equ 1 << 1 ; Receive FIFO almost empty
RFE equ 1 << 0 ; Receive FIFO empty
IVEC_EMAC_Rx label 40h ; EMAC Rx interrupt vector
IVEC_EMAC_Tx label 44h ; EMAC Tx interrupt vector
IVEC_EMAC_SYS label 48h ; EMAC system interrupt vector
;----------------------------------------------------------------------------
; PLL
PLL_DIV_L port 5ch ; PLL Divider Register - Low Byte (w)
PLL_DIV_H port 5dh ; PLL Divider Register - High Byte (w)
PLL_CTL0 port 5eh ; PLL Control Register 0 (r/w)
CHRP_CTL1_S equ 6 ; Charge Pump Current
CHRP_CTL1_M equ 3 << CHRP_CTL1_S
CHRP_CTL1_100u equ 0 << CHRP_CTL1_S ; 100 uA
CHRP_CTL1_500u equ 1 << CHRP_CTL1_S ; 500 uA
CHRP_CTL1_1m equ 2 << CHRP_CTL1_S ; 1 mA
CHRP_CTL1_1m5 equ 3 << CHRP_CTL1_S ; 1.5 mA
LDS_CTL1_S equ 2 ; Lock Criteria
LDS_CTL1_M equ 3 << LDS_CTL1_S
LDS_CTL1_8_20 equ 0 << LDS_CTL1_S ; 8 cycles a 20 ns
LDS_CTL1_16_20 equ 1 << LDS_CTL1_S ; 16 cycles a 20 ns
LDS_CTL1_8_400 equ 2 << LDS_CTL1_S ; 8 cycles a 400 ns
LDS_CTL1_16_400 equ 3 << LDS_CTL1_S ; 16 cycles a 400 ns
CLK_MUX_S equ 0 ; System Clock Source
CLK_MUX_M equ 3 << CLK_MUX_S
CLK_MUX_EXT equ 0 << CLK_MUX_S ; External Crystal Oscillator
CLK_MUX_PLL equ 1 << CLK_MUX_S ; PLL
CLK_MUX_RTC equ 2 << CLK_MUX_S ; RTC Crystal Oscillator
PLL_CTL1 port 5fh ; PLL Control Register 1 (r/w)
LCK_STATUS equ 1 << 5 ; PLL is currently locked
INT_LOCK equ 1 << 4 ; Interrupt generated when PLL enters LOCK mode
INT_UNLOCK equ 1 << 3 ; Interrupt generated when PLL goes out of lock
INT_LOCK_EN equ 1 << 2 ; Interrupt generation for PLL locked condition
INT_UNLOCK_EN equ 1 << 1 ; Interrupt generation for PLL unlocked condition
PLL_ENABLE equ 1 << 0 ; PLL Enable
IVEC_PLL label 04ch ; PLL interrupt vector
;----------------------------------------------------------------------------
; Timer
TMR0_CTL port 60h ; Timer 0 Control Register (r/w)
BRK_STOP equ 1 << 7 ; The timer stops operation and holds count value during debug break points
CLK_SEL_S equ 5 ; Clock Select
CLK_SEL_M equ 3 << CLK_SEL_S
CLK_SEL_SYSCLK equ 0 << CLK_SEL_S ; System clock divided by the prescaler
CLK_SEL_RTC equ 1 << CLK_SEL_S ; Real Time Clock Input
CLK_SEL_EC_FALL equ 2 << CLK_SEL_S ; Event Count (ECx) input - falling edge
CLK_SEL_EC_RISE equ 3 << CLK_SEL_S ; Event Count (ECx) input - rising edge
CLK_DIV_S equ 3 ; Clock Divider
CLK_DIV_M equ 3 << CLK_DIV_S
CLK_DIV_4 equ 0 << CLK_DIV_S
CLK_DIV_16 equ 1 << CLK_DIV_S
CLK_DIV_64 equ 2 << CLK_DIV_S
CLK_DIV_256 equ 3 << CLK_DIV_S
TIM_CONT equ 1 << 2 ; Continuous mode
RLD equ 1 << 1 ; Reload
TIM_EN equ 1 << 0 ; Timer Enable
TMR0_IER port 61h ; Timer 0 Interrupt Enable Register (r/w)
IRQ_OC3_EN equ 1 << 6 ; Enable interrupt requests for OC3
IRQ_OC2_EN equ 1 << 5 ; Enable interrupt requests for OC2
IRQ_OC1_EN equ 1 << 4 ; Enable interrupt requests for OC1
IRQ_OC0_EN equ 1 << 3 ; Enable interrupt requests for OC0
IRQ_ICB_EN equ 1 << 2 ; Enable interrupt requests for ICx
IRQ_ICA_EN equ 1 << 1 ; Enable interrupt requests for ICA or PWM power trip
IRQ_EOC_EN equ 1 << 0 ; Enable interrupt on end-of-count
TMR0_IIR port 62h ; Timer 0 Interrupt Identification Register (r/w)
OC3 equ 1 << 6 ; OC3 interrupt occured
OC2 equ 1 << 5 ; OC2 interrupt occured
OC1 equ 1 << 4 ; OC1 interrupt occured
OC0 equ 1 << 3 ; OC0 interrupt occured
ICB equ 1 << 2 ; ICx interrupt occured
ICA equ 1 << 1 ; ICA or PWM power trip interrupt occured
EOC equ 1 << 0 ; End-of-count interrupt occured
TMR0_DR_L port 63h ; Timer 0 Data Register Low (r)
TMR0_RR_L port 63h ; Timer 0 Reload Register Low (w)
TMR0_DR_H port 64h ; Timer 0 Data Register High (r)
TMR0_RR_H port 64h ; Timer 0 Reload Register High (w)
IVEC_TIMER0 label 54h ; Timer 0 Interrupt Vector
TMR1_CTL port 65h ; Timer 1 Control Register (r/w)
TMR1_IER port 66h ; Timer 1 Interrupt Enable Register (r/w)
TMR1_IIR port 67h ; Timer 1 Interrupt Identification Register (r/w)
TMR1_DR_L port 68h ; Timer 1 Data Register Low (r)
TMR1_RR_L port 68h ; Timer 1 Reload Register Low (w)
TMR1_DR_H port 69h ; Timer 1 Data Register High (r)
TMR1_RR_H port 69h ; Timer 1 Reload Register High (w)
TMR1_CAP_CTL port 6ah ; Timer 1 Input Capture Control Register (r/w)
CAP_EDGE_B_S equ 2 ; Capture Mode B
CAP_EDGE_B_M equ 3 << CAP_EDGE_B_S
CAP_EDGE_B_NONE equ 0 << CAP_EDGE_B_S ; No capture
CAP_EDGE_B_FALL equ 1 << CAP_EDGE_B_S ; Capture on falling edge
CAP_EDGE_B_RISE equ 2 << CAP_EDGE_B_S ; Capture on risig edge
CAP_EDGE_B_BOTH equ 3 << CAP_EDGE_B_S ; Capture on both edges
CAP_EDGE_A_S equ 0 ; Capture Mode A
CAP_EDGE_A_M equ 3 << CAP_EDGE_B_S
CAP_EDGE_A_NONE equ 0 << CAP_EDGE_B_S ; No capture
CAP_EDGE_A_FALL equ 1 << CAP_EDGE_B_S ; Capture on falling edge
CAP_EDGE_A_RISE equ 2 << CAP_EDGE_B_S ; Capture on risig edge
CAP_EDGE_A_BOTH equ 3 << CAP_EDGE_B_S ; Capture on both edges
TMR1_CAPA_L port 6bh ; Timer 1 Capture Value A Register - Low Byte (r/w)
TMR1_CAPA_H port 6ch ; Timer 1 Capture Value A Register - High Byte (r/w)
TMR1_CAPB_L port 6dh ; Timer 1 Capture Value B Register - Low Byte (r/w)
TMR1_CAPB_H port 6eh ; Timer 1 Capture Value B Register - High Byte (r/w)
IVEC_TIMER1 label 58h ; Timer 1 Interrupt Vector
TMR2_CTL port 6fh ; Timer 2 Control Register (r/w)
TMR2_IER port 70h ; Timer 2 Interrupt Enable Register (r/w)
TMR2_IIR port 71h ; Timer 2 Interrupt Identification Register (r/w)
TMR2_DR_L port 72h ; Timer 2 Data Register Low (r)
TMR2_RR_L port 72h ; Timer 2 Reload Register Low (w)
TMR2_DR_H port 73h ; Timer 2 Data Register High (r)
TMR2_RR_H port 73h ; Timer 2 Reload Register High (w)
IVEC_TIMER2 label 5ch ; Timer 2 Interrupt Vector
TMR3_CTL port 74h ; Timer 3 Control Register (r/w)
TMR3_IER port 75h ; Timer 3 Interrupt Enable Register (r/w)
TMR3_IIR port 76h ; Timer 3 Interrupt Identification Register (r/w)
TMR3_DR_L port 77h ; Timer 3 Data Register Low (r)
TMR3_RR_L port 77h ; Timer 3 Reload Register Low (w)
TMR3_DR_H port 78h ; Timer 3 Data Register High (r)
TMR3_RR_H port 78h ; Timer 3 Reload Register High (w)
TMR3_CAP_CTL port 7bh ; Timer 3 Input Capture Control Register (r/w)
TMR3_CAPA_L port 7ch ; Timer 3 Capture Value A Register - Low Byte (r/w)
TMR3_CAPA_H port 7dh ; Timer 3 Capture Value A Register - High Byte (r/w)
TMR3_CAPB_L port 7eh ; Timer 3 Capture Value B Register - Low Byte (r/w)
TMR3_CAPB_H port 7fh ; Timer 3 Capture Value B Register - High Byte (r/w)
TMR3_OC_CTL1 port 80h ; Timer 3 Output Compare Control Register 1 (r/w)
OC3_INIT equ 1 << 5 ; OC3 initial pin state
OC2_INIT equ 1 << 4 ; OC2 initial pin state
OC1_INIT equ 1 << 3 ; OC1 initial pin state
OC0_INIT equ 1 << 2 ; OC0 initial pin state
MAST_MODE equ 1 << 1 ; OC pins all mimic OC0
OC_EN equ 1 << 0 ; OUTPUT COMPARE mode is enabled
TMR3_OC_CTL2 port 81h ; Timer 3 Output Compare Control Register 2 (r/w)
OC3_MODE_S equ 6 ; What to happen when compare event takes place
OC3_MODE_M equ 3 << OC3_MODE_S
OC3_MODE_INIT equ 0 << OC3_MODE_S ; Set pin to OCx_INIT
OC3_MODE_CLR equ 1 << OC3_MODE_S ; Clear pin
OC3_MODE_SET equ 2 << OC3_MODE_S ; Set pin
OC3_MODE_TGL equ 3 << OC3_MODE_S ; Toggle pin
OC2_MODE_S equ 4
OC2_MODE_M equ 3 << OC2_MODE_S
OC2_MODE_INIT equ 0 << OC2_MODE_S
OC2_MODE_CLR equ 1 << OC2_MODE_S
OC2_MODE_SET equ 2 << OC2_MODE_S
OC2_MODE_TGL equ 3 << OC2_MODE_S
OC1_MODE_S equ 2
OC1_MODE_M equ 3 << OC1_MODE_S
OC1_MODE_INIT equ 0 << OC1_MODE_S
OC1_MODE_CLR equ 1 << OC1_MODE_S
OC1_MODE_SET equ 2 << OC1_MODE_S
OC1_MODE_TGL equ 3 << OC1_MODE_S
OC0_MODE_S equ 0
OC0_MODE_M equ 3 << OC0_MODE_S
OC0_MODE_INIT equ 0 << OC0_MODE_S
OC0_MODE_CLR equ 1 << OC0_MODE_S
OC0_MODE_SET equ 2 << OC0_MODE_S
OC0_MODE_TGL equ 3 << OC0_MODE_S
TMR3_OC0_L port 82h ; Timer 3 Output Compare 0 Value Register - Low Byte (r/w)
TMR3_OC0_H port 83h ; Timer 3 Output Compare 0 Value Register - High Byte (r/w)
TMR3_OC1_L port 84h ; Timer 3 Output Compare 1 Value Register - Low Byte (r/w)
TMR3_OC1_H port 85h ; Timer 3 Output Compare 1 Value Register - High Byte (r/w)
TMR3_OC2_L port 86h ; Timer 3 Output Compare 2 Value Register - Low Byte (r/w)
TMR3_OC2_H port 87h ; Timer 3 Output Compare 2 Value Register - High Byte (r/w)
TMR3_OC3_L port 88h ; Timer 3 Output Compare 3 Value Register - Low Byte (r/w)
TMR3_OC3_H port 89h ; Timer 3 Output Compare 3 Value Register - High Byte (r/w)
IVEC_TIMER3 label 60h ; Timer 3 Interrupt Vector
PWM_CTL1 port 79h ; PWM Control Register 1 (r/w)
PAIR_EN equ 1 << 7 ; Global enable of the PWM and -PWM output pairs
PT_EN equ 1 << 6 ; Enable power-trip feature
MM_EN equ 1 << 5 ; Enable Master mode
PWM3_EN equ 1 << 4 ; Enable PWM generator 3
PWM2_EN equ 1 << 3 ; Enable PWM generator 2
PWM1_EN equ 1 << 2 ; Enable PWM generator 1
PWM0_EN equ 1 << 1 ; Enable PWM generator 0
MPWM_EN equ 1 << 0 ; Enable Multi-PWM mode
PWM_CTL2 port 7ah ; PWM Control Register 2 (r/w)
AON_EN_S equ 6 ; AND/OR Features on -PWM
AON_EN_M equ 3 << AON_EN_S
AON_EN_N equ 0 << AON_EN_S ; neither
AON_EN_A equ 1 << AON_EN_S ; AND only
AON_EN_O equ 2 << AON_EN_S ; OR only
AON_EN_AO equ 3 << AON_EN_S ; AND/OR
AO_EN_S equ 4 ; AND/OR Features on PWM
AO_EN_M equ 3 << AO_EN_S
AO_EN_N equ 0 << AO_EN_S ; neither
AO_EN_A equ 1 << AO_EN_S ; AND only
AO_EN_O equ 2 << AO_EN_S ; OR only
AO_EN_AO equ 3 << AO_EN_S ; AND/OR
PWM_DLY_S equ 0 ; Delay between falling edge of -PWM and rising edge of PWM
PWM_DLY_M equ 15 << PWM_DLY_S
PWM_CTL3 port 7bh ; PWM Control Register 3 (r/w)
PT_IC3_EN equ 1 << 7 ; Power trip enabled on IC3
PT_IC2_EN equ 1 << 6 ; Power trip enabled on IC2
PT_IC1_EN equ 1 << 5 ; Power trip enabled on IC1
PT_IC0_EN equ 1 << 4 ; Power trip enabled on IC0
PT_TRI equ 1 << 3 ; All PWM trip levels are defined by PT_LVL and PT_LVL_N
PT_LVL equ 1 << 2 ; After power trip, PWMx outputs are set to zero
PT_LVL_N equ 1 << 1 ; After power trip, -PWMx outputs are set to zero
PTD equ 1 << 0 ; This bit is set after power trip event
PWM0R_L port 7ch ; PWM 0 Rising-Edge Register - Low Byte (r/w)
PWM0R_H port 7dh ; PWM 0 Rising-Edge Register - High Byte (r/w)
PWM1R_L port 7eh ; PWM 1 Rising-Edge Register - Low Byte (r/w)
PWM1R_H port 7fh ; PWM 1 Rising-Edge Register - High Byte (r/w)
PWM2R_L port 80h ; PWM 2 Rising-Edge Register - Low Byte (r/w)
PWM2R_H port 81h ; PWM 2 Rising-Edge Register - High Byte (r/w)
PWM3R_L port 82h ; PWM 3 Rising-Edge Register - Low Byte (r/w)
PWM3R_H port 83h ; PWM 3 Rising-Edge Register - High Byte (r/w)
PWM0F_L port 84h ; PWM 0 Falling-Edge Register - Low Byte (r/w)
PWM0F_H port 85h ; PWM 0 Falling-Edge Register - High Byte (r/w)
PWM1F_L port 86h ; PWM 1 Falling-Edge Register - Low Byte (r/w)
PWM1F_H port 87h ; PWM 1 Falling-Edge Register - High Byte (r/w)
PWM2F_L port 88h ; PWM 2 Falling-Edge Register - Low Byte (r/w)
PWM2F_H port 89h ; PWM 2 Falling-Edge Register - High Byte (r/w)
PWM3F_L port 8ah ; PWM 3 Falling-Edge Register - Low Byte (r/w)
PWM3F_H port 8bh ; PWM 3 Falling-Edge Register - High Byte (r/w)
;----------------------------------------------------------------------------
; Watchdog Timer
WDT_CTL port 93h ; Watchdog Timer Control Register (r/w)
WDT_EN equ 1 << 7 ; Watchdog Timer Enable
NMI_OUT equ 1 << 6 ; NMI instead of reset
RST_FLAG equ 1 << 5 ; Reset caused by WDT
NMI_FLAG equ 1 << 4 ; NMI caused by WDT
WDT_CLK_S equ 2 ; WDT Clock Source
WDT_CLK_M equ 3 << WDT_CLK_S
WDT_CLK_SYS equ 0 << WDT_CLK_S ; System Clock
WDT_CLK_RTC equ 1 << WDT_CLK_S ; RTC Clock
WDT_CLK_RC equ 2 << WDT_CLK_S ; Internal RC Oscillator
WDT_PERIOD_S equ 0 ; WDT Period
WDT_PERIOD_M equ 3 << WDT_PERIOD_S
WDT_PERIOD_27 equ 0 << WDT_PERIOD_S ; WDT period is 2**27 (system) clock cycles
WDT_PERIOD_25 equ 1 << WDT_PERIOD_S ; WDT period is 2**25 (system) clock cycles
WDT_PERIOD_22 equ 2 << WDT_PERIOD_S ; WDT period is 2**22 (system) clock cycles
WDT_PERIOD_18 equ 3 << WDT_PERIOD_S ; WDT period is 2**18 (system) clock cycles
WDT_RR port 94h ; Watchdog Timer Reset Register (w)
;----------------------------------------------------------------------------
; General-Purpose Input/Output Ports
__defgpio "A",96h
IVEC_PA0 label 80h ; Port A 0 Interrupt Vector
IVEC_PA1 label 84h ; Port A 1 Interrupt Vector
IVEC_PA2 label 88h ; Port A 2 Interrupt Vector
IVEC_PA3 label 8ch ; Port A 3 Interrupt Vector
IVEC_PA4 label 90h ; Port A 4 Interrupt Vector
IVEC_PA5 label 94h ; Port A 5 Interrupt Vector
IVEC_PA6 label 98h ; Port A 6 Interrupt Vector
IVEC_PA7 label 9ch ; Port A 7 Interrupt Vector
__defgpio "B",9ah
IVEC_PB0 label 0a0h ; Port B 0 Interrupt Vector
IVEC_PB1 label 0a4h ; Port B 1 Interrupt Vector
IVEC_PB2 label 0a8h ; Port B 2 Interrupt Vector
IVEC_PB3 label 0ach ; Port B 3 Interrupt Vector
IVEC_PB4 label 0b0h ; Port B 4 Interrupt Vector
IVEC_PB5 label 0b4h ; Port B 5 Interrupt Vector
IVEC_PB6 label 0b8h ; Port B 6 Interrupt Vector
IVEC_PB7 label 0bch ; Port B 7 Interrupt Vector
__defgpio "C",9eh
IVEC_PC0 label 0c0h ; Port C 0 Interrupt Vector
IVEC_PC1 label 0c4h ; Port C 1 Interrupt Vector
IVEC_PC2 label 0c8h ; Port C 2 Interrupt Vector
IVEC_PC3 label 0cch ; Port C 3 Interrupt Vector
IVEC_PC4 label 0d0h ; Port C 4 Interrupt Vector
IVEC_PC5 label 0d4h ; Port C 5 Interrupt Vector
IVEC_PC6 label 0d8h ; Port C 6 Interrupt Vector
IVEC_PC7 label 0dch ; Port C 7 Interrupt Vector
__defgpio "D",0a2h
IVEC_PD0 label 0e0h ; Port D 0 Interrupt Vector
IVEC_PD1 label 0e4h ; Port D 1 Interrupt Vector
IVEC_PD2 label 0e8h ; Port D 2 Interrupt Vector
IVEC_PD3 label 0ech ; Port D 3 Interrupt Vector
IVEC_PD4 label 0f0h ; Port D 4 Interrupt Vector
IVEC_PD5 label 0f4h ; Port D 5 Interrupt Vector
IVEC_PD6 label 0f8h ; Port D 6 Interrupt Vector
IVEC_PD7 label 0fch ; Port D 7 Interrupt Vector
PA_ALT0 port 0a6h ; Port A Alternate Register 0 (w)
PB_ALT0 port 0a7h ; Port B Alternate Register 0 (w)
PC_ALT0 port 0ceh ; Port C Alternate Register 0 (w)
PD_ALT0 port 0cfh ; Port D Alternate Register 0 (w)
;----------------------------------------------------------------------------
; Chip Select/Wait State Generator
CS0_LBR port 0a8h ; Chip Select 0 Lower Bound Register (r/w)
CS0_UBR port 0a9h ; Chip Select 0 Upper Bound Register (r/w)
CS0_CTL port 0aah ; Chip Select 0 Control Register (r/w)
CS_WAIT_S equ 5 ; # of wait states
CS_WAIT_M equ 7 << CS_WAIT_S
CS_IO equ 1 << 4 ; Match I/O range
CS_EN equ 1 << 3 ; Enable Chip Select
CS0_BMC equ 0f0h ; Chip Select 0 Bus Mode Control Register (r/w)
BUS_MODE_S equ 6 ; Bus Mode
BUS_MODE_M equ 3 << BUS_MODE_S
BUS_MODE_EZ80 equ 0 << BUS_MODE_S ; eZ80 Mode
BUS_MODE_Z80 equ 1 << BUS_MODE_S ; Z80 Mode
BUS_MODE_INTEL equ 2 << BUS_MODE_S ; Intel Mode
BUS_MODE_MOTO equ 3 << BUS_MODE_S ; Motorola Mode
AD_MUX equ 1 << 5 ; Multiplexed Address/Data
BUS_CYCLE_S equ 0 ; Length of bus cycle
BUS_CYCLE_M equ 15 << BUS_CYCLE_S
CS1_LBR port 0abh ; Chip Select 1 Lower Bound Register (r/w)
CS1_UBR port 0ach ; Chip Select 1 Upper Bound Register (r/w)
CS1_CTL port 0adh ; Chip Select 1 Control Register (r/w)
CS1_BMC equ 0f1h ; Chip Select 1 Bus Mode Control Register (r/w)
CS2_LBR port 0aeh ; Chip Select 2 Lower Bound Register (r/w)
CS2_UBR port 0afh ; Chip Select 2 Upper Bound Register (r/w)
CS2_CTL port 0b0h ; Chip Select 2 Control Register (r/w)
CS2_BMC equ 0f2h ; Chip Select 2 Bus Mode Control Register (r/w)
CS3_LBR port 0b1h ; Chip Select 3 Lower Bound Register (r/w)
CS3_UBR port 0b2h ; Chip Select 3 Upper Bound Register (r/w)
CS3_CTL port 0b3h ; Chip Select 3 Control Register (r/w)
CS3_BMC equ 0f3h ; Chip Select 3 Bus Mode Control Register (r/w)
;----------------------------------------------------------------------------
; SPI
SPI_BRG_L port 0b8h ; SPI Baud Rate Generator Register - Low Byte
SPI_BRG_H port 0b9h ; SPI Baud Rate Generator Register - High Byte
__defspi "",0bah
IVEC_SPI label 7ch ; SPI Interrupt Vector
;----------------------------------------------------------------------------
; Infrared
IR_CTL port 0bfh ; Infrared Encoder/Decoder Control (r/w)
MIN_PULSE_S equ 4 ; Minimum receive pulse width control
MIN_PULSE_M equ 15 << MIN_PULSE_S
LOOP_BACK equ 1 << 2 ; Internal LOOP BACK mode
IR_RxEN equ 1 << 1 ; IR_RxD data is passed to UART0 RxD
IR_EN equ 1 << 0 ; Endec is disabled
;----------------------------------------------------------------------------
; UART 0
__defuart "0",0c0h
TCIE equ 1 << 4 ; UARTx_IER Transmission complete interrupt enable
FSTS equ 1 << 7 ; UARTx_IIR FIFO is enabled
INTSTS_TC equ 5 << INTSTS_S ; UARTx_IIR Transmission Complete
POLARITY equ 1 << 6 ; UARTx_MCR Invert Polarity of TxD and RxD signals
MDM equ 1 << 5 ; UARTx_MCR Multidrop Mode enable
IVEC_UART0 label 70h ; UART0 Interrupt Vector
;----------------------------------------------------------------------------
; I2C
__defi2c "",0c8h
IVEC_I2C label 78h ; I2C Interrupt Vector
;----------------------------------------------------------------------------
; UART 1
__defuart "1",0d0h
IVEC_UART1 label 74h ; UART1 Interrupt Vector
;----------------------------------------------------------------------------
; Low-Power Control
CLK_PPD1 port 0dbh ; Clock Peripheral Power-Down Register 1 (r/w)
GPIO_D_OFF equ 1 << 7 ; Power down system clock to GPIO Port D
GPIO_C_OFF equ 1 << 6 ; Power down system clock to GPIO Port C
GPIO_B_OFF equ 1 << 5 ; Power down system clock to GPIO Port B
GPIO_A_OFF equ 1 << 4 ; Power down system clock to GPIO Port A
SPI_OFF equ 1 << 3 ; Power down system clock to SPI
I2C_OFF equ 1 << 2 ; Power down system clock to I2C
UART1_OFF equ 1 << 1 ; Power down system clock to UART1
UART0_OFF equ 1 << 0 ; Power down system clock to UART0 and IrDA endec
CLK_PPD2 port 0dch ; Clock Peripheral Power-Down Register 2 (r/w)
PHI_OFF equ 1 << 7 ; Disable PHI Clock output
VBO_OFF equ 1 << 6 ; Disable voltage brownout detection circuit
TIMER3_OFF equ 1 << 3 ; Power down system clock to TIMER3
TIMER2_OFF equ 1 << 2 ; Power down system clock to TIMER2
TIMER1_OFF equ 1 << 1 ; Power down system clock to TIMER1
TIMER0_OFF equ 1 << 0 ; Power down system clock to TIMER0
;----------------------------------------------------------------------------
; Real-Time Clock
__defrtc
DAY_SAV equ 1 << 2 ; [RTC_CTL] Daylight Savings Time selected
IVEC_RTC label 6ch ; RTC Interrupt Vector
;----------------------------------------------------------------------------
; Flash Controller
__defflash
IVEC_FLASH label 50h
;----------------------------------------------------------------------------
restore
endif ; __reg80f91inc