Professional Documents
Culture Documents
; PORT USAGE
; P0 FIFO output
; P1 TEST bit & ADC serial interface bits
; P2 UNUSED (DAC serial interface bits)
; P3 SINGLE BIT I/O
; IO BITS
MAJF BIT P3.0
;MINF BIT P3.1
PPS1 BIT P3.2
;INT1 BIT P3.3
; BIT P3.4 ; (NOT USED)
EVENT BIT P3.5
;WR BIT P3.6 ;LOAD FIFO
; BIT P3.7
; IO BITS
TST BIT P1.1 ;PAYLOAD TEST INPUT
;REG USAGE
;R0 SCRATCH
;R1 MAG X ADC high word
;R2 MAG Y ADC high word
;R3 MAG Z ADC high word
;R4 MAG X ADC low word
;R5 MAG Y ADC low word
;R6 MAG Z ADC low word
;R7
;INTERNAL RAM
;directive added to make MetaLink ASM51.EXE happy:
DSEG ;directly addressable Data memory SEGment definition
ORG 8H
IGNORE: DS 3
VEC1L: DS 1
VEC1H: DS 1
DS 8
ORG 3FH
STACK: DS 8
; ---------------------------------
ORG 13H
; External INT 1 vectors to here, so each external INT 1 will jump via this
; dispatch code to the appropriate PROGn
INTV1:
MOV SP,#VEC1H ;1us JUMP INDIRECT THRU VEC BY LOADING SP
RETI ;1us AND DOING A RET
; ---------------------------------
MOV SP,#STACK
CLR ADCK
MOV VEC1H,#01H
MOV VEC1L,#00H ;1us 100H LEAVES ROOM FOR RESET CODE
MOV TCON,#04H ;1us EDGE TRIG FOR INT1
MOV R1,#11 ;INITIALIZE DATA VALUES TO TEST VALUES in same order they will be output
MOV R4,#22
MOV R2,#55
MOV R5,#66
MOV R3,#33
MOV R6,#44
MOV R0,#7 ;SKIP HIGHEST EIGHT BITS WHICH ARE ALL ZEROS
;use 7 not 8 here because first bit is shifted out
;by selecting the chip, so need only shift 7 more out
;Originally used 8 here because of misunderstanding, so
;lowest bit of LSByte was always 0 and values were x2
NXBIT3:
MOV A,R2
MOV C,ADY ;READ Y BIT
SETB ADCK
RLC A ;SHIFT IT
MOV A,R3
MOV C,ADZ ;READ Z BIT
RLC A ;SHIFT IT
CLR ADCK
DJNZ R0,NXBIT3
NXBIT:
MOV A,R2
MOV C,ADY ;READ Y BIT
SETB ADCK
RLC A ;SHIFT IT
MOV R2,A ;SAVE Y RESULT IN R2
MOV A,R3
MOV C,ADZ ;READ Z BIT
RLC A ;SHIFT IT
MOV R3,A ;SAVE Z RESULT IN R2
CLR ADCK
DJNZ R0,NXBIT
NXBIT2:
MOV A,R4 ;??us/BIT
MOV C,ADX ;READ X BIT
RLC A ;SHIFT IT
MOV R4,A ;SAVE X RESULT IN R4
MOV A,R5
MOV C,ADY ;READ Y BIT
SETB ADCK
RLC A ;SHIFT IT
MOV R5,A ;SAVE Y RESULT IN R5
MOV A,R6
MOV C,ADZ ;READ Z BIT
RLC A ;SHIFT IT
MOV R6,A ;SAVE Z RESULT IN R6
CLR ADCK
DJNZ R0,NXBIT2
MOV SP,#STACK
MOV IE,#84H ;1us ENABLE EXT INT1
JMP WT
;-------------------------------------------------------
ORG 100H
PROG0:
CLR ADCK ;CLEAR sclk prior to starting conversion
CLR ADCS ;START CONVERSION prior to writing out previous values
JMP RDMAG
END