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

📄 main.s

📁 数字舵机(1) 数字脉宽检测 数字脉宽检测
💻 S
📖 第 1 页 / 共 3 页
字号:
	adc R31,R25
	lds R24,_f
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	movw R2,R30
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _jiaodu+1,R3
	sts _jiaodu,R2
	sts _jiaodu+2+1,R5
	sts _jiaodu+2,R4
	.dbline 171
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 171
	xjmp L17
L23:
	.dbline 172
; 	   else if (a=='-')//0x2d
	lds R24,_a
	cpi R24,45
	breq X27
	xjmp L25
X27:
X9:
	.dbline 173
; 	   	  {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
	.dbline 173
	lds R18,_c
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R24,R16
	subi R24,128
	sbci R25,187
	lds R18,_b
	clr R19
	ldi R16,10000
	ldi R17,39
	xcall empy16s
	movw R30,R16
	subi R30,0
	sbci R31,83
	add R30,R24
	adc R31,R25
	lds R2,_d
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	add R30,R24
	adc R31,R25
	lds R2,_e
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_f
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	movw R24,R30
	com R24
	com R25
	subi R24,0xFF
	sbci R25,0xFF
	movw R2,R24
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _jiaodu+1,R3
	sts _jiaodu,R2
	sts _jiaodu+2+1,R5
	sts _jiaodu+2,R4
	.dbline 174
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 174
	xjmp L17
L25:
	.dbline 175
; 	   if (a!=0) {all=0;return;}
	lds R2,_a
	tst R2
	brne X28
	xjmp L19
X28:
X10:
	.dbline 175
	.dbline 175
	clr R2
	sts _all,R2
	.dbline 175
	xjmp L17
L18:
	.dbline 178
; 	     //PORTF=jiaodu;//while(1);
; 	}
;  else if (all==LINE)
	lds R24,_all
	cpi R24,2
	breq X29
	xjmp L29
X29:
X11:
	.dbline 179
;  	{
	.dbline 180
; 	   a=b;
	lds R2,_b
	sts _a,R2
	.dbline 181
; 	   b=c;
	lds R2,_c
	sts _b,R2
	.dbline 182
; 	   c=d;
	lds R2,_d
	sts _c,R2
	.dbline 183
; 	   d=e;
	lds R2,_e
	sts _d,R2
	.dbline 184
; 	   e=f;
	lds R2,_f
	sts _e,R2
	.dbline 185
; 	   f=UDR1;
	lds R2,156
	sts _f,R2
	.dbline 186
; 	   if ((f<'0')||(f>'9'))return;
	mov R24,R2
	cpi R24,48
	brlo L33
X12:
	ldi R24,57
	cp R24,R2
	brsh L31
X13:
L33:
	.dbline 186
	xjmp L17
L31:
	.dbline 187
; 	   if (a=='+')
	lds R24,_a
	cpi R24,43
	breq X30
	xjmp L34
X30:
X14:
	.dbline 188
; 	   	  {juli=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
	.dbline 188
	lds R18,_c
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R24,R16
	subi R24,128
	sbci R25,187
	lds R18,_b
	clr R19
	ldi R16,10000
	ldi R17,39
	xcall empy16s
	movw R30,R16
	subi R30,0
	sbci R31,83
	add R30,R24
	adc R31,R25
	lds R2,_d
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	add R30,R24
	adc R31,R25
	lds R2,_e
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_f
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	movw R2,R30
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _juli+1,R3
	sts _juli,R2
	sts _juli+2+1,R5
	sts _juli+2,R4
	.dbline 189
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 189
	xjmp L17
L34:
	.dbline 190
; 	   else if (a=='-')
	lds R24,_a
	cpi R24,45
	breq X31
	xjmp L36
X31:
X15:
	.dbline 191
; 	   	  {juli=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
	.dbline 191
	lds R18,_c
	clr R19
	ldi R16,1000
	ldi R17,3
	xcall empy16s
	movw R24,R16
	subi R24,128
	sbci R25,187
	lds R18,_b
	clr R19
	ldi R16,10000
	ldi R17,39
	xcall empy16s
	movw R30,R16
	subi R30,0
	sbci R31,83
	add R30,R24
	adc R31,R25
	lds R2,_d
	ldi R24,100
	mul R24,R2
	movw R24,R0
	subi R24,192
	sbci R25,18
	add R30,R24
	adc R31,R25
	lds R2,_e
	ldi R24,10
	mul R24,R2
	movw R24,R0
	subi R24,224
	sbci R25,1
	add R30,R24
	adc R31,R25
	lds R24,_f
	clr R25
	sbiw R24,48
	add R30,R24
	adc R31,R25
	movw R24,R30
	com R24
	com R25
	subi R24,0xFF
	sbci R25,0xFF
	movw R2,R24
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	sts _juli+1,R3
	sts _juli,R2
	sts _juli+2+1,R5
	sts _juli+2,R4
	.dbline 192
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 192
	xjmp L17
L36:
	.dbline 193
; 	   if (a!=0) {all=0;return;}
	lds R2,_a
	tst R2
	brne X32
	xjmp L30
X32:
X16:
	.dbline 193
	.dbline 193
	clr R2
	sts _all,R2
	.dbline 193
	xjmp L17
L29:
	.dbline 196
; 	   //PORTF=a;
; 	}
;  else   if (all==0)//(johu!=3)&&(johu!=5)  //5:7-bit    3:8-bit
	lds R2,_all
	tst R2
	breq X33
	xjmp L40
X33:
X17:
	.dbline 197
;       {
	.dbline 198
; 	   a=b;
	lds R2,_b
	sts _a,R2
	.dbline 199
; 	   b=c;
	lds R2,_c
	sts _b,R2
	.dbline 200
; 	   c=d;
	lds R2,_d
	sts _c,R2
	.dbline 201
; 	   d=UDR1;
	lds R2,156
	sts _d,R2
	.dbline 202
; 	   if ((a=='c')&&(b=='i')&&(c=='r'))
	lds R24,_a
	cpi R24,99
	brne L42
X18:
	lds R24,_b
	cpi R24,105
	brne L42
X19:
	lds R24,_c
	cpi R24,114
	brne L42
X20:
	.dbline 203
; 	     {
	.dbline 204
; 		   all=CIR;
	ldi R24,1
	sts _all,R24
	.dbline 205
; 		   a=0;b=0;c=0;d=0;e=0;f=0;
	clr R2
	sts _a,R2
	.dbline 205
	sts _b,R2
	.dbline 205
	sts _c,R2
	.dbline 205
	sts _d,R2
	.dbline 205
	sts _e,R2
	.dbline 205
	sts _f,R2
	.dbline 206
; 		   return; }//RXlen=4;{johu=3;RXlen=3;return;}
	xjmp L17
L42:
	.dbline 207
; 	   else if ((a=='l')&&(b=='i')&&(c=='n')&&(d=='e'))
	lds R24,_a
	cpi R24,108
	brne L44
X21:
	lds R24,_b
	cpi R24,105
	brne L44
X22:
	lds R24,_c
	cpi R24,110
	brne L44
X23:
	lds R24,_d
	cpi R24,101
	brne L44
X24:
	.dbline 208
; 	     {
	.dbline 209
; 		   all=LINE;
	ldi R24,2
	sts _all,R24
	.dbline 210
; 		   a=0;b=0;c=0;d=0;e=0;f=0;
	clr R2
	sts _a,R2
	.dbline 210
	sts _b,R2
	.dbline 210
	sts _c,R2
	.dbline 210
	sts _d,R2
	.dbline 210
	sts _e,R2
	.dbline 210
	sts _f,R2
	.dbline 211
; 		   return; }//RXlen=4;{johu=5;RXlen=3;return;}
L44:
	.dbline 213
; 		   ////////////////////////////////////////////////////////////////////
; 	 }
L40:
L30:
L19:
	.dbline -2
L17:
	.dbline 0 ; func end
	ld R0,y+
	out 0x3f,R0
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	reti
	.dbend
	.dbfunc e number_uart1 _number_uart1 fV
;              n -> y+0
;       huanhang -> y+8
;            NUM -> y+4
	.even
_number_uart1::
	xcall push_arg4
	sbiw R28,4
	.dbline -1
	.dbline 233
; }
; 
; 
; 
; /*void number(unsigned char X,unsigned char Y,unsigned char LEN,int NUM,unsigned char BLACK)
; {
;  char code[]={'0','1','2','3','4','5','6','7','8','9',};
;  if (NUM<0)
;  	{LCD_write_String1(X,Y,"-");NUM=-NUM;}
;  else
;  	{LCD_write_String1(X,Y,"+");}
; X=X+6;
;  while(LEN--)
;  	 {
; 	  LCD_write_String1(X+LEN*6,Y,& code[NUM%10]);
; 	  NUM=NUM/10;
; 	 } 
; }*/
; void number_uart1(long NUM,char huanhang)
; {long n=0;
	.dbline 233
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	std y+0,R24
	std y+1,R25
	std y+2,R26
	std y+3,R27
	.dbline 234
;  			if (NUM<0){n=-NUM; while(!(UCSR1A&(1<<UDRE1))); UDR1='-';}
	ldi R24,0
	ldi R25,0
	ldi R26,0
	ldi R27,0
	ldd R2,y+4
	ldd R3,y+5
	ldd R4,y+6
	ldd R5,y+7
	cp R2,R24
	cpc R3,R25
	cpc R4,R26
	cpc R5,R27
	brge L47
X34:
	.dbline 234
	.dbline 234
	movw R16,R2
	movw R18,R4
	xcall neg32
	std y+0,R16
	std y+1,R17
	std y+2,R18
	std y+3,R19
L49:
	.dbline 234
L50:
	.dbline 234
	lds R2,155
	sbrs R2,5
	rjmp L49
X35:
	.dbline 234
	ldi R24,45
	sts 156,R24
	.dbline 234
	xjmp L56
L47:
	.dbline 235
; 			else  {n=NUM;while(!(UCSR1A&(1<<UDRE1))); UDR1='+';}	
	.dbline 235
	ldd R2,y+4
	ldd R3,y+5
	ldd R4,y+6
	ldd R5,y+7
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
L52:
	.dbline 235
L53:
	.dbline 235
	lds R2,155
	sbrs R2,5
	rjmp L52
X36:
	.dbline 235
	ldi R24,43
	sts 156,R24
	.dbline 235
L55:
	.dbline 236
; 		     while(!(UCSR1A&(1<<UDRE1)));
L56:
	.dbline 236
	lds R2,155
	sbrs R2,5
	rjmp L55
X37:
	.dbline 237
; 		     UDR1=(n/10000)%10+48;
	ldi R24,16
	ldi R25,39
	ldi R26,0
	ldi R27,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall div32s
	ldi R24,10
	ldi R25,0
	ldi R26,0
	ldi R27,0
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R24,48
	ldi R25,0
	ldi R26,0
	ldi R27,0
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts 156,R2
L58:
	.dbline 238
; 		     while(!(UCSR1A&(1<<UDRE1)));
L59:
	.dbline 238
	lds R2,155
	sbrs R2,5
	rjmp L58
X38:
	.dbline 239
; 		     UDR1=(n/1000)%10+48;
	ldi R24,232
	ldi R25,3
	ldi R26,0
	ldi R27,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall div32s
	ldi R24,10
	ldi R25,0
	ldi R26,0
	ldi R27,0
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R24,48
	ldi R25,0
	ldi R26,0
	ldi R27,0
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts 156,R2
L61:
	.dbline 240
; 			 while(!(UCSR1A&(1<<UDRE1)));
L62:
	.dbline 240
	lds R2,155
	sbrs R2,5
	rjmp L61
X39:
	.dbline 241
; 		     UDR1=(n/100)%10+48;
	ldi R24,100
	ldi R25,0
	ldi R26,0
	ldi R27,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall div32s
	ldi R24,10
	ldi R25,0
	ldi R26,0
	ldi R27,0
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R24,48
	ldi R25,0
	ldi R26,0
	ldi R27,0
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts 156,R2
L64:
	.dbline 242
; 			 while(!(UCSR1A&(1<<UDRE1)));
L65:
	.dbline 242
	lds R2,155
	sbrs R2,5
	rjmp L64
X40:
	.dbline 243
; 		     UDR1=(n/10)%10+48;
	ldi R24,10
	ldi R25,0
	ldi R26,0
	ldi R27,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall div32s
	ldi R24,10
	ldi R25,0
	ldi R26,0
	ldi R27,0
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R24,48
	ldi R25,0
	ldi R26,0
	ldi R27,0
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts 156,R2
L67:
	.dbline 244
; 			 while(!(UCSR1A&(1<<UDRE1)));
L68:
	.dbline 244
	lds R2,155
	sbrs R2,5
	rjmp L67
X41:
	.dbline 245
; 		     UDR1=n%10+48;
	ldi R24,10
	ldi R25,0
	ldi R26,0
	ldi R27,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	xcall mod32s
	movw R2,R16
	movw R4,R18
	ldi R24,48
	ldi R25,0
	ldi R26,0
	ldi R27,0
	add R2,R24
	adc R3,R25
	adc R4,R26
	adc R5,R27
	sts 156,R2
	.dbline 246
; 			if (huanhang)
	ldd R0,y+8
	tst R0
	breq L79
X42:
	.dbline 247
; 			 {
L72:
	.dbline 248
; 			  while(!(UCSR1A&(1<<UDRE1)));
L73:
	.dbline 248
	lds R2,155
	sbrs R2,5
	rjmp L72
X43:
	.dbline 249
; 		      UDR1=0x0d;
	ldi R24,13
	sts 156,R24
L75:
	.dbline 250
; 			  while(!(UCSR1A&(1<<UDRE1)));
L76:
	.dbline 250
	lds R2,155
	sbrs R2,5
	rjmp L75
X44:
	.dbline 251
; 		      UDR1=0x0a;
	ldi R24,10
	sts 156,R24
	.dbline 252
; 			 }
	xjmp L71
L78:
	.dbline 255
; 			 else
; 			 {
; 			  while(!(UCSR1A&(1<<UDRE1)));
L79:
	.dbline 255
	lds R2,155
	sbrs R2,5
	rjmp L78
X45:
	.dbline 256
; 		      UDR1=0x20;
	ldi R24,32
	sts 156,R24
L81:
	.dbline 257
; 			  while(!(UCSR1A&(1<<UDRE1)));
L82:
	.dbline 257
	lds R2,155
	sbrs R2,5
	rjmp L81
X46:
	.dbline 258
; 		      UDR1=0x20;
	ldi R24,32
	sts 156,R24
	.dbline 259
; 			 } 
L71:
	.dbline -2
L46:
	.dbline 0 ; func end
	adiw R28,8
	ret
	.dbsym l n 0 L
	.dbsym l huanhang 8 c
	.dbsym l NUM 4 L
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 269
; }
; 
; 
; 
; //TIMER0 initialize - prescale:64
; // WGM: PWM Fast
; // desired value: 1KHz
; // actual value:  0.488KHz (-104.8%)
; void timer0_init(void)
; {
	.dbline 270

⌨️ 快捷键说明

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