Can somebody help me how I can change my code for my other DDS AD9833. I would like prefer this in Micro C
Code: Select all
; ===================================================
; Subroutine AD9835
; ==============================================+====
AD9835: BSF SDCLK, SDCLK_BIT ; Clock output = "1"
BCF FSYNC, FSYNC_BIT ; FSYNC = "0"
MOVLW 0x08 ; Load 8 bit data
MOVWF DDS_DATA ; DDS_DATA_BUFFER = 0x08
DDS_LOOP: BTFSS DDS_HIGH,7 ; if DDS_HIGH.7 == 1 ?
GOTO DDS_OB ; no,
BSF SDATA, SDATA_BIT ; SDATA = 1
GOTO DDS_BIT
DDS_0B: BCF SDATA, SDATA_BIT ; SDATA = 0
DDS_BIT: RLF DDS_HIGH, F ; Multiply DDS_HIGH with *2^N
BCF SDCLK, SDCLK_BIT ; Clock Output = "0"
BSF SDCLK, SDCLK_BIT ; Clock Output = "1"
DECFSZ DDS_DATA ; repeat until DDS_DATA == 0
GOTO DDS_LOOP ; Nog niet 0
MOVWF 0x08 ; load the next bits data
MOVWF DDS_DATA ; DDS_DATA_BUFFER = 0x08
DDS_LOOPA: BTFSS DDS_LOW,7 ; test if DDS_LOW.7 == 1 ?
GOTO DDS_0A ; no
BSF SDATA, SDATA_BIT ; yes, SDATA = 1
GOTO DDS_LABEL ;
DDS_0A: BCF SDDATA,SDATA_BIT ; SDATA = 0
DDS_LABEL: RLF DDS_LOW,F ; Multiply DDS_HIGH with *2^N
BCF SDCLK, SDCLK_BIT ; Clock = 0
BSF SDCLK, SDCLK_BIT ; Clock = 1
DECFSZ DDS_DATA,F ; repeat until DDS_DATA == 0 ?
GOTO DDS_LOOPA ; No, repeat
BSF FSYNC,FSYNC_BIT ; FSYNC = 1
RETURN
; ===============================================================
; Init Init and Example
; ===============================================================
DDS_INIT: MOVLW B'10100000' ; SYNK and SELSRC
MOVWF DDS_HIGH ; DDS_HIGH = 0xA0
CLRF DDS_LOW ; DDS_LOW = 0x00
CALL AD9835 ;
MOVLW B'11000000' ;
MOVWF DDS_HIGH ; DDS_HIGH = 0xC0
CLRF DDS_LOW ; DDS_LOW = 0x00
CALL AD9835 ;
;=============================================================
;Example set frekvens to 1/50000 of crystal frequency
;1/50000 = 00 01 4F 8B
;=============================================================
MOVLW B'00110000' ;
MOVWF DDS_HIGH ; DDS_HIGH = 0x30
MOVLW 8BH ;
MOVWF DDS_LOW ; DDS_LOW = 0x8B
CALL AD9835 ;
MOVLW B'00100001' ;
MOVWF DDS_HIGH ; DDS_HIGH = 0x21
MOVLW 4FH ;
MOVWF DDS_LOW ; DDS_LOW = 0x4F
CALL AD9835 ;
MOVLW B'00110010' ;
MOVWF DDS_HIGH ; DDS_HIGH = 0x32
MOVLW 01H ;
MOVWF DDS_LOW ; DDS_LOW = 0x01
CALL AD9835 ;
MOVLW B'00100011' ;
MOVWF DDS_HIGH ; DDS_HIGH = 0x23
MOVLW 00H ;
MOVWF DDS_LOW ; DDS_LOW = 0x00
CALL AD9835 ;
RETURN ;
;