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

📄 main.lss

📁 AD9833型高精度可编程波形发生器及其应用
💻 LSS
📖 第 1 页 / 共 3 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000530  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  00000530  000005c4  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000004  00800060  00800060  000005c4  2**0
                  ALLOC
  3 .noinit       00000000  00800064  00800064  000005c4  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000005c4  2**0
                  CONTENTS
  5 .debug_aranges 0000003c  00000000  00000000  000005c4  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 000000fb  00000000  00000000  00000600  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   0000042f  00000000  00000000  000006fb  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000001bf  00000000  00000000  00000b2a  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000407  00000000  00000000  00000ce9  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000144  00000000  00000000  000010f0  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26
   2:	2b c0       	rjmp	.+86     	; 0x5a
   4:	2a c0       	rjmp	.+84     	; 0x5a
   6:	29 c0       	rjmp	.+82     	; 0x5a
   8:	28 c0       	rjmp	.+80     	; 0x5a
   a:	27 c0       	rjmp	.+78     	; 0x5a
   c:	26 c0       	rjmp	.+76     	; 0x5a
   e:	25 c0       	rjmp	.+74     	; 0x5a
  10:	24 c0       	rjmp	.+72     	; 0x5a
  12:	23 c0       	rjmp	.+70     	; 0x5a
  14:	22 c0       	rjmp	.+68     	; 0x5a
  16:	21 c0       	rjmp	.+66     	; 0x5a
  18:	20 c0       	rjmp	.+64     	; 0x5a
  1a:	1f c0       	rjmp	.+62     	; 0x5a
  1c:	1e c0       	rjmp	.+60     	; 0x5a
  1e:	1d c0       	rjmp	.+58     	; 0x5a
  20:	1c c0       	rjmp	.+56     	; 0x5a
  22:	1b c0       	rjmp	.+54     	; 0x5a
  24:	1a c0       	rjmp	.+52     	; 0x5a

00000026 <__ctors_end>:
  26:	11 24       	eor	r1, r1
  28:	1f be       	out	0x3f, r1	; 63
  2a:	cf e5       	ldi	r28, 0x5F	; 95
  2c:	d4 e0       	ldi	r29, 0x04	; 4
  2e:	de bf       	out	0x3e, r29	; 62
  30:	cd bf       	out	0x3d, r28	; 61

00000032 <__do_copy_data>:
  32:	10 e0       	ldi	r17, 0x00	; 0
  34:	a0 e6       	ldi	r26, 0x60	; 96
  36:	b0 e0       	ldi	r27, 0x00	; 0
  38:	e0 e3       	ldi	r30, 0x30	; 48
  3a:	f5 e0       	ldi	r31, 0x05	; 5
  3c:	02 c0       	rjmp	.+4      	; 0x42

0000003e <.do_copy_data_loop>:
  3e:	05 90       	lpm	r0, Z+
  40:	0d 92       	st	X+, r0

00000042 <.do_copy_data_start>:
  42:	a0 36       	cpi	r26, 0x60	; 96
  44:	b1 07       	cpc	r27, r17
  46:	d9 f7       	brne	.-10     	; 0x3e

00000048 <__do_clear_bss>:
  48:	10 e0       	ldi	r17, 0x00	; 0
  4a:	a0 e6       	ldi	r26, 0x60	; 96
  4c:	b0 e0       	ldi	r27, 0x00	; 0
  4e:	01 c0       	rjmp	.+2      	; 0x52

00000050 <.do_clear_bss_loop>:
  50:	1d 92       	st	X+, r1

00000052 <.do_clear_bss_start>:
  52:	a4 36       	cpi	r26, 0x64	; 100
  54:	b1 07       	cpc	r27, r17
  56:	e1 f7       	brne	.-8      	; 0x50
  58:	01 c0       	rjmp	.+2      	; 0x5c

0000005a <__bad_interrupt>:
  5a:	d2 cf       	rjmp	.-92     	; 0x0

0000005c <main>:
#include "main.h"
#include "control.h"

int main(void)
{
  5c:	cf e5       	ldi	r28, 0x5F	; 95
  5e:	d4 e0       	ldi	r29, 0x04	; 4
  60:	de bf       	out	0x3e, r29	; 62
  62:	cd bf       	out	0x3d, r28	; 61
	//上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
	//不用的管脚使能内部上拉电阻。
    PORTB=0xFF;
  64:	8f ef       	ldi	r24, 0xFF	; 255
  66:	88 bb       	out	0x18, r24	; 24
	PORTC=0xFF;
  68:	85 bb       	out	0x15, r24	; 21
    PORTD=0xFF;
  6a:	82 bb       	out	0x12, r24	; 18

	//设定SPI接口
	PORTB=(1<<AD9833_CE)|(1<<AD9833_SDATA)|(1<<AD9833_SCLK);
  6c:	8c e2       	ldi	r24, 0x2C	; 44
  6e:	88 bb       	out	0x18, r24	; 24
    DDRB =(1<<AD9833_CE)|(1<<AD9833_SDATA)|(1<<AD9833_SCLK);
  70:	87 bb       	out	0x17, r24	; 23
	
	init_ad9833();
  72:	82 d0       	rcall	.+260    	; 0x178
	
	while(1)
    {
	ctr8421();
  74:	ec d0       	rcall	.+472    	; 0x24e
	switch (ctr_v)
  76:	80 91 62 00 	lds	r24, 0x0062
  7a:	99 27       	eor	r25, r25
  7c:	87 30       	cpi	r24, 0x07	; 7
  7e:	91 05       	cpc	r25, r1
  80:	89 f0       	breq	.+34     	; 0xa4
  82:	88 30       	cpi	r24, 0x08	; 8
  84:	91 05       	cpc	r25, r1
  86:	1c f4       	brge	.+6      	; 0x8e
  88:	06 97       	sbiw	r24, 0x06	; 6
  8a:	39 f0       	breq	.+14     	; 0x9a
  8c:	1a c0       	rjmp	.+52     	; 0xc2
  8e:	88 30       	cpi	r24, 0x08	; 8
  90:	91 05       	cpc	r25, r1
  92:	69 f0       	breq	.+26     	; 0xae
  94:	09 97       	sbiw	r24, 0x09	; 9
  96:	81 f0       	breq	.+32     	; 0xb8
  98:	14 c0       	rjmp	.+40     	; 0xc2
	{	
		case 6 :output(6);break;
  9a:	66 e0       	ldi	r22, 0x06	; 6
  9c:	70 e0       	ldi	r23, 0x00	; 0
  9e:	80 e0       	ldi	r24, 0x00	; 0
  a0:	90 e0       	ldi	r25, 0x00	; 0
  a2:	13 c0       	rjmp	.+38     	; 0xca
		case 7 :output(7);break;
  a4:	67 e0       	ldi	r22, 0x07	; 7
  a6:	70 e0       	ldi	r23, 0x00	; 0
  a8:	80 e0       	ldi	r24, 0x00	; 0
  aa:	90 e0       	ldi	r25, 0x00	; 0
  ac:	0e c0       	rjmp	.+28     	; 0xca
		case 8 :output(10);break;
  ae:	6a e0       	ldi	r22, 0x0A	; 10
  b0:	70 e0       	ldi	r23, 0x00	; 0
  b2:	80 e0       	ldi	r24, 0x00	; 0
  b4:	90 e0       	ldi	r25, 0x00	; 0
  b6:	09 c0       	rjmp	.+18     	; 0xca
		case 9 :output(50);break;		
  b8:	62 e3       	ldi	r22, 0x32	; 50
  ba:	70 e0       	ldi	r23, 0x00	; 0
  bc:	80 e0       	ldi	r24, 0x00	; 0
  be:	90 e0       	ldi	r25, 0x00	; 0
  c0:	04 c0       	rjmp	.+8      	; 0xca
		
		default :output(0);break;
  c2:	60 e0       	ldi	r22, 0x00	; 0
  c4:	70 e0       	ldi	r23, 0x00	; 0
  c6:	80 e0       	ldi	r24, 0x00	; 0
  c8:	90 e0       	ldi	r25, 0x00	; 0
  ca:	72 d0       	rcall	.+228    	; 0x1b0
  cc:	d3 cf       	rjmp	.-90     	; 0x74

000000ce <delay_nus>:
*/
static __inline__ void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
  ce:	9c 01       	movw	r18, r24
  d0:	21 50       	subi	r18, 0x01	; 1
  d2:	30 40       	sbci	r19, 0x00	; 0
  d4:	8f ef       	ldi	r24, 0xFF	; 255
  d6:	2f 3f       	cpi	r18, 0xFF	; 255
  d8:	38 07       	cpc	r19, r24
  da:	69 f0       	breq	.+26     	; 0xf6
  dc:	42 e0       	ldi	r20, 0x02	; 2
  de:	50 e0       	ldi	r21, 0x00	; 0
  e0:	60 e0       	ldi	r22, 0x00	; 0
  e2:	70 e0       	ldi	r23, 0x00	; 0
  e4:	84 2f       	mov	r24, r20
  e6:	8a 95       	dec	r24
  e8:	f1 f7       	brne	.-4      	; 0xe6
  ea:	21 50       	subi	r18, 0x01	; 1
  ec:	30 40       	sbci	r19, 0x00	; 0
  ee:	8f ef       	ldi	r24, 0xFF	; 255
  f0:	2f 3f       	cpi	r18, 0xFF	; 255
  f2:	38 07       	cpc	r19, r24
  f4:	b9 f7       	brne	.-18     	; 0xe4
  f6:	08 95       	ret

000000f8 <delay_nms>:
 
输入参数: t 		:延时时间 ms
-----------------------------------------------------------------------*/
void delay_nms(unsigned int t)
{
  f8:	cf 93       	push	r28
  fa:	df 93       	push	r29
 */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  fc:	9c 01       	movw	r18, r24
  fe:	21 50       	subi	r18, 0x01	; 1
 100:	30 40       	sbci	r19, 0x00	; 0
 102:	8f ef       	ldi	r24, 0xFF	; 255
 104:	2f 3f       	cpi	r18, 0xFF	; 255
 106:	38 07       	cpc	r19, r24
 108:	69 f0       	breq	.+26     	; 0x124
 10a:	a0 ed       	ldi	r26, 0xD0	; 208
 10c:	b7 e0       	ldi	r27, 0x07	; 7
 10e:	c0 e0       	ldi	r28, 0x00	; 0
 110:	d0 e0       	ldi	r29, 0x00	; 0
 112:	cd 01       	movw	r24, r26
 114:	01 97       	sbiw	r24, 0x01	; 1
 116:	f1 f7       	brne	.-4      	; 0x114
 118:	21 50       	subi	r18, 0x01	; 1
 11a:	30 40       	sbci	r19, 0x00	; 0
 11c:	8f ef       	ldi	r24, 0xFF	; 255
 11e:	2f 3f       	cpi	r18, 0xFF	; 255
 120:	38 07       	cpc	r19, r24
 122:	b9 f7       	brne	.-18     	; 0x112
 124:	df 91       	pop	r29
 126:	cf 91       	pop	r28
 128:	08 95       	ret

0000012a <Write_word>:
    while (t--)
        _delay_ms(1);
}

//-----------------------------------------------------------------------
//Write_word    : 写16位数据到SPI接口,软件SPI方式
// 
//输入参数:	data:	数据(16位)
//-----------------------------------------------------------------------
void Write_word(unsigned int data)
{
 12a:	1f 93       	push	r17
 12c:	cf 93       	push	r28
 12e:	df 93       	push	r29
 130:	ec 01       	movw	r28, r24
	unsigned char i;
	
	SCL_H;
 132:	c5 9a       	sbi	0x18, 5	; 24
	SDA_H;
 134:	c3 9a       	sbi	0x18, 3	; 24
	FSYNC_H;
 136:	c2 9a       	sbi	0x18, 2	; 24

	delay_nus(200);
 138:	88 ec       	ldi	r24, 0xC8	; 200
 13a:	90 e0       	ldi	r25, 0x00	; 0
 13c:	c8 df       	rcall	.-112    	; 0xce
	
	FSYNC_L;
 13e:	c2 98       	cbi	0x18, 2	; 24
 140:	1f e0       	ldi	r17, 0x0F	; 15

	for(i=0;i<16;i++)
	{
		if(data&0x8000)  	SDA_H;
 142:	d7 ff       	sbrs	r29, 7
 144:	02 c0       	rjmp	.+4      	; 0x14a
 146:	c3 9a       	sbi	0x18, 3	; 24
 148:	01 c0       	rjmp	.+2      	; 0x14c
		else  				SDA_L;
 14a:	c3 98       	cbi	0x18, 3	; 24
		
		SCL_L;
 14c:	c5 98       	cbi	0x18, 5	; 24
		delay_nus(5);
 14e:	85 e0       	ldi	r24, 0x05	; 5
 150:	90 e0       	ldi	r25, 0x00	; 0
 152:	bd df       	rcall	.-134    	; 0xce
		SCL_H;
 154:	c5 9a       	sbi	0x18, 5	; 24
		
		data=data<<1;
 156:	cc 0f       	add	r28, r28
 158:	dd 1f       	adc	r29, r29
 15a:	11 50       	subi	r17, 0x01	; 1
 15c:	17 ff       	sbrs	r17, 7
 15e:	f1 cf       	rjmp	.-30     	; 0x142
	}
	
	delay_nus(2);
 160:	82 e0       	ldi	r24, 0x02	; 2
 162:	90 e0       	ldi	r25, 0x00	; 0
 164:	b4 df       	rcall	.-152    	; 0xce
	FSYNC_H;
 166:	c2 9a       	sbi	0x18, 2	; 24
	SCL_L;
 168:	c5 98       	cbi	0x18, 5	; 24

	delay_nus(200);
 16a:	88 ec       	ldi	r24, 0xC8	; 200
 16c:	90 e0       	ldi	r25, 0x00	; 0
 16e:	af df       	rcall	.-162    	; 0xce
 170:	df 91       	pop	r29
 172:	cf 91       	pop	r28
 174:	1f 91       	pop	r17
 176:	08 95       	ret

00000178 <init_ad9833>:
}
void init_ad9833(void)
{
	Write_word(0x2100);	//28位连续,选择频率0,相位0,RESET=1
 178:	80 e0       	ldi	r24, 0x00	; 0
 17a:	91 e2       	ldi	r25, 0x21	; 33
 17c:	d6 df       	rcall	.-84     	; 0x12a
	Write_word(0x4000);	//写频率0寄存器的低字节LSB
 17e:	80 e0       	ldi	r24, 0x00	; 0
 180:	90 e4       	ldi	r25, 0x40	; 64

⌨️ 快捷键说明

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