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

📄 main.s

📁 数字舵机(1) 数字脉宽检测 数字脉宽检测
💻 S
📖 第 1 页 / 共 4 页
字号:
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart1_init _uart1_init fV
	.even
_uart1_init::
	.dbline -1
	.dbline 153
;  //all peripherals are now initialized
; }
; 
; //UART1 initialize
; // desired baud rate:19200
; // actual baud rate:19200 (0.0%)
; // char size: 8 bit
; // parity: Disabled
; void uart1_init(void)
; {
	.dbline 154
;  UCSR1B = 0x00; //disable while setting baud rate
	clr R2
	sts 154,R2
	.dbline 155
;  UCSR1A = 0x00;
	sts 155,R2
	.dbline 156
;  UCSR1C = 0x06;
	ldi R24,6
	sts 157,R24
	.dbline 157
;  UBRR1L = 0x23; //set baud rate lo
	ldi R24,35
	sts 153,R24
	.dbline 158
;  UBRR1H = 0x00; //set baud rate hi
	sts 152,R2
	.dbline 159
;  UCSR1B = 0x98;
	ldi R24,152
	sts 154,R24
	.dbline -2
L16:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 120
	jmp _uart1_rx_isr
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\buhuo\main.c
	.dbfunc e uart1_rx_isr _uart1_rx_isr fV
	.even
_uart1_rx_isr::
	st -y,R0
	st -y,R1
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 165
; }
; 
; #pragma interrupt_handler uart1_rx_isr:31
; //cir+00100
; void uart1_rx_isr(void)
; {
	.dbline 167
;  //uart has received a character in UDR
;  if (all==CIR)
	lds R24,_all
	cpi R24,1
	breq X25
	xjmp L18
X25:
X5:
	.dbline 168
;  	{
	.dbline 169
; 	   a=b;
	lds R2,_b
	sts _a,R2
	.dbline 170
; 	   b=c;
	lds R2,_c
	sts _b,R2
	.dbline 171
; 	   c=d;
	lds R2,_d
	sts _c,R2
	.dbline 172
; 	   d=e;
	lds R2,_e
	sts _d,R2
	.dbline 173
; 	   e=f;
	lds R2,_f
	sts _e,R2
	.dbline 174
; 	   f=UDR1;
	lds R2,156
	sts _f,R2
	.dbline 175
; 	   if ((f<'0')||(f>'9'))return;
	mov R24,R2
	cpi R24,48
	brlo L22
X6:
	ldi R24,57
	cp R24,R2
	brsh L20
X7:
L22:
	.dbline 175
	xjmp L17
L20:
	.dbline 176
; 	   if (a=='+')//0x2b
	lds R24,_a
	cpi R24,43
	breq X26
	xjmp L23
X26:
X8:
	.dbline 177
; 	   	  {jiaodu=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
	.dbline 177
	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 _jiaodu+1,R3
	sts _jiaodu,R2
	sts _jiaodu+2+1,R5
	sts _jiaodu+2,R4
	.dbline 178
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 178
	xjmp L17
L23:
	.dbline 179
; 	   else if (a=='-')//0x2d
	lds R24,_a
	cpi R24,45
	breq X27
	xjmp L25
X27:
X9:
	.dbline 180
; 	   	  {jiaodu=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
	.dbline 180
	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 181
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 181
	xjmp L17
L25:
	.dbline 182
; 	   if (a!=0) {all=0;return;}
	lds R2,_a
	tst R2
	brne X28
	xjmp L19
X28:
X10:
	.dbline 182
	.dbline 182
	clr R2
	sts _all,R2
	.dbline 182
	xjmp L17
L18:
	.dbline 185
; 	     //PORTF=jiaodu;//while(1);
; 	}
;  else if (all==LINE)
	lds R24,_all
	cpi R24,2
	breq X29
	xjmp L29
X29:
X11:
	.dbline 186
;  	{
	.dbline 187
; 	   a=b;
	lds R2,_b
	sts _a,R2
	.dbline 188
; 	   b=c;
	lds R2,_c
	sts _b,R2
	.dbline 189
; 	   c=d;
	lds R2,_d
	sts _c,R2
	.dbline 190
; 	   d=e;
	lds R2,_e
	sts _d,R2
	.dbline 191
; 	   e=f;
	lds R2,_f
	sts _e,R2
	.dbline 192
; 	   f=UDR1;
	lds R2,156
	sts _f,R2
	.dbline 193
; 	   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 193
	xjmp L17
L31:
	.dbline 194
; 	   if (a=='+')
	lds R24,_a
	cpi R24,43
	breq X30
	xjmp L34
X30:
X14:
	.dbline 195
; 	   	  {juli=(b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48);
	.dbline 195
	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 196
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 196
	xjmp L17
L34:
	.dbline 197
; 	   else if (a=='-')
	lds R24,_a
	cpi R24,45
	breq X31
	xjmp L36
X31:
X15:
	.dbline 198
; 	   	  {juli=-((b-48)*10000+(c-48)*1000+(d-48)*100+(e-48)*10+(f-48));
	.dbline 198
	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 199
; 		   all=0;return;}
	clr R2
	sts _all,R2
	.dbline 199
	xjmp L17
L36:
	.dbline 200
; 	   if (a!=0) {all=0;return;}
	lds R2,_a
	tst R2
	brne X32
	xjmp L30
X32:
X16:
	.dbline 200
	.dbline 200
	clr R2
	sts _all,R2
	.dbline 200
	xjmp L17
L29:
	.dbline 203
; 	   //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 204
;       {
	.dbline 205
; 	   a=b;
	lds R2,_b
	sts _a,R2
	.dbline 206
; 	   b=c;
	lds R2,_c
	sts _b,R2
	.dbline 207
; 	   c=d;
	lds R2,_d
	sts _c,R2
	.dbline 208
; 	   d=UDR1;
	lds R2,156
	sts _d,R2
	.dbline 209
; 	   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 210
; 	     {
	.dbline 211
; 		   all=CIR;
	ldi R24,1
	sts _all,R24
	.dbline 212
; 		   a=0;b=0;c=0;d=0;e=0;f=0;
	clr R2
	sts _a,R2
	.dbline 212
	sts _b,R2
	.dbline 212
	sts _c,R2
	.dbline 212
	sts _d,R2
	.dbline 212
	sts _e,R2
	.dbline 212
	sts _f,R2
	.dbline 213
; 		   return; }//RXlen=4;{johu=3;RXlen=3;return;}
	xjmp L17
L42:
	.dbline 214
; 	   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 215
; 	     {
	.dbline 216
; 		   all=LINE;
	ldi R24,2
	sts _all,R24
	.dbline 217
; 		   a=0;b=0;c=0;d=0;e=0;f=0;
	clr R2
	sts _a,R2
	.dbline 217
	sts _b,R2
	.dbline 217
	sts _c,R2
	.dbline 217
	sts _d,R2
	.dbline 217
	sts _e,R2
	.dbline 217
	sts _f,R2
	.dbline 218
; 		   return; }//RXlen=4;{johu=5;RXlen=3;return;}
L44:
	.dbline 220
; 		   ////////////////////////////////////////////////////////////////////
; 	 }
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 240
; }
; 
; 
; 
; /*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 240
	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 241
;  			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 241
	.dbline 241
	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 241
L50:
	.dbline 241
	lds R2,155
	sbrs R2,5
	rjmp L49
X35:
	.dbline 241
	ldi R24,45
	sts 156,R24
	.dbline 241
	xjmp L56
L47:
	.dbline 242
; 			else  {n=NUM;while(!(UCSR1A&(1<<UDRE1))); UDR1='+';}	
	.dbline 242
	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 242
L53:

⌨️ 快捷键说明

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