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

📄 main.lss

📁 本程序为编码器调节电压,能校对:输出电压,输入电压,与校对调节输出的电压值,适合做通用数字电源程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     76e:	f8 01       	movw	r30, r16
     770:	83 83       	std	Z+3, r24	; 0x03
   xy_ch[a][4]=ascii_s(_shu[1]);
     772:	80 91 91 00 	lds	r24, 0x0091
     776:	0e 94 47 00 	call	0x8e <ascii_s>
     77a:	f8 01       	movw	r30, r16
     77c:	84 83       	std	Z+4, r24	; 0x04
   xy_ch[a][5]='.';
     77e:	8e e2       	ldi	r24, 0x2E	; 46
     780:	85 83       	std	Z+5, r24	; 0x05
   xy_ch[a][6]=ascii_s(_shu[0]);
     782:	80 91 90 00 	lds	r24, 0x0090
     786:	0e 94 47 00 	call	0x8e <ascii_s>
     78a:	f8 01       	movw	r30, r16
     78c:	86 83       	std	Z+6, r24	; 0x06
   if(up)xy_ch[0][7]='V';
     78e:	80 91 8f 00 	lds	r24, 0x008F
     792:	88 23       	and	r24, r24
     794:	19 f0       	breq	.+6      	; 0x79c <di_Vout+0x62>
     796:	c0 93 f5 00 	sts	0x00F5, r28
     79a:	03 c0       	rjmp	.+6      	; 0x7a2 <di_Vout+0x68>
     else xy_ch[0][7]='+';
     79c:	8b e2       	ldi	r24, 0x2B	; 43
     79e:	80 93 f5 00 	sts	0x00F5, r24
     7a2:	cf 91       	pop	r28
     7a4:	1f 91       	pop	r17
     7a6:	0f 91       	pop	r16
     7a8:	08 95       	ret

000007aa <di_AD>:
  }
   void di_AD(int x,uch a){//下行显示输入电压
     7aa:	0f 93       	push	r16
     7ac:	1f 93       	push	r17
     7ae:	16 2f       	mov	r17, r22
   shu_f(x);
     7b0:	0e 94 dd 02 	call	0x5ba <shu_f>
   xy_ch[a][0]='A';
     7b4:	01 2f       	mov	r16, r17
     7b6:	11 27       	eor	r17, r17
     7b8:	f3 e0       	ldi	r31, 0x03	; 3
     7ba:	00 0f       	add	r16, r16
     7bc:	11 1f       	adc	r17, r17
     7be:	fa 95       	dec	r31
     7c0:	e1 f7       	brne	.-8      	; 0x7ba <di_AD+0x10>
     7c2:	02 51       	subi	r16, 0x12	; 18
     7c4:	1f 4f       	sbci	r17, 0xFF	; 255
     7c6:	81 e4       	ldi	r24, 0x41	; 65
     7c8:	f8 01       	movw	r30, r16
     7ca:	80 83       	st	Z, r24
   xy_ch[a][1]='D';
     7cc:	84 e4       	ldi	r24, 0x44	; 68
     7ce:	81 83       	std	Z+1, r24	; 0x01
   xy_ch[a][2]=':';
     7d0:	8a e3       	ldi	r24, 0x3A	; 58
     7d2:	82 83       	std	Z+2, r24	; 0x02
   xy_ch[a][3]='!';
     7d4:	81 e2       	ldi	r24, 0x21	; 33
     7d6:	83 83       	std	Z+3, r24	; 0x03
   xy_ch[a][4]=ascii_s(_shu[3]);
     7d8:	80 91 93 00 	lds	r24, 0x0093
     7dc:	0e 94 47 00 	call	0x8e <ascii_s>
     7e0:	f8 01       	movw	r30, r16
     7e2:	84 83       	std	Z+4, r24	; 0x04
   xy_ch[a][5]=ascii_s(_shu[2]);
     7e4:	80 91 92 00 	lds	r24, 0x0092
     7e8:	0e 94 47 00 	call	0x8e <ascii_s>
     7ec:	f8 01       	movw	r30, r16
     7ee:	85 83       	std	Z+5, r24	; 0x05
   xy_ch[a][6]=ascii_s(_shu[1]);
     7f0:	80 91 91 00 	lds	r24, 0x0091
     7f4:	0e 94 47 00 	call	0x8e <ascii_s>
     7f8:	f8 01       	movw	r30, r16
     7fa:	86 83       	std	Z+6, r24	; 0x06
   xy_ch[a][7]=ascii_s(_shu[0]);
     7fc:	80 91 90 00 	lds	r24, 0x0090
     800:	0e 94 47 00 	call	0x8e <ascii_s>
     804:	f8 01       	movw	r30, r16
     806:	87 83       	std	Z+7, r24	; 0x07
     808:	1f 91       	pop	r17
     80a:	0f 91       	pop	r16
     80c:	08 95       	ret

0000080e <moxin>:
  }
  

  /*---------------量程式转换数学模型号--------------*/
int moxin(int ouh,int oul,int inh,int inl,int x){
     80e:	af 92       	push	r10
     810:	bf 92       	push	r11
     812:	cf 92       	push	r12
     814:	df 92       	push	r13
     816:	ef 92       	push	r14
     818:	ff 92       	push	r15
     81a:	0f 93       	push	r16
     81c:	1f 93       	push	r17
     81e:	cf 93       	push	r28
     820:	df 93       	push	r29
     822:	5b 01       	movw	r10, r22
     824:	b9 01       	movw	r22, r18
     826:	98 01       	movw	r18, r16
 //inx为转换前的量程式,oux为转换后的量程,x为转换前的变化值
 //数学模型返回值=(ouh-oul)*(x-inl)/(inh-inl)+oul
 long y;
 long x1,x2,x3;
 x1=ouh-oul;
     828:	8a 19       	sub	r24, r10
     82a:	9b 09       	sbc	r25, r11
     82c:	aa 27       	eor	r26, r26
     82e:	97 fd       	sbrc	r25, 7
     830:	a0 95       	com	r26
     832:	ba 2f       	mov	r27, r26
 x2=x-inl;
     834:	26 1b       	sub	r18, r22
     836:	37 0b       	sbc	r19, r23
     838:	e9 01       	movw	r28, r18
     83a:	ee 27       	eor	r30, r30
     83c:	d7 fd       	sbrc	r29, 7
     83e:	e0 95       	com	r30
     840:	fe 2f       	mov	r31, r30
 x3=inh-inl;
     842:	46 1b       	sub	r20, r22
     844:	57 0b       	sbc	r21, r23
     846:	6a 01       	movw	r12, r20
     848:	ee 24       	eor	r14, r14
     84a:	d7 fc       	sbrc	r13, 7
     84c:	e0 94       	com	r14
     84e:	fe 2c       	mov	r15, r14
 y=x1*x2;
     850:	bc 01       	movw	r22, r24
     852:	cd 01       	movw	r24, r26
     854:	9e 01       	movw	r18, r28
     856:	af 01       	movw	r20, r30
     858:	0e 94 61 09 	call	0x12c2 <__mulsi3>
     85c:	dc 01       	movw	r26, r24
     85e:	cb 01       	movw	r24, r22
 y=y/x3+oul;
     860:	bc 01       	movw	r22, r24
     862:	cd 01       	movw	r24, r26
     864:	a7 01       	movw	r20, r14
     866:	96 01       	movw	r18, r12
     868:	0e 94 c9 09 	call	0x1392 <__divmodsi4>
     86c:	c5 01       	movw	r24, r10
     86e:	aa 27       	eor	r26, r26
     870:	97 fd       	sbrc	r25, 7
     872:	a0 95       	com	r26
     874:	ba 2f       	mov	r27, r26
     876:	82 0f       	add	r24, r18
     878:	93 1f       	adc	r25, r19
     87a:	a4 1f       	adc	r26, r20
     87c:	b5 1f       	adc	r27, r21
     87e:	df 91       	pop	r29
     880:	cf 91       	pop	r28
     882:	1f 91       	pop	r17
     884:	0f 91       	pop	r16
     886:	ff 90       	pop	r15
     888:	ef 90       	pop	r14
     88a:	df 90       	pop	r13
     88c:	cf 90       	pop	r12
     88e:	bf 90       	pop	r11
     890:	af 90       	pop	r10
     892:	08 95       	ret

00000894 <vi_xiao>:
 return (int)y;
 }

void vi_xiao(void){//输入电压校对
     894:	0f 93       	push	r16
     896:	1f 93       	push	r17
     898:	cf 93       	push	r28
     89a:	df 93       	push	r29
 uint tep_vi;
 tep_vi=vi;
     89c:	c0 91 86 00 	lds	r28, 0x0086
     8a0:	d0 91 87 00 	lds	r29, 0x0087
 uint tep1;
 long x1,x2,x3;
 while(1){
 adc_sy();
     8a4:	0e 94 4a 01 	call	0x294 <adc_sy>
 di_VI(tep_vi,0);
     8a8:	60 e0       	ldi	r22, 0x00	; 0
     8aa:	ce 01       	movw	r24, r28
     8ac:	0e 94 3d 03 	call	0x67a <di_VI>
 di_AD(vi2,1);//430
     8b0:	61 e0       	ldi	r22, 0x01	; 1
     8b2:	80 91 05 01 	lds	r24, 0x0105
     8b6:	90 91 06 01 	lds	r25, 0x0106
     8ba:	0e 94 d5 03 	call	0x7aa <di_AD>

   if(int_==1){if(tep_vi<V_max)tep_vi++;int_=0;}
     8be:	80 91 04 01 	lds	r24, 0x0104
     8c2:	81 30       	cpi	r24, 0x01	; 1
     8c4:	39 f4       	brne	.+14     	; 0x8d4 <vi_xiao+0x40>
     8c6:	81 e0       	ldi	r24, 0x01	; 1
     8c8:	cc 32       	cpi	r28, 0x2C	; 44
     8ca:	d8 07       	cpc	r29, r24
     8cc:	08 f4       	brcc	.+2      	; 0x8d0 <vi_xiao+0x3c>
     8ce:	21 96       	adiw	r28, 0x01	; 1
     8d0:	10 92 04 01 	sts	0x0104, r1
   if(int_==2){if(tep_vi>0)tep_vi--;int_=0;}
     8d4:	80 91 04 01 	lds	r24, 0x0104
     8d8:	82 30       	cpi	r24, 0x02	; 2
     8da:	29 f4       	brne	.+10     	; 0x8e6 <vi_xiao+0x52>
     8dc:	20 97       	sbiw	r28, 0x00	; 0
     8de:	09 f0       	breq	.+2      	; 0x8e2 <vi_xiao+0x4e>
     8e0:	21 97       	sbiw	r28, 0x01	; 1
     8e2:	10 92 04 01 	sts	0x0104, r1
   if(key==set)
     8e6:	80 91 d6 00 	lds	r24, 0x00D6
     8ea:	80 38       	cpi	r24, 0x80	; 128
     8ec:	09 f0       	breq	.+2      	; 0x8f0 <vi_xiao+0x5c>
     8ee:	68 c0       	rjmp	.+208    	; 0x9c0 <vi_xiao+0x12c>
   {
   key=0;
     8f0:	10 92 d6 00 	sts	0x00D6, r1
    tep1= moxin(1024,0,V_max,0,tep_vi);//值对应电压值
     8f4:	8e 01       	movw	r16, r28
     8f6:	20 e0       	ldi	r18, 0x00	; 0
     8f8:	30 e0       	ldi	r19, 0x00	; 0
     8fa:	4c e2       	ldi	r20, 0x2C	; 44
     8fc:	51 e0       	ldi	r21, 0x01	; 1
     8fe:	b9 01       	movw	r22, r18
     900:	80 e0       	ldi	r24, 0x00	; 0
     902:	94 e0       	ldi	r25, 0x04	; 4
     904:	0e 94 07 04 	call	0x80e <moxin>
	x1=tep1;
     908:	9c 01       	movw	r18, r24
     90a:	44 27       	eor	r20, r20
     90c:	55 27       	eor	r21, r21
	x2=vi2;
     90e:	80 91 05 01 	lds	r24, 0x0105
     912:	90 91 06 01 	lds	r25, 0x0106
     916:	aa 27       	eor	r26, r26
     918:	bb 27       	eor	r27, r27
    x3=1024*x2/x1;
     91a:	1a e0       	ldi	r17, 0x0A	; 10
     91c:	88 0f       	add	r24, r24
     91e:	99 1f       	adc	r25, r25
     920:	aa 1f       	adc	r26, r26
     922:	bb 1f       	adc	r27, r27
     924:	1a 95       	dec	r17
     926:	d1 f7       	brne	.-12     	; 0x91c <vi_xiao+0x88>
     928:	bc 01       	movw	r22, r24
     92a:	cd 01       	movw	r24, r26
     92c:	0e 94 c9 09 	call	0x1392 <__divmodsi4>
     930:	ba 01       	movw	r22, r20
     932:	a9 01       	movw	r20, r18
	vi_kh=(unsigned int)x3;
     934:	50 93 ed 00 	sts	0x00ED, r21
     938:	40 93 ec 00 	sts	0x00EC, r20
    Write a word \c value to EEPROM address \c addr. */

void 
eeprom_write_word (uint16_t *addr,uint16_t value)
{
     93c:	20 e0       	ldi	r18, 0x00	; 0
     93e:	30 e0       	ldi	r19, 0x00	; 0
  asm volatile (
     940:	d9 01       	movw	r26, r18
     942:	0a 01       	movw	r0, r20
     944:	0e 94 e9 09 	call	0x13d2 <__eeprom_write_word_1C1D1E>
    eeprom_write_word(vihas,vi_kh);
	tep1= moxin(1024,0,vi_kh,0,vi2);
     948:	00 91 05 01 	lds	r16, 0x0105
     94c:	10 91 06 01 	lds	r17, 0x0106
     950:	40 91 ec 00 	lds	r20, 0x00EC
     954:	50 91 ed 00 	lds	r21, 0x00ED
     958:	b9 01       	movw	r22, r18
     95a:	80 e0       	ldi	r24, 0x00	; 0
     95c:	94 e0       	ldi	r25, 0x04	; 4
     95e:	0e 94 07 04 	call	0x80e <moxin>
	vi= moxin(V_max,0,1024,0,tep1);
     962:	8c 01       	movw	r16, r24
     964:	20 e0       	ldi	r18, 0x00	; 0
     966:	30 e0       	ldi	r19, 0x00	; 0
     968:	40 e0       	ldi	r20, 0x00	; 0
     96a:	54 e0       	ldi	r21, 0x04	; 4
     96c:	b9 01       	movw	r22, r18
     96e:	8c e2       	ldi	r24, 0x2C	; 44
     970:	91 e0       	ldi	r25, 0x01	; 1
     972:	0e 94 07 04 	call	0x80e <moxin>
     976:	90 93 87 00 	sts	0x0087, r25
     97a:	80 93 86 00 	sts	0x0086, r24
	
	di_VI(vi,1);
     97e:	61 e0       	ldi	r22, 0x01	; 1
     980:	0e 94 3d 03 	call	0x67a <di_VI>
	daly();daly();daly();
     984:	0e 94 97 02 	call	0x52e <daly>
     988:	0e 94 97 02 	call	0x52e <daly>
     98c:	0e 94 97 02 	call	0x52e <daly>
	daly();daly();daly();
     990:	0e 94 97 02 	call	0x52e <daly>
     994:	0e 94 97 02 	call	0x52e <daly>
     998:	0e 94 97 02 	call	0x52e <daly>
	daly();daly();daly();
     99c:	0e 94 97 02 	call	0x52e <daly>
     9a0:	0e 94 97 02 	call	0x52e <daly>
     9a4:	0e 94 97 02 	call	0x52e <daly>
	daly();daly();daly();
     9a8:	0e 94 97 02 	call	0x52e <daly>
     9ac:	0e 94 97 02 	call	0x52e <daly>
     9b0:	0e 94 97 02 	call	0x52e <daly>
	daly();daly();daly();
     9b4:	0e 94 97 02 	call	0x52e <daly>
     9b8:	0e 94 97 02 	call	0x52e <daly>
     9bc:	0e 94 97 02 	call	0x52e <daly>
   }
   if(key==fun){key=0;return;}
     9c0:	80 91 d6 00 	lds	r24, 0x00D6
     9c4:	80 34       	cpi	r24, 0x40	; 64
     9c6:	09 f0       	breq	.+2      	; 0x9ca <vi_xiao+0x136>
     9c8:	6d cf       	rjmp	.-294    	; 0x8a4 <vi_xiao+0x10>
     9ca:	10 92 d6 00 	sts	0x00D6, r1
     9ce:	df 91       	pop	r29
     9d0:	cf 91       	pop	r28
     9d2:	1f 91       	pop	r17
     9d4:	0f 91       	pop	r16
     9d6:	08 95       	ret

000009d8 <vo_xiao>:
   
   
 }
 }
 void vo_xiao(void){//输入电压校对
     9d8:	0f 93       	push	r16
     9da:	1f 93       	push	r17
     9dc:	cf 93       	push	r28
     9de:	df 93       	push	r29
 
uint tep_vo;
 tep_vo=vo;
     9e0:	c0 91 84 00 	lds	r28, 0x0084
     9e4:	d0 91 85 00 	lds	r29, 0x0085
 uint tep1;
 long x1,x2,x3;
 PWM_our=300;
     9e8:	8c e2       	ldi	r24, 0x2C	; 44
     9ea:	91 e0       	ldi	r25, 0x01	; 1
     9ec:	9b bd       	out	0x2b, r25	; 43
     9ee:	8a bd       	out	0x2a, r24	; 42
 while(1){
 adc_sy();
     9f0:	0e 94 4a 01 	call	0x294 <adc_sy>
 di_Vo(tep_vo,0);
     9f4:	60 e0       	ldi	r22, 0x00	; 0
     9f6:	ce 01       	movw	r24, r28
     9f8:	0e 94 6d 03 	call	0x6da <di_Vo>
 di_AD(vo2,1);//430
     9fc:	61 e0       	ldi	r22, 0x01	; 1
     9fe:	80 91 b0 00 	lds	r24, 0x00B0
     a02:	90 91 b1 00 	lds	r25, 0x00B1
     a06:	0e 94 d5 03 	call	0x7aa <di_AD>

   if(int_==1){if(tep_vo<V_max)tep_vo++;int_=0;}
     a0a:	80 91 04 01 	lds	r24, 0x0104
     a0e:	81 30       	cpi	r24, 0x01	; 1
     a10:	39 f4       	brne	.+14     	; 0xa20 <vo_xiao+0x48>
     a12:	81 e0       	ldi	r24, 0x01	; 1
     a14:	cc 32       	cpi	r28, 0x2C	; 44
     a16:	d8 07       	cpc	r29, r24
     a18:	08 f4       	brcc	.+2      	; 0xa1c <vo_xiao+0x44>
     a1a:	21 96       	adiw	r28, 0x01	; 1
     a1c:	10 92 04 01 	sts	0x0104, r1
   if(int_==2){if(tep_vo>0)tep_vo--;int_=0;}
     a20:	80 91 04 01 	lds	r24, 0x0104
     a24:	82 30       	cpi	r24, 0x02	; 2
     a26:	29 f4       	brne	.+10     	; 0xa32 <vo_xiao+0x5a>
     a28:	20 97       	sbiw	r28, 0x00	; 0
     a2a:	09 f0       	breq	.+2      	; 0xa2e <vo_xiao+0x56>
     a2c:	21 97       	sbiw	r28, 0x01	; 1
     a2e:	10 92 04 01 	sts	0x0104, r1
   if(key==set)
     a32:	80 91 d6 00 	lds	r24, 0x00D6
     a36:	80 38       	cpi	r24, 0x80	; 128
     a38:	09 f0       	breq	.+2      	; 0xa3c <vo_xiao+0x64>
     a3a:	6a c0       	rjmp	.+212    	; 0xb10 <vo_xiao+0x138>
   {
   key=0;

⌨️ 快捷键说明

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