Help for rewritten this code for the AD9833

Post your requests and ideas on the future development of mikroC.
Post Reply
Author
Message
mcu_chip
Posts: 53
Joined: 02 Mar 2009 17:52

Help for rewritten this code for the AD9833

#1 Post by mcu_chip » 17 Mar 2009 00:06

Hi all,

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             				;
     			;

Can sombody help me for written the source code for the AD9833 this is more difficulter

Post Reply

Return to “mikroC Wish List”