G
garg29
Guest
hi friends i tried interfacing ad7911 (10 bit serial adc) dengan 89c51 .. menggunakan kode di bawah ini .... tapi kode ini bekerja .. isnt siapa pun bisa membantu saya menemukan kesalahan outr ..
;************************************************* *************************
ADC_READ:
CLR CS; chip pilih = cs
NOP
MOV A, # 00h
MOV B, # 08H
ADC_LOOP:
SETB CLK; CLK = jam
NOP
CLR CLK
MOV C, DO; do = data dari adc
RLC A
DJNZ B, ADC_LOOP
MOV HIGH_A, AMOV B, # 08H
ADC_LOOP2:
SETB CLK
NOP
CLR CLK
MOV C, DO
RLC A
DJNZ B, ADC_LOOP2
MOV LOW_A, A
SETB CS
RET
;************************************************* *************************ADC_WRITE:
CLR CS
MOV A, # 00h
MOV B, # 08H
ADC_WRITE_LOOP:
RRC ACLR CLK
NOP
SETB CLKMOV DIN, C; din = data dari adc
DJNZ B, ADC_WRITE_LOOP
SETB CS
RET
;************************************************* ***************************
;************************************************* *************************
ADC_READ:
CLR CS; chip pilih = cs
NOP
MOV A, # 00h
MOV B, # 08H
ADC_LOOP:
SETB CLK; CLK = jam
NOP
CLR CLK
MOV C, DO; do = data dari adc
RLC A
DJNZ B, ADC_LOOP
MOV HIGH_A, AMOV B, # 08H
ADC_LOOP2:
SETB CLK
NOP
CLR CLK
MOV C, DO
RLC A
DJNZ B, ADC_LOOP2
MOV LOW_A, A
SETB CS
RET
;************************************************* *************************ADC_WRITE:
CLR CS
MOV A, # 00h
MOV B, # 08H
ADC_WRITE_LOOP:
RRC ACLR CLK
NOP
SETB CLKMOV DIN, C; din = data dari adc
DJNZ B, ADC_WRITE_LOOP
SETB CS
RET
;************************************************* ***************************