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

📄 ad9851测试.asm

📁 AD9851测试程序:通过调试成功可用。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;**************************************************************************
;AD9852测试程序
;**************************************************************************
FTW_CLK  BIT    P1.1       ;高电平有效,选中数据锁存器,低电平锁存
ADDR_CLK BIT    P1.2       ;高电平有效,选中地址锁存器,低电平锁存
CON_CLK  BIT    P1.3       ;高电平有效,选中外部控制端驱运器,低电平锁存
UPDCLK   BIT    P0.0       ;更新时钟,上升沿锁存数据到编程寄存器
MRESET   BIT    P0.1       ;主复位端,高电平有效复位
SPMODE   BIT    P0.2       ;串并编程模式选择 0:串行 1:并行
WR       BIT    P0.3       ;写端口数据 上升沿锁存数据
RD       BIT    P0.4       ;读端口数据 高电平读
F_B_H    BIT    P0.5       ;FSK的数据输入端
OSK      BIT    P0.6       ;

SDATA    BIT   P3.0        ;AD8320数据端口
SCLK     BIT   P3.1        ;AD8320时钟端口
EN       BIT   P3.2        ;AD8320使能端口
PD       BIT   P3.3        ;AD8320功耗控制(=1)

ADDRESS  DATA   60H        ;地址寄存器
ftw1     data   61h        ;数据,最高字节
ftw2     data   62h
ftw3     data   63h
ftw4     data   64h
ftw5     data   65h
ftw6     data   66h        ;数据,最低字节
ftw      data   6Dh        ;61H~6DH用于频率控制字计算

MS       EQU    7BH        ;输出模式:0_单音,1_2FSK,2_ASK,3_AM,4_扫频
TIMER4   EQU    7CH
TIMER5   EQU    7DH
TIMER6   EQU    7EH
TIMER7   EQU    7FH
;**************************************************************************
        ORG   0000H
        AJMP  START
;**************************************************************************
START:  mov   p0,#00H
        clr   ftw_clk
        clr   addr_clk
        SETB  con_clk
        setb  mreset        ;初始化串行/并行编程总线
        NOP
        NOP
        clr   mreset        
       
        MOV   MS,#04H       ;输出模式:0_单音,1_2FSK,2_ASK,3_AM,4_扫频

MS0:    MOV   A,MS          ;输出模式:0_单音,1_2FSK,2_ASK,3_AM,4_扫频
        CJNE  A,#00H,MS1

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

        acall w_ftw
;*******单频输出频率*******************************************************************
        MOV   R7,#00H       ;频率设定高位
        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         ;写地址及数据
        AJMP   $

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

        MOV   address,#1FH  ;模式控制
        acall w_address
        MOV   FTW,#02H      ;模式由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
;*******起始频率(F1)*****************************************************
        MOV   R7,#00H       ;频率设定高位
        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         ;写地址及数据
;*******终止频率(F2)*****************************************************
        MOV   R7,#00H       ;频率设定高位
        MOV   R6,#00H
        MOV   R5,#7DH       ;32000K(32M)  直接用频率转换成16进制即可(单位KHz)
        MOV   R4,#00H       ;频率设定低位

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


        MOV    R0,#FTW1     ;终止频率数据,最高字节
        MOV    R1,#0AH      ;F2起始地址(0AH~0FH)
        MOV    R2,#6        ;位数
        DEC    R0
        DEC    R1
        ACALL  SEND         ;写地址及数据

  MS1A: mov   p0,#04h        ;端口状态,并行编程模式
        setb  con_clk
        SETB  F_B_H
        clr   con_clk
        MOV   TIMER5,#5
        acall D100MS
        mov   p0,#04h        ;端口状态,并行编程模式
        setb  con_clk
        CLR   F_B_H
        clr   con_clk
        MOV   TIMER5,#5
        acall D100MS
        ajmp  MS1A

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

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

        MOV   address,#20H  ;整形键控
        acall w_address
        MOV   FTW,#30H      ;OSK EN = 1 and OSK INT = 1
        acall w_ftw

        MOV   address,#25H  ;0幅度到满量幅度过渡时间地址
        acall w_address
        MOV   FTW,#80H      ;8位斜率计数器值N=3~256 (过渡时间t=4096*N/系统频率=4096*128/50000000=10.48576ms)
        acall w_ftw

;*******ASK频率**********************************************************************
        MOV   R7,#00H       ;频率设定高位
        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         ;写地址及数据
  MS2A: mov   p0,#04h       ;端口状态,并行编程模式
        setb  con_clk
        SETB  OSK
        clr   con_clk
        MOV   TIMER5,#5
        acall D100MS
        mov   p0,#04h        ;端口状态,并行编程模式
        setb  con_clk
        CLR   OSK
        clr   con_clk
        MOV   TIMER5,#5
        acall D100MS
        ajmp  MS2A

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

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

;*******AM输出频率********************************************************************
        MOV   R7,#00H       ;频率设定高位
        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
  MS3A: mov     address,#21h ;幅度字高字节地址
        acall   w_address

        Mov     A,R7
        MOV     DPTR,#TAB1
        MOVC    A,@A+DPTR
        mov     ftw,A         ;幅度字高字节
        acall   w_ftw

        mov     address,#22h  ;幅度字低字节地址
        acall   w_address

        Mov     A,R7
        MOV     DPTR,#TAB2
        MOVC    A,@A+DPTR
        mov     ftw,A         ;幅度字低字节
        acall   w_ftw

        CJNE    R7,#8,MS3B
        MOV     R7,#00H
        ACALL   D125uS
        AJMP    MS3A

  MS3B: INC     R7
        ACALL   D125uS
        AJMP    MS3A

  TAB1: db  0Dh,0Eh,0FFh,0Eh,0Dh,0Ch,0Bh,0Ch     ;最大0FFFH  最小0B32H
  TAB2: db  98h,0CBh,0FFh,0CBh,98h,65h,32h,65h   ;调幅度30%


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

        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       ;频率设定高位

⌨️ 快捷键说明

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