mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.2 KiB
116 lines
3.2 KiB
;==================================================================================================
|
|
; PCF8584 Generic
|
|
;==================================================================================================
|
|
;
|
|
PCF_BASE .EQU 0F0H
|
|
PCF_ID .EQU 0AAH
|
|
CPU_CLK .EQU 12
|
|
|
|
PCF_RS0 .EQU PCF_BASE
|
|
PCF_RS1 .EQU PCF_RS0+1
|
|
PCF_OWN .EQU (PCF_ID >> 1) ; PCF'S ADDRESS IN SLAVE MODE
|
|
|
|
REGS0 .EQU PCF_BASE
|
|
REGS1 .EQU REGS0+1
|
|
;
|
|
;T4LC512D .EQU 10100000B ; DEVICE IDENTIFIER
|
|
;T4LC512A1 .EQU 00000000B ; DEVICE ADDRESS
|
|
;T4LC512A2 .EQU 00001110B ; DEVICE ADDRESS
|
|
;T4LC512A3 .EQU 00000010B ; DEVICE ADDRESS
|
|
;T4LC512W .EQU 00000000B ; DEVICE WRITE
|
|
;T4LC512R .EQU 00000001B ; DEVICE READ
|
|
;
|
|
;I2CDEV1W .EQU (T4LC512D+T4LC512A1+T4LC512W)
|
|
;I2CDEV1R .EQU (T4LC512D+T4LC512A1+T4LC512R)
|
|
;
|
|
;I2CDEV2W .EQU (T4LC512D+T4LC512A2+T4LC512W)
|
|
;I2CDEV2R .EQU (T4LC512D+T4LC512A2+T4LC512R)
|
|
;
|
|
;I2CDEV3W .EQU (T4LC512D+T4LC512A3+T4LC512W)
|
|
;I2CDEV3R .EQU (T4LC512D+T4LC512A3+T4LC512R)
|
|
;
|
|
; CONTROL REGISTER BITS
|
|
;
|
|
PCF_PIN .EQU 10000000B
|
|
PCF_ES0 .EQU 01000000B
|
|
PCF_ES1 .EQU 00100000B
|
|
PCF_ES2 .EQU 00010000B
|
|
PCF_EN1 .EQU 00001000B
|
|
PCF_STA .EQU 00000100B
|
|
PCF_STO .EQU 00000010B
|
|
PCF_ACK .EQU 00000001B
|
|
;
|
|
PCF_START_ .EQU (PCF_PIN | PCF_ES0 | PCF_STA | PCF_ACK)
|
|
PCF_STOP_ .EQU (PCF_PIN | PCF_ES0 | PCF_STO | PCF_ACK)
|
|
PCF_REPSTART_ .EQU ( PCF_ES0 | PCF_STA | PCF_ACK)
|
|
PCF_IDLE_ .EQU (PCF_PIN | PCF_ES0 | PCF_ACK)
|
|
;
|
|
; STATUS REGISTER BITS
|
|
;
|
|
;PCF_PIN .EQU 10000000B
|
|
PCF_INI .EQU 01000000B ; 1 if not initialized
|
|
PCF_STS .EQU 00100000B
|
|
PCF_BER .EQU 00010000B
|
|
PCF_AD0 .EQU 00001000B
|
|
PCF_LRB .EQU 00001000B
|
|
PCF_AAS .EQU 00000100B
|
|
PCF_LAB .EQU 00000010B
|
|
PCF_BB .EQU 00000001B
|
|
;
|
|
; CLOCK CHIP FREQUENCIES
|
|
;
|
|
PCF_CLK3 .EQU 000H
|
|
PCF_CLK443 .EQU 010H
|
|
PCF_CLK6 .EQU 014H
|
|
PCF_CLK8 .EQU 018H
|
|
PCF_CLK12 .EQU 01cH
|
|
;
|
|
; TRANSMISSION FREQUENCIES
|
|
;
|
|
PCF_TRNS90 .EQU 000H ; 90 kHz */
|
|
PCF_TRNS45 .EQU 001H ; 45 kHz */
|
|
PCF_TRNS11 .EQU 002H ; 11 kHz */
|
|
PCF_TRNS15 .EQU 003H ; 1.5 kHz */
|
|
;
|
|
; TIMEOUT AND DELAY VALUES (ARBITRARY)
|
|
;
|
|
PCF_PINTO .EQU 65000
|
|
PCF_ACKTO .EQU 65000
|
|
PCF_BBTO .EQU 65000
|
|
PCF_LABDLY .EQU 65000
|
|
;
|
|
; DATA PORT REGISTERS
|
|
;
|
|
#IF (CPU_CLK = 443)
|
|
PCF_CLK .EQU PCF_CLK443
|
|
#ELSE
|
|
#IF (CPU_CLK = 8)
|
|
PCF_CLK .EQU PCF_CLK8
|
|
#ELSE
|
|
#IF (CPU_CLK = 12)
|
|
PCF_CLK .EQU PCF_CLK12
|
|
#ELSE ***ERROR
|
|
#ENDIF
|
|
#ENDIF
|
|
#ENDIF
|
|
;
|
|
DS7_OUT .EQU 10000000B ; SELECT SQUARE WAVE FUNCTION
|
|
DS7_SQWE .EQU 00010000B ; ENABLE SQUARE WAVE OUTPUT
|
|
DS7_RATE .EQU 00000000B ; SET 1HZ OUPUT
|
|
;
|
|
DS7_DS1307 .EQU 11010000B ; DEVICE IDENTIFIER
|
|
DS7_W .EQU 00000000B ; DEVICE WRITE
|
|
DS7_R .EQU 00000001B ; DEVICE READ
|
|
;
|
|
DS7_READ .EQU (DS7_DS1307 | DS7_R) ; READ
|
|
DS7_WRITE .EQU (DS7_DS1307 | DS7_W) ; WRITE
|
|
;
|
|
DS7_CTL .EQU (DS7_OUT | DS7_SQWE | DS7_RATE)
|
|
;
|
|
PCF8574 .EQU 01000000B ; DEVICE IDENTIFIER
|
|
PCF8574A .EQU 00001110B ; DEVICE ADDRESS
|
|
PCF8574W .EQU 00000000B ; DEVICE WRITE
|
|
PCF8574R .EQU 00000001B ; DEVICE READ
|
|
;
|
|
I2CLCDR .EQU (PCF8574+PCF8574A+PCF8574R)
|
|
I2CLCDW .EQU (PCF8574+PCF8574A+PCF8574W)
|
|
|