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

📄 main.s

📁 基于AVR单片机的AD9852的驱动程序
💻 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 + -