⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dacsync.asm

📁 aduc842原程序代码 ad公司芯片应用笔记
💻 ASM
字号:
;********************************************************************
;
; Author        : ADI - Apps            www.analog.com/MicroConverter
;
; Date          : October 2003
;
; File          : DACsync.asm
;
; Hardware      : ADuC842
;
; Description   : Outputs sine waves on DAC0 and DAC1 at 590Hz.
;                 Output signals are in quadrature with eachother,
;                 DAC1 leading DAC0 by 90 degrees.  the SYNC bit is
;                 used to ensure that both DAC outputs update
;                 simultaneously thus avoiding a phase error of 0.625
;                 degrees.
;                
;
;********************************************************************

$MOD842                         ; Use 8052&ADuC842 predefined symbols

LED     EQU     P3.4            ; P3.4 drives red LED on eval board

;____________________________________________________________________
                                                  ; BEGINNING OF CODE
CSEG

ORG 0000h
	MOV	ADCCON1,#80H
	MOV	PLLCON,#03H	; 
        MOV     DACCON,#01Fh    ; both DACs on,12bit,asynchronous
        MOV     DAC0H,#008h
        MOV     DAC0L,#000h     ; DAC0 to mid-scale
        MOV     DAC1H,#00Fh
        MOV     DAC1L,#0FFh     ; DAC1 to full-scale

        MOV     DPTR,#TABLE

STEP:   ANL     DACCON,#0FBh    ; clear SYNC bit                    

        CLR     A               ;                                   
        MOVC    A,@A+DPTR       ; get high byte for mainDAC..       
        MOV     DAC0H,A         ; ..and move it into DAC0 register  
        MOV     A,#020h         ; offset by 90deg for quadratureDAC 
        MOVC    A,@A+DPTR       ; get high byte for quadratureDAC.. 
        MOV     DAC1H,A         ; ..and move it into DAC1 register  
        INC     DPTR            ; move on to get low bytes          

        CLR     A               ;                                   
        MOVC    A,@A+DPTR       ; get low byte for mainDAC..        
        MOV     DAC0L,A         ; ..and update DAC0                 
        MOV     A,#020h         ; offset by 90deg for quadratureDAC 
        MOVC    A,@A+DPTR       ; get low byte for quadratureDAC..  
        MOV     DAC1L,A         ; ..and update DAC1                 
        INC     DPTR            ; move on for next data point       

        ORL     DACCON,#004h    ; set SYNC bit                      

        ANL     DPL,#07Fh       ; wrap around at end of table       

        MOV     A,DAC0H         ;                                   
        MOV     C,ACC.3         ; MSB of DAC0 value                 
        MOV     LED,C           ; LED = MSB of DAC0                 

        NOP                     ;                                   
        NOP                     ;                                   

        JMP     STEP            ;                                   



;____________________________________________________________________
                                                  ; SINE LOOKUP TABLE
ORG 01000h

TABLE:

DB  007h, 0FFh
DB  008h, 0C8h
DB  009h, 08Eh
DB  00Ah, 051h
DB  00Bh, 00Fh
DB  00Bh, 0C4h
DB  00Ch, 071h
DB  00Dh, 012h
DB  00Dh, 0A7h
DB  00Eh, 02Eh
DB  00Eh, 0A5h
DB  00Fh, 00Dh
DB  00Fh, 063h
DB  00Fh, 0A6h
DB  00Fh, 0D7h
DB  00Fh, 0F5h
DB  00Fh, 0FFh
DB  00Fh, 0F5h
DB  00Fh, 0D7h
DB  00Fh, 0A6h
DB  00Fh, 063h
DB  00Fh, 00Dh
DB  00Eh, 0A5h
DB  00Eh, 02Eh
DB  00Dh, 0A7h
DB  00Dh, 012h
DB  00Ch, 071h
DB  00Bh, 0C4h
DB  00Bh, 00Fh
DB  00Ah, 051h
DB  009h, 08Eh
DB  008h, 0C8h
DB  007h, 0FFh
DB  007h, 036h
DB  006h, 070h
DB  005h, 0ADh
DB  004h, 0EFh
DB  004h, 03Ah
DB  003h, 08Dh
DB  002h, 0ECh
DB  002h, 057h
DB  001h, 0D0h
DB  001h, 059h
DB  000h, 0F1h
DB  000h, 09Bh
DB  000h, 058h
DB  000h, 027h
DB  000h, 009h
DB  000h, 000h
DB  000h, 009h
DB  000h, 027h
DB  000h, 058h
DB  000h, 09Bh
DB  000h, 0F1h
DB  001h, 059h
DB  001h, 0D0h
DB  002h, 057h
DB  002h, 0ECh
DB  003h, 08Dh
DB  004h, 03Ah
DB  004h, 0EFh
DB  005h, 0ADh
DB  006h, 070h
DB  007h, 036h          ; end of table

DB  007h, 0FFh          ; repeat first 90degrees for quadratureDAC
DB  008h, 0C8h
DB  009h, 08Eh
DB  00Ah, 051h
DB  00Bh, 00Fh
DB  00Bh, 0C4h
DB  00Ch, 071h
DB  00Dh, 012h
DB  00Dh, 0A7h
DB  00Eh, 02Eh
DB  00Eh, 0A5h
DB  00Fh, 00Dh
DB  00Fh, 063h
DB  00Fh, 0A6h
DB  00Fh, 0D7h
DB  00Fh, 0F5h
DB  00Fh, 0FFh

;____________________________________________________________________

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -