📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile D:\RJ\Project\AVR\AD9852/AD9852.h
.dbfunc e AD9852_ByteSend _AD9852_ByteSend fV
; i -> R20
; dat -> R16
.even
_AD9852_ByteSend::
xcall push_gset1
.dbline -1
.dbline 37
; #include <iom16v.h>
; #include "AD9852.h"
;
; //送入9852的数据缓冲区,初始化为控制寄存器值,使能PLL,5倍频,外部刷新
; unsigned char AD9852_Data[]={0x10,0x45,0x00,0x60,0x00,0x00};
;
; void delay_us(unsigned int us)
; {
; while (--us);
; {
; us++;
; us--;
; }
; }
;
; void AD9852_DataPost(unsigned char Addr, unsigned char *pDat, unsigned char DataLen)
; {
; unsigned char i=0;
;
; AD9852_Set_IORESET();
; asm("nop");
; AD9852_Clr_IORESET();
;
; i=Addr;
; AD9852_ByteSend(i);
;
; for (i=0;i<DataLen;i++)
; {
; AD9852_ByteSend(pDat[i]);
; }
;
; AD9852_Set_IOUD();
; asm("nop");
; AD9852_Clr_IOUD();
; }
;
; void AD9852_Init()
.dbline 39
; {
;
clr R20
xjmp L5
L2:
.dbline 40
; AD9852_CTRL_DDR |= ((0x01<<AD9852_IORESET)|(0x01<<AD9852_SCLK)|(0x01<<AD9852_MasterReset)|(0x01<<AD9852_CLKPOWER)|(0x01<<AD9852_IOUD)|(0x01<<AD9852_SDIO));
.dbline 41
;
sbi 0x17,3
.dbline 41
cbi 0x18,3
.dbline 42
; AD9852_CTRL_PORT &= (~((0x01<<AD9852_CLKPOWER)|(0x01<<AD9852_IOUD)));
nop
.dbline 43
; AD9852_CTRL_PORT |= ((0x01<<AD9852_IORESET)|(0x01<<AD9852_SCLK)|(0x01<<AD9852_MasterReset));
sbrs R16,7
rjmp L6
.dbline 44
;
.dbline 45
; delay_us(500);
sbi 0x17,6
.dbline 45
sbi 0x18,6
.dbline 46
;
xjmp L7
L6:
.dbline 48
; AD9852_Clr_MasterReset(); //AD9852复位
; asm("nop");
.dbline 49
; AD9852_Set_MasterReset();
sbi 0x17,6
.dbline 49
cbi 0x18,6
.dbline 50
; asm("nop");
L7:
.dbline 51
nop
.dbline 52
sbi 0x17,3
.dbline 52
sbi 0x18,3
.dbline 53
lsl R16
.dbline 54
L3:
.dbline 39
inc R20
L5:
.dbline 39
cpi R20,8
brlo L2
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r dat 16 c
.dbend
.area data(ram, con, rel)
.dbfile D:\RJ\Project\AVR\AD9852/AD9852.h
_AD9852_Data::
.blkb 2
.area idata
.byte 16,'E
.area data(ram, con, rel)
.dbfile D:\RJ\Project\AVR\AD9852/AD9852.h
.blkb 2
.area idata
.byte 0,96
.area data(ram, con, rel)
.dbfile D:\RJ\Project\AVR\AD9852/AD9852.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\RJ\Project\AVR\AD9852/AD9852.h
.dbfile D:\RJ\Project\AVR\AD9852\main.c
.dbsym e AD9852_Data _AD9852_Data A[6:6]c
.area text(rom, con, rel)
.dbfile D:\RJ\Project\AVR\AD9852\main.c
.dbfunc e delay_us _delay_us fV
; us -> R16,R17
.even
_delay_us::
.dbline -1
.dbline 8
L9:
.dbline 9
L10:
.dbline 9
movw R24,R16
sbiw R24,1
movw R16,R24
cpi R16,0
cpc R16,R17
brne L9
X0:
.dbline 10
.dbline 11
subi R16,255 ; offset = 1
sbci R17,255
.dbline 12
subi R16,1
sbci R17,0
.dbline 13
.dbline -2
L8:
.dbline 0 ; func end
ret
.dbsym r us 16 i
.dbend
.dbfunc e AD9852_DataPost _AD9852_DataPost fV
; i -> R20
; DataLen -> R22
; pDat -> R10,R11
; Addr -> R12
.even
_AD9852_DataPost::
xcall push_gset4
movw R10,R18
mov R12,R16
ldd R22,y+8
.dbline -1
.dbline 17
.dbline 18
clr R20
.dbline 20
sbi 0x17,5
.dbline 20
sbi 0x18,5
.dbline 21
nop
.dbline 22
sbi 0x17,5
.dbline 22
cbi 0x18,5
.dbline 24
mov R20,R12
.dbline 25
mov R16,R20
xcall _AD9852_ByteSend
.dbline 27
clr R20
xjmp L16
L13:
.dbline 28
.dbline 29
mov R30,R20
clr R31
add R30,R10
adc R31,R11
ldd R16,z+0
xcall _AD9852_ByteSend
.dbline 30
L14:
.dbline 27
inc R20
L16:
.dbline 27
cp R20,R22
brlo L13
.dbline 32
sbi 0x17,7
.dbline 32
sbi 0x18,7
.dbline 33
nop
.dbline 34
sbi 0x17,7
.dbline 34
cbi 0x18,7
.dbline -2
L12:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r DataLen 22 c
.dbsym r pDat 10 pc
.dbsym r Addr 12 c
.dbend
.dbfunc e AD9852_Init _AD9852_Init fV
.even
_AD9852_Init::
sbiw R28,1
.dbline -1
.dbline 38
.dbline 40
in R24,0x17
ori R24,237
out 0x17,R24
.dbline 42
in R24,0x18
andi R24,123
out 0x18,R24
.dbline 43
in R24,0x18
ori R24,41
out 0x18,R24
.dbline 45
ldi R16,500
ldi R17,1
xcall _delay_us
.dbline 47
sbi 0x17,0
.dbline 47
cbi 0x18,0
.dbline 48
nop
.dbline 49
sbi 0x17,0
.dbline 49
sbi 0x18,0
.dbline 50
nop
.dbline 51
; AD9852_Clr_MasterReset();
sbi 0x17,0
.dbline 51
cbi 0x18,0
.dbline 52
; asm("nop");
nop
.dbline 54
;
; AD9852_DataPost(0x07,AD9852_Data,4); //送入初始控制字
ldi R24,4
std y+0,R24
ldi R18,<_AD9852_Data
ldi R19,>_AD9852_Data
ldi R16,7
xcall _AD9852_DataPost
.dbline 55
; delay_us(1000);
ldi R16,1000
ldi R17,3
xcall _delay_us
.dbline 56
; AD9852_Set_CLKPOWER(); //启动晶振
sbi 0x17,2
.dbline 56
sbi 0x18,2
.dbline -2
L17:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fI
.even
_main::
sbiw R28,1
.dbline -1
.dbline 60
; }
;
; int main ()
; {
.dbline 61
; DDRC = 0xff;
ldi R24,255
out 0x14,R24
.dbline 62
; PORTC = 0xff;
out 0x15,R24
.dbline 65
;
;
; delay_us(2000);
ldi R16,2000
ldi R17,7
xcall _delay_us
.dbline 66
; delay_us(2000);
ldi R16,2000
ldi R17,7
xcall _delay_us
.dbline 68
;
; AD9852_Init(); //AD9852初始化
xcall _AD9852_Init
.dbline 69
; AD9852_DataPost(0x07,AD9852_Data,4); //送入初始控制字
ldi R24,4
std y+0,R24
ldi R18,<_AD9852_Data
ldi R19,>_AD9852_Data
ldi R16,7
xcall _AD9852_DataPost
.dbline 70
; delay_us(200);
ldi R16,200
ldi R17,0
xcall _delay_us
.dbline 72
;
; AD9852_Data[0]=0x0f; //满幅
ldi R24,15
sts _AD9852_Data,R24
.dbline 73
; AD9852_Data[1]=0xff;
ldi R24,255
sts _AD9852_Data+1,R24
.dbline 74
; AD9852_DataPost(0x08,AD9852_Data,2);
ldi R24,2
std y+0,R24
ldi R18,<_AD9852_Data
ldi R19,>_AD9852_Data
ldi R16,8
xcall _AD9852_DataPost
.dbline 75
; delay_us(200);
ldi R16,200
ldi R17,0
xcall _delay_us
.dbline 77
;
; AD9852_Data[0]=0x19; //10M
ldi R24,25
sts _AD9852_Data,R24
.dbline 78
; AD9852_Data[1]=0x99;
ldi R24,153
sts _AD9852_Data+1,R24
.dbline 79
; AD9852_Data[2]=0x99;
sts _AD9852_Data+2,R24
.dbline 80
; AD9852_Data[3]=0x99;
sts _AD9852_Data+3,R24
.dbline 81
; AD9852_Data[4]=0x99;
sts _AD9852_Data+4,R24
.dbline 82
; AD9852_Data[5]=0x99;
sts _AD9852_Data+5,R24
.dbline 83
; AD9852_DataPost(0x02,AD9852_Data,6);
ldi R24,6
std y+0,R24
ldi R18,<_AD9852_Data
ldi R19,>_AD9852_Data
ldi R16,2
xcall _AD9852_DataPost
.dbline 84
; delay_us(200);
ldi R16,200
ldi R17,0
xcall _delay_us
L25:
.dbline 85
L26:
.dbline 85
; while (1);
xjmp L25
X1:
.dbline 86
; return 0;
clr R16
clr R17
.dbline -2
L18:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -