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

📄 ad9851测试.asm

📁 AD9851测试程序:通过调试成功可用。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        MOV   R6,#00H
        MOV   R5,#75H       ;30000K(30M) 直接用频率转换成16进制即可(单位KHz)
        MOV   R4,#30H       ;频率设定低位

        ACALL JSPL          ;频率字计算子程序(频率值放在R7~R4中单位K)

        MOV    R0,#FTW1     ;频率数据,最高字节
        MOV    R1,#04H      ;F1起始地址(04H~09H)
        MOV    R2,#6        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据

;*******扫频频率步进*********************************************************
        MOV   R7,#00H       ;频率设定高位
        MOV   R6,#00H
        MOV   R5,#00H       ;100K 直接用频率转换成16进制即可(单位KHz)
        MOV   R4,#64H       ;频率设定低位

        ACALL JSPL          ;频率字计算子程序(频率值放在R7~R4中单位K)

        MOV    R0,#FTW1     ;步进频率数据,最高字节
        MOV    R1,#10H      ;步进频率起始地址(10H~15H)
        MOV    R2,#6        ;位数
        DEC    R0
        DEC    R1

        ACALL  SEND         ;写地址及数据

;*******扫频驻留时间************************************************************************
;驻留时间=(N+1)*系统时钟周期  计算方法:N=驻留时间(us)*系统频率(MHz)-1  (N<=20位)
        mov   ftw1,#00H      ;00 75 30 (100uS\300M)
        mov   ftw2,#75h      ;
        mov   ftw3,#30h      ;驻留时间数据 100us

        MOV    R0,#FTW1     ;驻留时间数据,最高字节
        MOV    R1,#1AH      ;驻留时间起始地址(1AH~1CH)
        MOV    R2,#3        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据

;*******扫频时周期性产生外部更新时钟****************************************************
        MOV   address,#1FH  ;模式控制
        acall w_address
        MOV   FTW,#86H      ;模式由D4D3D2位决定、D7位ACC1=1扫频模式时由更新脉冲使其周期进行
        acall w_ftw         ;D0位=0外部时钟更新、D0位=1内部时钟更新

  MS4A: mov   p0,#04h       ;端口状态,并行编程模式
        setb  con_clk
        setb  UPDCLK        ;外部时钟更新脉冲
        clr   UPDCLK
        clr   con_clk
        MOV   TIMER5,#26    ;延时=TIMER5*1MS  26ms
        acall D1MS         ;(延时/驻留时间)*频率步长=扫描带宽
        ;ACALL  D2_5MS
        ajmp  MS4A

MS5:    CJNE  A,#05H,MS5    ;输出模式:0_单音,1_2FSK,2_ASK,3_AM,4_扫频

        MOV   address,#1FH  ;模式控制
        acall w_address
        MOV   FTW,#24H      ;模式由D4D3D2位决定、D7位ACC1=1扫频模式时由更新脉冲使其周期进行
        acall w_ftw         ;D0位=0外部时钟更新、D0位=1内部时钟更新

        mov   address,#21h  ;幅度字高字节地址
        acall w_address
        mov   ftw,#0ffh     ;幅度字高字节
        acall w_ftw
        mov   address,#22h  ;幅度字低字节地址
        acall w_address
        mov   ftw,#0ffh     ;幅度字低字节
        acall w_ftw
;*******起始频率*********************************************************
        MOV   R7,#00H       ;频率设定高位
        MOV   R6,#00H
        MOV   R5,#75H       ;30000K(30M)
        MOV   R4,#30H       ;频率设定低位

        ACALL JSPL          ;频率字计算子程序(频率值放在R7~R4中单位K)

        MOV    R0,#FTW1     ;频率数据,最高字节
        MOV    R1,#04H      ;F1起始地址(04H~09H)
        MOV    R2,#6        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据
;*******终止频率***********************************************************
        MOV   R7,#00H       ;频率设定高位
        MOV   R6,#00H
        MOV   R5,#79H       ;31000K(31M)
        MOV   R4,#18H       ;频率设定低位

        ACALL JSPL          ;频率字计算子程序(频率值放在R7~R4中单位K)

        MOV    R0,#FTW1     ;频率数据,最高字节
        MOV    R1,#04H      ;F1起始地址(04H~09H)
        MOV    R2,#6        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据
;*******频率步进*********************************************************
        MOV   R7,#00H       ;频率设定高位
        MOV   R6,#00H
        MOV   R5,#00H       ;25K
        MOV   R4,#19H       ;频率设定低位

        ACALL JSPL          ;频率字计算子程序(频率值放在R7~R4中单位K)

        MOV    R0,#FTW1     ;步进频率数据,最高字节
        MOV    R1,#10H      ;步进频率起始地址(10H~15H)
        MOV    R2,#6        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据

;*******驻留时间***************************************************************
;驻留时间=(N+1)*系统时钟周期  计算方法:N=驻留时间(us)*系统频率(MHz)  (N<=20位)
        mov   ftw1,#04H      ;04 93 E0 (1MS\300M)
        mov   ftw2,#93h
        mov   ftw3,#0E0h     ;驻留时间数据

        MOV    R0,#FTW1     ;驻留时间数据,最高字节
        MOV    R1,#1AH      ;驻留时间起始地址(1AH~1CH)
        MOV    R2,#3        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据
        AJMP   $

FDQZY:  MOV   A,#255       ;放大器增益
        clr   EN
        CLR   SCLK
        CLR   SDATA
        MOV   R3,#8
        CLR   C
FDQZY1: RLC   A
        MOV   SDATA,C
        SETB  SCLK
        NOP
        CLR   SCLK
        DJNZ  R3,FDQZY1
        SETB  EN
        RET

;*******写地址及数据***********************************
SEND:   INC    R0
        INC    R1
        MOV    address,R1
        acall  w_address
        MOV    A,@R0
        MOV    ftw,A
        acall  w_ftw
        DJNZ   R2,SEND
        RET

;*******写地址子程序*********************************
w_address:mov P0,address
        setb  addr_clk
        clr   addr_clk
        mov   p0,#04h        ;端口状态,并行编程模式
        setb  con_clk
        setb  wr
        clr   wr
        setb  UPDCLK         ;外部时钟更新脉冲产生
        clr   UPDCLK
        clr   con_clk
        ret

;*******数据字锁存子程序***************************************
w_ftw:  MOV   A,FTW         ;数据格式旋转180  板子上U2的接法问题
        MOV   20H,#00H      ;由D7 D6 D5 D4 D3 D2 D1 D0
        RRC   A             ;  D0 D1 D2 D3 D4 D5 D6 D7
        MOV   20H.7,C
        RRC   A
        MOV   20H.6,C
        RRC   A
        MOV   20H.5,C
        RRC   A
        MOV   20H.4,C
        RRC   A
        MOV   20H.3,C
        RRC   A
        MOV   20H.2,C
        RRC   A
        MOV   20H.1,C
        RRC   A
        MOV   20H.0,C
        mov   p0,20H
        setb  ftw_clk
        clr   ftw_clk       ;数据字锁存到外部寄存器
        Ret
;***************************************************************************
            MOV     R7,#00H     ;输出30M
            MOV     R6,#00H
            MOV     R5,#75H
            MOV     R4,#30H

        mov   TIMER5,#2
D100MS: MOV   TIMER6,#200      ;100ms
D100MS1:MOV   TIMER7,#248
        DJNZ  TIMER7,$
        DJNZ  TIMER6,D100MS1
        DJNZ  TIMER5,D100MS
        ret

        mov   TIMER5,#2
D50MS:  MOV   TIMER6,#100      ;50ms
D50MS1: MOV   TIMER7,#248
        DJNZ  TIMER7,$
        DJNZ  TIMER6,D50MS1
        DJNZ  TIMER5,D50MS
        ret

        mov   TIMER5,#1
D10MS:  MOV   TIMER6,#20      ;10ms
D10MS1: MOV   TIMER7,#248
        DJNZ  TIMER7,$
        DJNZ  TIMER6,D10MS1
        DJNZ  TIMER5,D10MS
        ret

        mov   TIMER5,#1
D1MS:   MOV   TIMER6,#2      ;1ms
D1MS1:  MOV   TIMER7,#248
        DJNZ  TIMER7,$
        DJNZ  TIMER6,D1MS1
        DJNZ  TIMER5,D1MS
        ret

D2_5MS: MOV   TIMER6,#10      ;2.5ms
D2_5MS1:MOV   TIMER7,#128
        DJNZ  TIMER7,$
        DJNZ  TIMER6,D2_5MS1
        RET

D125US: MOV   TIMER7,#61
        DJNZ  TIMER7,$
        RET

        END

⌨️ 快捷键说明

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