
DAC8562
REV. A
–15–
DAC8562 – M68HC11 Interface Program Source Code
*
* DAC8562 to M68HC11 Interface Assembly Program
* Adolfo A. Garcia
* September 14, 1992
*
* M68HC11 Register definitions
*
PORTB
EQU
$1004
PORTC
EQU
$1003
Port C control register
*
“0,0,0,0;0,CLR/,CE/,MSB-LSB/”
DDRC
EQU
$1007
Port C data direction
*
* RAM variables:
MSBS are encoded from 0 (Hex) to F (Hex)
*
LSBS are encoded from 00 (Hex) to F (Hex)
*
DAC requires two 8-bit loads
*
MSBS
EQU
$00
Hi-byte: “0,0,0,0;MSB,DB10,DB9,DB8”
LSBS
EQU
$01
Lo-byte: “DB7,DB6,DB5,DB4;DB3,DB2,
DB1,DB0”
*
* Main Program
*
ORG
$C000
Start of user’s RAM in EVB
INIT
LDS
#$CFFF
Top of C page RAM
*
* Initialize Port C Outputs
*
LDAA
#$07
0,0,0,0;0,1,1,1
STAA
DDRC
CLR/,CE/, and MSB-LSB/ are now enabled
as outputs
LDAA
#$06
0,0.0,0;0,1,1,0
*
CLR/-Hi, CE/-Hi, MSB-LSB/-Lo
STAA
PORTC
Initialize Port C Outputs
*
* Call update subroutine
*
BSR
UPDATE
Xfer 2 8-bit words to DAC8562
JMP
$E000
Restart BUFFALO
*
* Subroutine UPDATE
*
UPDATE
PSHX
Save registers X, Y, and A
PSHY
PSHA
*
* Enter contents of the Hi-byte input register
*
LDAA
#$0A
0,0,0,0;1,0,1,0
STAA
MSBS
MSBS are set to 0A (Hex)
*
* Enter Contents of’ Lo-byte input register
*
LDAA
#$AA
1,0,1,0;1,0,1,0
STAA
LSBS
LSBS are set to AA (Hex)
*
LDX
#MSBS
Stack pointer at 1st byte to send via Port B
LDY
#$1000
Stack pointer at on-chip registers
*
* Clear DAC output to zero
*
BCLR
PORTC,Y $04
Assert CLR/
BSET
PORTC,Y $04
De-assert CLR/
*
* Loading input buffer latches
*
BSET
PORTC,Y $01
Set hi-byte register load
TFRLP
LDAA
0,X
Get a byte to transfer via Port B
STAA
PORTB
Write data to input register
INX
Increment counter to next byte for transfer
CPX
#LSBS+1
Are we done yet ?
BEQ
DUMP
If yes, update DAC output
BCLR
PORTC,Y $01
Latch hi-byte register and set lo-byte register
load
BRA
TFRLP
*
DAC8562–M68HC11 Interface Program Source Code (Continued)
* Update DAC output with contents of input registers
*
DUMP
BCLR
PORTC,Y $02
Assert CE/
BSET
PORTC,Y $02
Latch DAC register
*
PULA
When done, restore registers X, Y & A
PULY
PULX
RTS
** Return to Main Program **