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