?? ad9851測試.asm
字號:
;**************************************************************************
;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 + -