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

📄 main.lss

📁 基于AVR单片机 Atmel Mega128的AD采集程序。
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     758:	25 97       	sbiw	r28, 0x05	; 5
     75a:	0f b6       	in	r0, 0x3f	; 63
     75c:	f8 94       	cli
     75e:	de bf       	out	0x3e, r29	; 62
     760:	0f be       	out	0x3f, r0	; 63
     762:	cd bf       	out	0x3d, r28	; 61
     764:	69 83       	std	Y+1, r22	; 0x01
     766:	7a 83       	std	Y+2, r23	; 0x02
     768:	8b 83       	std	Y+3, r24	; 0x03
     76a:	9c 83       	std	Y+4, r25	; 0x04
     76c:	4d 83       	std	Y+5, r20	; 0x05
//变量定义
//	uint8_t addr_l,addr_m,addr_h;
//
	cbi(PORTD,6);//ram片选拉低
     76e:	80 91 32 00 	lds	r24, 0x0032
     772:	8f 7b       	andi	r24, 0xBF	; 191
     774:	80 93 32 00 	sts	0x0032, r24
	sbi(PORTD,5);//AD片选拉高
     778:	80 91 32 00 	lds	r24, 0x0032
     77c:	80 62       	ori	r24, 0x20	; 32
     77e:	80 93 32 00 	sts	0x0032, r24
	DDRA=0xFF;//a口输出
     782:	8f ef       	ldi	r24, 0xFF	; 255
     784:	80 93 3a 00 	sts	0x003A, r24
//	addr_h=(address>>16);//高4位地址
//	addr_h=(addr_h&0x0F);
//	addr_m=(address>>8);//中间8位地址
//	addr_l=address;//低8位地址
//	PORTA=addr_l;//写ram地址
//	PORTC=addr_m;
//	PORTF&=0xF0;//低4位清零
//	PORTF|=addr_h;
	PORTA=address;//低8位地址
     788:	89 81       	ldd	r24, Y+1	; 0x01
     78a:	80 93 3b 00 	sts	0x003B, r24
	PORTC=(address>>8);//中间8位地址
     78e:	89 81       	ldd	r24, Y+1	; 0x01
     790:	9a 81       	ldd	r25, Y+2	; 0x02
     792:	ab 81       	ldd	r26, Y+3	; 0x03
     794:	bc 81       	ldd	r27, Y+4	; 0x04
     796:	89 2f       	mov	r24, r25
     798:	9a 2f       	mov	r25, r26
     79a:	ab 2f       	mov	r26, r27
     79c:	bb 27       	eor	r27, r27
     79e:	80 93 35 00 	sts	0x0035, r24
	PORTF&=0xF0;//低4位清零
     7a2:	90 ef       	ldi	r25, 0xF0	; 240
     7a4:	80 91 62 00 	lds	r24, 0x0062
     7a8:	89 23       	and	r24, r25
     7aa:	80 93 62 00 	sts	0x0062, r24
	PORTF|=(address>>16)&0x0F;
     7ae:	89 81       	ldd	r24, Y+1	; 0x01
     7b0:	9a 81       	ldd	r25, Y+2	; 0x02
     7b2:	ab 81       	ldd	r26, Y+3	; 0x03
     7b4:	bc 81       	ldd	r27, Y+4	; 0x04
     7b6:	cd 01       	movw	r24, r26
     7b8:	aa 27       	eor	r26, r26
     7ba:	bb 27       	eor	r27, r27
     7bc:	98 2f       	mov	r25, r24
     7be:	9f 70       	andi	r25, 0x0F	; 15
     7c0:	80 91 62 00 	lds	r24, 0x0062
     7c4:	89 2b       	or	r24, r25
     7c6:	80 93 62 00 	sts	0x0062, r24
	cbi(PORTG,2);//地址锁存
     7ca:	80 91 65 00 	lds	r24, 0x0065
     7ce:	8b 7f       	andi	r24, 0xFB	; 251
     7d0:	80 93 65 00 	sts	0x0065, r24
	PORTA=data;//将数据放在总线上
     7d4:	8d 81       	ldd	r24, Y+5	; 0x05
     7d6:	80 93 3b 00 	sts	0x003B, r24
	cbi(PORTG,0);//写拉低
     7da:	80 91 65 00 	lds	r24, 0x0065
     7de:	8e 7f       	andi	r24, 0xFE	; 254
     7e0:	80 93 65 00 	sts	0x0065, r24
	delay_ms();//延时//////////////////
     7e4:	0e 94 39 03 	call	0x672
	sbi(PORTG,0);//写拉高
     7e8:	80 91 65 00 	lds	r24, 0x0065
     7ec:	81 60       	ori	r24, 0x01	; 1
     7ee:	80 93 65 00 	sts	0x0065, r24
	sbi(PORTG,2);//去锁存
     7f2:	80 91 65 00 	lds	r24, 0x0065
     7f6:	84 60       	ori	r24, 0x04	; 4
     7f8:	80 93 65 00 	sts	0x0065, r24
}
     7fc:	25 96       	adiw	r28, 0x05	; 5
     7fe:	0f b6       	in	r0, 0x3f	; 63
     800:	f8 94       	cli
     802:	de bf       	out	0x3e, r29	; 62
     804:	0f be       	out	0x3f, r0	; 63
     806:	cd bf       	out	0x3d, r28	; 61
     808:	df 91       	pop	r29
     80a:	cf 91       	pop	r28
     80c:	08 95       	ret

0000080e <SRAM_1M_8_READ>:
//SRAM读操作
uint8_t SRAM_1M_8_READ(uint32_t address)
{
     80e:	cf 93       	push	r28
     810:	df 93       	push	r29
     812:	cd b7       	in	r28, 0x3d	; 61
     814:	de b7       	in	r29, 0x3e	; 62
     816:	28 97       	sbiw	r28, 0x08	; 8
     818:	0f b6       	in	r0, 0x3f	; 63
     81a:	f8 94       	cli
     81c:	de bf       	out	0x3e, r29	; 62
     81e:	0f be       	out	0x3f, r0	; 63
     820:	cd bf       	out	0x3d, r28	; 61
     822:	69 83       	std	Y+1, r22	; 0x01
     824:	7a 83       	std	Y+2, r23	; 0x02
     826:	8b 83       	std	Y+3, r24	; 0x03
     828:	9c 83       	std	Y+4, r25	; 0x04
	uint8_t addr_l,addr_m,addr_h,temp;
	cbi(PORTD,6);//ram片选拉低
     82a:	80 91 32 00 	lds	r24, 0x0032
     82e:	8f 7b       	andi	r24, 0xBF	; 191
     830:	80 93 32 00 	sts	0x0032, r24
	sbi(PORTD,5);//AD片选拉高
     834:	80 91 32 00 	lds	r24, 0x0032
     838:	80 62       	ori	r24, 0x20	; 32
     83a:	80 93 32 00 	sts	0x0032, r24
	DDRA=0xFF;//a口输出
     83e:	8f ef       	ldi	r24, 0xFF	; 255
     840:	80 93 3a 00 	sts	0x003A, r24
	addr_l=address;//低8位地址
     844:	89 81       	ldd	r24, Y+1	; 0x01
     846:	8d 83       	std	Y+5, r24	; 0x05
	addr_m=(address>>8);//中间8位地址
     848:	89 81       	ldd	r24, Y+1	; 0x01
     84a:	9a 81       	ldd	r25, Y+2	; 0x02
     84c:	ab 81       	ldd	r26, Y+3	; 0x03
     84e:	bc 81       	ldd	r27, Y+4	; 0x04
     850:	89 2f       	mov	r24, r25
     852:	9a 2f       	mov	r25, r26
     854:	ab 2f       	mov	r26, r27
     856:	bb 27       	eor	r27, r27
     858:	8e 83       	std	Y+6, r24	; 0x06
	addr_h=(address>>16);//高4位地址
     85a:	89 81       	ldd	r24, Y+1	; 0x01
     85c:	9a 81       	ldd	r25, Y+2	; 0x02
     85e:	ab 81       	ldd	r26, Y+3	; 0x03
     860:	bc 81       	ldd	r27, Y+4	; 0x04
     862:	cd 01       	movw	r24, r26
     864:	aa 27       	eor	r26, r26
     866:	bb 27       	eor	r27, r27
     868:	8f 83       	std	Y+7, r24	; 0x07
	addr_h=(addr_h&0x0F);
     86a:	8f 81       	ldd	r24, Y+7	; 0x07
     86c:	8f 70       	andi	r24, 0x0F	; 15
     86e:	8f 83       	std	Y+7, r24	; 0x07
	PORTA=addr_l;//输出ram地址
     870:	8d 81       	ldd	r24, Y+5	; 0x05
     872:	80 93 3b 00 	sts	0x003B, r24
	PORTC=addr_m;
     876:	8e 81       	ldd	r24, Y+6	; 0x06
     878:	80 93 35 00 	sts	0x0035, r24
	PORTF&=0xF0;//低4位清零
     87c:	90 ef       	ldi	r25, 0xF0	; 240
     87e:	80 91 62 00 	lds	r24, 0x0062
     882:	89 23       	and	r24, r25
     884:	80 93 62 00 	sts	0x0062, r24
	PORTF|=addr_h;
     888:	90 91 62 00 	lds	r25, 0x0062
     88c:	8f 81       	ldd	r24, Y+7	; 0x07
     88e:	89 2b       	or	r24, r25
     890:	80 93 62 00 	sts	0x0062, r24
	cbi(PORTG,2);//地址锁存
     894:	80 91 65 00 	lds	r24, 0x0065
     898:	8b 7f       	andi	r24, 0xFB	; 251
     89a:	80 93 65 00 	sts	0x0065, r24
	cbi(PORTG,1);//读拉低
     89e:	80 91 65 00 	lds	r24, 0x0065
     8a2:	8d 7f       	andi	r24, 0xFD	; 253
     8a4:	80 93 65 00 	sts	0x0065, r24
	delay_ms();//延时//////////////////
     8a8:	0e 94 39 03 	call	0x672
	DDRA=0x00;//a口输入
     8ac:	10 92 3a 00 	sts	0x003A, r1
	PORTA=0xFF;//设置上拉
     8b0:	8f ef       	ldi	r24, 0xFF	; 255
     8b2:	80 93 3b 00 	sts	0x003B, r24
	temp=PINA;//读取总线上的数据
     8b6:	80 91 39 00 	lds	r24, 0x0039
     8ba:	88 87       	std	Y+8, r24	; 0x08
	sbi(PORTG,1);//读拉高
     8bc:	80 91 65 00 	lds	r24, 0x0065
     8c0:	82 60       	ori	r24, 0x02	; 2
     8c2:	80 93 65 00 	sts	0x0065, r24
	sbi(PORTG,2);//去锁存
     8c6:	80 91 65 00 	lds	r24, 0x0065
     8ca:	84 60       	ori	r24, 0x04	; 4
     8cc:	80 93 65 00 	sts	0x0065, r24
	sbi(PORTD,6);//去掉片选信号
     8d0:	80 91 32 00 	lds	r24, 0x0032
     8d4:	80 64       	ori	r24, 0x40	; 64
     8d6:	80 93 32 00 	sts	0x0032, r24
	return temp;
     8da:	88 85       	ldd	r24, Y+8	; 0x08
     8dc:	99 27       	eor	r25, r25
}
     8de:	28 96       	adiw	r28, 0x08	; 8
     8e0:	0f b6       	in	r0, 0x3f	; 63
     8e2:	f8 94       	cli
     8e4:	de bf       	out	0x3e, r29	; 62
     8e6:	0f be       	out	0x3f, r0	; 63
     8e8:	cd bf       	out	0x3d, r28	; 61
     8ea:	df 91       	pop	r29
     8ec:	cf 91       	pop	r28
     8ee:	08 95       	ret

000008f0 <AD7891_WRITE>:
//AD写操作
void AD7891_WRITE(uint16_t cmd)
{
     8f0:	cf 93       	push	r28
     8f2:	df 93       	push	r29
     8f4:	cd b7       	in	r28, 0x3d	; 61
     8f6:	de b7       	in	r29, 0x3e	; 62
     8f8:	23 97       	sbiw	r28, 0x03	; 3
     8fa:	0f b6       	in	r0, 0x3f	; 63
     8fc:	f8 94       	cli
     8fe:	de bf       	out	0x3e, r29	; 62
     900:	0f be       	out	0x3f, r0	; 63
     902:	cd bf       	out	0x3d, r28	; 61
     904:	89 83       	std	Y+1, r24	; 0x01
     906:	9a 83       	std	Y+2, r25	; 0x02
//CS:PD5;WR:PG0;RD:PG1
//DATA0~DATA7:PORTA
//ADCD8~ADCD11:PB4~PB7
	uint8_t addr_h;
	DDRA=0xFF;//a口输出
     908:	8f ef       	ldi	r24, 0xFF	; 255
     90a:	80 93 3a 00 	sts	0x003A, r24
	DDRB|=0xF0;//端口B高4位输出
     90e:	80 91 37 00 	lds	r24, 0x0037
     912:	80 6f       	ori	r24, 0xF0	; 240
     914:	80 93 37 00 	sts	0x0037, r24
//	addr_l=cmd;
	addr_h=(cmd>>8);
     918:	89 81       	ldd	r24, Y+1	; 0x01
     91a:	9a 81       	ldd	r25, Y+2	; 0x02
     91c:	89 2f       	mov	r24, r25
     91e:	99 27       	eor	r25, r25
     920:	8b 83       	std	Y+3, r24	; 0x03
	addr_h=(addr_h<<4);//低4位移动到高位
     922:	8b 81       	ldd	r24, Y+3	; 0x03
     924:	82 95       	swap	r24
     926:	80 7f       	andi	r24, 0xF0	; 240
     928:	8b 83       	std	Y+3, r24	; 0x03
	addr_h&=0xF0;//取高4位
     92a:	90 ef       	ldi	r25, 0xF0	; 240
     92c:	8b 81       	ldd	r24, Y+3	; 0x03
     92e:	89 23       	and	r24, r25
     930:	8b 83       	std	Y+3, r24	; 0x03
//片选
	cbi(PORTD,5);//ad片选拉低
     932:	80 91 32 00 	lds	r24, 0x0032
     936:	8f 7d       	andi	r24, 0xDF	; 223
     938:	80 93 32 00 	sts	0x0032, r24
	sbi(PORTD,6);//ram片选拉高
     93c:	80 91 32 00 	lds	r24, 0x0032
     940:	80 64       	ori	r24, 0x40	; 64
     942:	80 93 32 00 	sts	0x0032, r24
	PORTA=cmd;
     946:	89 81       	ldd	r24, Y+1	; 0x01
     948:	80 93 3b 00 	sts	0x003B, r24
	PORTB&=0x0F;//高4位清零
     94c:	80 91 38 00 	lds	r24, 0x0038
     950:	8f 70       	andi	r24, 0x0F	; 15
     952:	80 93 38 00 	sts	0x0038, r24
	PORTB|=addr_h;
     956:	90 91 38 00 	lds	r25, 0x0038
     95a:	8b 81       	ldd	r24, Y+3	; 0x03
     95c:	89 2b       	or	r24, r25
     95e:	80 93 38 00 	sts	0x0038, r24
	cbi(PORTG,0);//写拉低
     962:	80 91 65 00 	lds	r24, 0x0065
     966:	8e 7f       	andi	r24, 0xFE	; 254
     968:	80 93 65 00 	sts	0x0065, r24
	delay_ms();
     96c:	0e 94 39 03 	call	0x672
	sbi(PORTG,0);//写拉高
     970:	80 91 65 00 	lds	r24, 0x0065
     974:	81 60       	ori	r24, 0x01	; 1
     976:	80 93 65 00 	sts	0x0065, r24
}
     97a:	23 96       	adiw	r28, 0x03	; 3
     97c:	0f b6       	in	r0, 0x3f	; 63
     97e:	f8 94       	cli
     980:	de bf       	out	0x3e, r29	; 62
     982:	0f be       	out	0x3f, r0	; 63
     984:	cd bf       	out	0x3d, r28	; 61
     986:	df 91       	pop	r29
     988:	cf 91       	pop	r28
     98a:	08 95       	ret

0000098c <AD7891_READ>:

//AD读操作,返回一16位整数
uint16_t AD7891_READ(void)
{
     98c:	cf 93       	push	r28
     98e:	df 93       	push	r29
     990:	cd b7       	in	r28, 0x3d	; 61
     992:	de b7       	in	r29, 0x3e	; 62
     994:	24 97       	sbiw	r28, 0x04	; 4
     996:	0f b6       	in	r0, 0x3f	; 63
     998:	f8 94       	cli
     99a:	de bf       	out	0x3e, r29	; 62
     99c:	0f be       	out	0x3f, r0	; 63
     99e:	cd bf       	out	0x3d, r28	; 61
//CS:PD5;WR:PG0;RD:PG1
//DATA0~DATA7:PORTA
//ADCD8~ADCD11:PB4~PB7
	uint8_t result_l,result_h;
	uint16_t result;
	////////设置端口方向////////////////
	DDRA=0x00;//PORTA as input
     9a0:	10 92 3a 00 	sts	0x003A, r1
	PORTA=0xFF;//设置上拉
     9a4:	8f ef       	ldi	r24, 0xFF	; 255
     9a6:	80 93 3b 00 	sts	0x003B, r24
	DDRB&=0x0F;//PB4~PB7 as input
     9aa:	80 91 37 00 	lds	r24, 0x0037
     9ae:	8f 70       	andi	r24, 0x0F	; 15
     9b0:	80 93 37 00 	sts	0x0037, r24
	PORTB|=0xF0;//PB4~PB7设置上拉
     9b4:	80 91 38 00 	lds	r24, 0x0038
     9b8:	80 6f       	ori	r24, 0xF0	; 240
     9ba:	80 93 38 00 	sts	0x0038, r24
	////////读///////////////////////////
//片选
	cbi(PORTD,5);//ad片选拉低
     9be:	80 91 32 00 	lds	r24, 0x0032
     9c2:	8f 7d       	andi	r24, 0xDF	; 223
     9c4:	80 93 32 00 	sts	0x0032, r24
	sbi(PORTD,6);//ram片选拉高
     9c8:	80 91 32 00 	lds	r24, 0x0032
     9cc:	80 64       	ori	r24, 0x40	; 64
     9ce:	80 93 32 00 	sts	0x0032, r24
	cbi(PORTG,1);//读拉低
     9d2:	80 91 65 00 	lds	r24, 0x0065
     9d6:	8d 7f       	andi	r24, 0xFD	; 253
     9d8:	80 93 65 00 	sts	0x0065, r24
	delay_ms();
     9dc:	0e 94 39 03 	call	0x672
	
	result_l=PINA;
     9e0:	80 91 39 00 	lds	r24, 0x0039
     9e4:	89 83       	std	Y+1, r24	; 0x01
	result_h=PINB;
     9e6:	80 91 36 00 	lds	r24, 0x0036
     9ea:	8a 83       	std	Y+2, r24	; 0x02
	result_h&=0xF0;
     9ec:	90 ef       	ldi	r25, 0xF0	; 240
     9ee:	8a 81       	ldd	r24, Y+2	; 0x02
     9f0:	89 23       	and	r24, r25

⌨️ 快捷键说明

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