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

📄 main.lss

📁 AD9833型高精度可编程波形发生器及其应用
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 182:	d3 df       	rcall	.-90     	; 0x12a
	Write_word(0x4000);	//写频率0寄存器的高字节MSB
 184:	80 e0       	ldi	r24, 0x00	; 0
 186:	90 e4       	ldi	r25, 0x40	; 64
 188:	d0 df       	rcall	.-96     	; 0x12a
	Write_word(0x2900);	//28位连续,选择频率0,相位0,RESET=1
 18a:	80 e0       	ldi	r24, 0x00	; 0
 18c:	99 e2       	ldi	r25, 0x29	; 41
 18e:	cd df       	rcall	.-102    	; 0x12a
	Write_word(0x8000);	//写频率0寄存器的低字节LSB
 190:	80 e0       	ldi	r24, 0x00	; 0
 192:	90 e8       	ldi	r25, 0x80	; 128
 194:	ca df       	rcall	.-108    	; 0x12a
	Write_word(0x8000);	//写频率0寄存器的高字节MSB
 196:	80 e0       	ldi	r24, 0x00	; 0
 198:	90 e8       	ldi	r25, 0x80	; 128
 19a:	c7 df       	rcall	.-114    	; 0x12a
	Write_word(0xC000);	//写频率0寄存器的低字节LSB
 19c:	80 e0       	ldi	r24, 0x00	; 0
 19e:	90 ec       	ldi	r25, 0xC0	; 192
 1a0:	c4 df       	rcall	.-120    	; 0x12a
	Write_word(0xF000);	//写频率0寄存器的高字节MSB
 1a2:	80 e0       	ldi	r24, 0x00	; 0
 1a4:	90 ef       	ldi	r25, 0xF0	; 240
 1a6:	c1 df       	rcall	.-126    	; 0x12a
	Write_word(0x2000);	//28位连续,选择频率0,相位0,RESET=0	
 1a8:	80 e0       	ldi	r24, 0x00	; 0
 1aa:	90 e2       	ldi	r25, 0x20	; 32
 1ac:	be df       	rcall	.-132    	; 0x12a
 1ae:	08 95       	ret

000001b0 <output>:
}

//------------------------------------------------------------------
//output	:AD9833输出指定频率的正弦波
//
//输入参数:freq_value	类型:unsigned long
//输出参数:无
//------------------------------------------------------------------
void output(unsigned long freq_value)
{
 1b0:	ef 92       	push	r14
 1b2:	ff 92       	push	r15
 1b4:	0f 93       	push	r16
 1b6:	1f 93       	push	r17
 1b8:	9b 01       	movw	r18, r22
 1ba:	ac 01       	movw	r20, r24
	unsigned long dds;
	unsigned int dds_l,dds_h;
	
	
	dds= freq_value *268.435456; //268435456/ FMCLK
 1bc:	97 fd       	sbrc	r25, 7
 1be:	02 c0       	rjmp	.+4      	; 0x1c4
 1c0:	1c d1       	rcall	.+568    	; 0x3fa
 1c2:	14 c0       	rjmp	.+40     	; 0x1ec
 1c4:	dc 01       	movw	r26, r24
 1c6:	cb 01       	movw	r24, r22
 1c8:	81 70       	andi	r24, 0x01	; 1
 1ca:	90 70       	andi	r25, 0x00	; 0
 1cc:	a0 70       	andi	r26, 0x00	; 0
 1ce:	b0 70       	andi	r27, 0x00	; 0
 1d0:	56 95       	lsr	r21
 1d2:	47 95       	ror	r20
 1d4:	37 95       	ror	r19
 1d6:	27 95       	ror	r18
 1d8:	82 2b       	or	r24, r18
 1da:	93 2b       	or	r25, r19
 1dc:	a4 2b       	or	r26, r20
 1de:	b5 2b       	or	r27, r21
 1e0:	bc 01       	movw	r22, r24
 1e2:	cd 01       	movw	r24, r26
 1e4:	0a d1       	rcall	.+532    	; 0x3fa
 1e6:	9b 01       	movw	r18, r22
 1e8:	ac 01       	movw	r20, r24
 1ea:	a8 d0       	rcall	.+336    	; 0x33c
 1ec:	2d eb       	ldi	r18, 0xBD	; 189
 1ee:	37 e3       	ldi	r19, 0x37	; 55
 1f0:	46 e8       	ldi	r20, 0x86	; 134
 1f2:	53 e4       	ldi	r21, 0x43	; 67
 1f4:	4c d1       	rcall	.+664    	; 0x48e
 1f6:	dc 01       	movw	r26, r24
 1f8:	cb 01       	movw	r24, r22
 1fa:	bc 01       	movw	r22, r24
 1fc:	cd 01       	movw	r24, r26
 1fe:	e0 d0       	rcall	.+448    	; 0x3c0
 200:	dc 01       	movw	r26, r24
 202:	cb 01       	movw	r24, r22
	dds=dds<<2;
 204:	32 e0       	ldi	r19, 0x02	; 2
 206:	88 0f       	add	r24, r24
 208:	99 1f       	adc	r25, r25
 20a:	aa 1f       	adc	r26, r26
 20c:	bb 1f       	adc	r27, r27
 20e:	3a 95       	dec	r19
 210:	d1 f7       	brne	.-12     	; 0x206
	dds_l=dds;		//低字节
 212:	8c 01       	movw	r16, r24
	dds_h=dds>>16;	//高字节
 214:	cd 01       	movw	r24, r26
 216:	aa 27       	eor	r26, r26
 218:	bb 27       	eor	r27, r27
 21a:	7c 01       	movw	r14, r24
	
	dds_l=dds_l>>2;
	dds_l=dds_l & 0x7FFF;
 21c:	16 95       	lsr	r17
 21e:	07 95       	ror	r16
 220:	16 95       	lsr	r17
 222:	07 95       	ror	r16
	dds_l=dds_l | 0x4000;
 224:	10 64       	ori	r17, 0x40	; 64
	
	dds_h=dds_h & 0x7FFF;
 226:	8f ef       	ldi	r24, 0xFF	; 255
 228:	9f e7       	ldi	r25, 0x7F	; 127
 22a:	e8 22       	and	r14, r24
 22c:	f9 22       	and	r15, r25
	dds_h=dds_h | 0x4000;
 22e:	80 e0       	ldi	r24, 0x00	; 0
 230:	90 e4       	ldi	r25, 0x40	; 64
 232:	e8 2a       	or	r14, r24
 234:	f9 2a       	or	r15, r25
	
	Write_word(0x2000);	//28位连续,选择频率0,相位0,RESET=0
 236:	80 e0       	ldi	r24, 0x00	; 0
 238:	90 e2       	ldi	r25, 0x20	; 32
 23a:	77 df       	rcall	.-274    	; 0x12a
	Write_word(dds_l);	
 23c:	c8 01       	movw	r24, r16
 23e:	75 df       	rcall	.-278    	; 0x12a
	Write_word(dds_h);		
 240:	c7 01       	movw	r24, r14
 242:	73 df       	rcall	.-282    	; 0x12a
 244:	1f 91       	pop	r17
 246:	0f 91       	pop	r16
 248:	ff 90       	pop	r15
 24a:	ef 90       	pop	r14
 24c:	08 95       	ret

0000024e <ctr8421>:
//---------------------------------------------
unsigned char ctr8421(void)
{
	//ctr=0		
	if(((PIND&(1<<ctr8)))&&((PIND&(1<<ctr4)))&&((PIND&(1<<ctr2)))&&((PIND&(1<<ctr1))))
 24e:	80 9b       	sbis	0x10, 0	; 16
 250:	09 c0       	rjmp	.+18     	; 0x264
 252:	81 9b       	sbis	0x10, 1	; 16
 254:	07 c0       	rjmp	.+14     	; 0x264
 256:	82 9b       	sbis	0x10, 2	; 16
 258:	05 c0       	rjmp	.+10     	; 0x264
 25a:	83 9b       	sbis	0x10, 3	; 16
 25c:	03 c0       	rjmp	.+6      	; 0x264
	ctr_v=0;
 25e:	10 92 62 00 	sts	0x0062, r1
 262:	5b c0       	rjmp	.+182    	; 0x31a
	
	//ctr=1
	else if(((PIND&(1<<ctr8)))&&((PIND&(1<<ctr4)))&&((PIND&(1<<ctr2)))&&(!(PIND&(1<<ctr1))))
 264:	80 9b       	sbis	0x10, 0	; 16
 266:	08 c0       	rjmp	.+16     	; 0x278
 268:	81 9b       	sbis	0x10, 1	; 16
 26a:	06 c0       	rjmp	.+12     	; 0x278
 26c:	82 9b       	sbis	0x10, 2	; 16
 26e:	04 c0       	rjmp	.+8      	; 0x278
 270:	83 99       	sbic	0x10, 3	; 16
 272:	02 c0       	rjmp	.+4      	; 0x278
	ctr_v=1;
 274:	81 e0       	ldi	r24, 0x01	; 1
 276:	4f c0       	rjmp	.+158    	; 0x316
	
	//ctr=2		
	else if(((PIND&(1<<ctr8)))&&((PIND&(1<<ctr4)))&&(!(PIND&(1<<ctr2)))&&((PIND&(1<<ctr1))))
 278:	80 9b       	sbis	0x10, 0	; 16
 27a:	08 c0       	rjmp	.+16     	; 0x28c
 27c:	81 9b       	sbis	0x10, 1	; 16
 27e:	06 c0       	rjmp	.+12     	; 0x28c
 280:	82 99       	sbic	0x10, 2	; 16
 282:	04 c0       	rjmp	.+8      	; 0x28c
 284:	83 9b       	sbis	0x10, 3	; 16
 286:	02 c0       	rjmp	.+4      	; 0x28c
	ctr_v=2;
 288:	82 e0       	ldi	r24, 0x02	; 2
 28a:	45 c0       	rjmp	.+138    	; 0x316
	
	//ctr=3		
	else if(((PIND&(1<<ctr8)))&&((PIND&(1<<ctr4)))&&(!(PIND&(1<<ctr2)))&&(!(PIND&(1<<ctr1))))
 28c:	80 9b       	sbis	0x10, 0	; 16
 28e:	08 c0       	rjmp	.+16     	; 0x2a0
 290:	81 9b       	sbis	0x10, 1	; 16
 292:	06 c0       	rjmp	.+12     	; 0x2a0
 294:	82 99       	sbic	0x10, 2	; 16
 296:	04 c0       	rjmp	.+8      	; 0x2a0
 298:	83 99       	sbic	0x10, 3	; 16
 29a:	02 c0       	rjmp	.+4      	; 0x2a0
	ctr_v=3;
 29c:	83 e0       	ldi	r24, 0x03	; 3
 29e:	3b c0       	rjmp	.+118    	; 0x316
	
	//ctr=4		
	else if(((PIND&(1<<ctr8)))&&(!(PIND&(1<<ctr4)))&&((PIND&(1<<ctr2)))&&((PIND&(1<<ctr1))))
 2a0:	80 9b       	sbis	0x10, 0	; 16
 2a2:	08 c0       	rjmp	.+16     	; 0x2b4
 2a4:	81 99       	sbic	0x10, 1	; 16
 2a6:	06 c0       	rjmp	.+12     	; 0x2b4
 2a8:	82 9b       	sbis	0x10, 2	; 16
 2aa:	04 c0       	rjmp	.+8      	; 0x2b4
 2ac:	83 9b       	sbis	0x10, 3	; 16
 2ae:	02 c0       	rjmp	.+4      	; 0x2b4
	ctr_v=4;
 2b0:	84 e0       	ldi	r24, 0x04	; 4
 2b2:	31 c0       	rjmp	.+98     	; 0x316
	
	//ctr=5		
	else if(((PIND&(1<<ctr8)))&&(!(PIND&(1<<ctr4)))&&((PIND&(1<<ctr2)))&&(!(PIND&(1<<ctr1))))
 2b4:	80 9b       	sbis	0x10, 0	; 16
 2b6:	08 c0       	rjmp	.+16     	; 0x2c8
 2b8:	81 99       	sbic	0x10, 1	; 16
 2ba:	06 c0       	rjmp	.+12     	; 0x2c8
 2bc:	82 9b       	sbis	0x10, 2	; 16
 2be:	04 c0       	rjmp	.+8      	; 0x2c8
 2c0:	83 99       	sbic	0x10, 3	; 16
 2c2:	02 c0       	rjmp	.+4      	; 0x2c8
	ctr_v=5;
 2c4:	85 e0       	ldi	r24, 0x05	; 5
 2c6:	27 c0       	rjmp	.+78     	; 0x316
	
	//ctr=6		
	else if(((PIND&(1<<ctr8)))&&(!(PIND&(1<<ctr4)))&&(!(PIND&(1<<ctr2)))&&((PIND&(1<<ctr1))))
 2c8:	80 9b       	sbis	0x10, 0	; 16
 2ca:	08 c0       	rjmp	.+16     	; 0x2dc
 2cc:	81 99       	sbic	0x10, 1	; 16
 2ce:	06 c0       	rjmp	.+12     	; 0x2dc
 2d0:	82 99       	sbic	0x10, 2	; 16
 2d2:	04 c0       	rjmp	.+8      	; 0x2dc
 2d4:	83 9b       	sbis	0x10, 3	; 16
 2d6:	02 c0       	rjmp	.+4      	; 0x2dc
	ctr_v=6;
 2d8:	86 e0       	ldi	r24, 0x06	; 6
 2da:	1d c0       	rjmp	.+58     	; 0x316
	
	//ctr=7		
	else if(((PIND&(1<<ctr8)))&&(!(PIND&(1<<ctr4)))&&(!(PIND&(1<<ctr2)))&&(!(PIND&(1<<ctr1))))
 2dc:	80 9b       	sbis	0x10, 0	; 16
 2de:	08 c0       	rjmp	.+16     	; 0x2f0
 2e0:	81 99       	sbic	0x10, 1	; 16
 2e2:	06 c0       	rjmp	.+12     	; 0x2f0
 2e4:	82 99       	sbic	0x10, 2	; 16
 2e6:	04 c0       	rjmp	.+8      	; 0x2f0
 2e8:	83 99       	sbic	0x10, 3	; 16
 2ea:	02 c0       	rjmp	.+4      	; 0x2f0
	ctr_v=7;
 2ec:	87 e0       	ldi	r24, 0x07	; 7
 2ee:	13 c0       	rjmp	.+38     	; 0x316
	
	//ctr=8		
	else if((!(PIND&(1<<ctr8)))&&((PIND&(1<<ctr4)))&&((PIND&(1<<ctr2)))&&((PIND&(1<<ctr1))))
 2f0:	80 99       	sbic	0x10, 0	; 16
 2f2:	08 c0       	rjmp	.+16     	; 0x304
 2f4:	81 9b       	sbis	0x10, 1	; 16
 2f6:	06 c0       	rjmp	.+12     	; 0x304
 2f8:	82 9b       	sbis	0x10, 2	; 16
 2fa:	04 c0       	rjmp	.+8      	; 0x304
 2fc:	83 9b       	sbis	0x10, 3	; 16
 2fe:	02 c0       	rjmp	.+4      	; 0x304
	ctr_v=8;
 300:	88 e0       	ldi	r24, 0x08	; 8
 302:	09 c0       	rjmp	.+18     	; 0x316
	
	//ctr=9		
	else if((!(PIND&(1<<ctr8)))&&((PIND&(1<<ctr4)))&&((PIND&(1<<ctr2)))&&(!(PIND&(1<<ctr1))))
 304:	80 99       	sbic	0x10, 0	; 16
 306:	09 c0       	rjmp	.+18     	; 0x31a
 308:	81 9b       	sbis	0x10, 1	; 16
 30a:	07 c0       	rjmp	.+14     	; 0x31a
 30c:	82 9b       	sbis	0x10, 2	; 16
 30e:	05 c0       	rjmp	.+10     	; 0x31a
 310:	83 99       	sbic	0x10, 3	; 16
 312:	03 c0       	rjmp	.+6      	; 0x31a
	ctr_v=9;
 314:	89 e0       	ldi	r24, 0x09	; 9
 316:	80 93 62 00 	sts	0x0062, r24
	
	return ctr_v;
 31a:	80 91 62 00 	lds	r24, 0x0062

}
 31e:	99 27       	eor	r25, r25
 320:	08 95       	ret

00000322 <ctrpn>:


//---------------------------------------------
//ctrpn:对正负脉冲按钮开关的判断
//
//输入:无
//输出:ctr_p	unsigned char
//---------------------------------------------
unsigned char ctrpn(void)
{
	if(!(PIND&(1<<pn)))
 322:	87 99       	sbic	0x10, 7	; 16
 324:	03 c0       	rjmp	.+6      	; 0x32c
		ctr_pn=0;
 326:	10 92 63 00 	sts	0x0063, r1
 32a:	03 c0       	rjmp	.+6      	; 0x332
	else
		ctr_pn=1;
 32c:	81 e0       	ldi	r24, 0x01	; 1
 32e:	80 93 63 00 	sts	0x0063, r24
	
	return ctr_pn;
 332:	80 91 63 00 	lds	r24, 0x0063
}
 336:	99 27       	eor	r25, r25
 338:	08 95       	ret

0000033a <__subsf3>:
 33a:	50 58       	subi	r21, 0x80	; 128

0000033c <__addsf3>:
 33c:	19 2e       	mov	r1, r25
 33e:	84 d0       	rcall	.+264    	; 0x448
 340:	01 d0       	rcall	.+2      	; 0x344
 342:	6a c0       	rjmp	.+212    	; 0x418

00000344 <__addsf3x>:
 344:	ba 17       	cp	r27, r26
 346:	62 07       	cpc	r22, r18
 348:	73 07       	cpc	r23, r19
 34a:	84 07       	cpc	r24, r20

⌨️ 快捷键说明

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