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

📄 m64.lst

📁 数字舵机(1) 数字脉宽检测 数字脉宽检测
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0203)  else   if (all==0)//(johu!=3)&&(johu!=5)  //5:7-bit    3:8-bit
     368 9020 0116 LDS	R2,all
     36A 2022      TST	R2
     36B F009      BEQ	0x036D
     36C C04D      RJMP	0x03BA
(0204)       {
(0205) 	   a=b;
     36D 9020 0118 LDS	R2,b
     36F 9220 0117 STS	a,R2
(0206) 	   b=c;
     371 9020 0119 LDS	R2,c
     373 9220 0118 STS	b,R2
(0207) 	   c=d;
     375 9020 011A LDS	R2,d
     377 9220 0119 STS	c,R2
(0208) 	   d=UDR1;
     379 9020 009C LDS	R2,0x009C
     37B 9220 011A STS	d,R2
(0209) 	   if ((a=='c')&&(b=='i')&&(c=='r'))
     37D 9180 0117 LDS	R24,a
     37F 3683      CPI	R24,0x63
     380 F4C9      BNE	0x039A
     381 9180 0118 LDS	R24,b
     383 3689      CPI	R24,0x69
     384 F4A9      BNE	0x039A
     385 9180 0119 LDS	R24,c
     387 3782      CPI	R24,0x72
     388 F489      BNE	0x039A
(0210) 	     {
(0211) 		   all=CIR;
     389 E081      LDI	R24,1
     38A 9380 0116 STS	all,R24
(0212) 		   a=0;b=0;c=0;d=0;e=0;f=0;
     38C 2422      CLR	R2
     38D 9220 0117 STS	a,R2
     38F 9220 0118 STS	b,R2
     391 9220 0119 STS	c,R2
     393 9220 011A STS	d,R2
     395 9220 011B STS	e,R2
     397 9220 011C STS	f,R2
(0213) 		   return; }//RXlen=4;{johu=3;RXlen=3;return;}
     399 C020      RJMP	0x03BA
(0214) 	   else if ((a=='l')&&(b=='i')&&(c=='n')&&(d=='e'))
     39A 9180 0117 LDS	R24,a
     39C 368C      CPI	R24,0x6C
     39D F4E1      BNE	0x03BA
     39E 9180 0118 LDS	R24,b
     3A0 3689      CPI	R24,0x69
     3A1 F4C1      BNE	0x03BA
     3A2 9180 0119 LDS	R24,c
     3A4 368E      CPI	R24,0x6E
     3A5 F4A1      BNE	0x03BA
     3A6 9180 011A LDS	R24,d
     3A8 3685      CPI	R24,0x65
     3A9 F481      BNE	0x03BA
(0215) 	     {
(0216) 		   all=LINE;
     3AA E082      LDI	R24,2
     3AB 9380 0116 STS	all,R24
(0217) 		   a=0;b=0;c=0;d=0;e=0;f=0;
     3AD 2422      CLR	R2
     3AE 9220 0117 STS	a,R2
     3B0 9220 0118 STS	b,R2
     3B2 9220 0119 STS	c,R2
     3B4 9220 011A STS	d,R2
     3B6 9220 011B STS	e,R2
     3B8 9220 011C STS	f,R2
(0218) 		   return; }//RXlen=4;{johu=5;RXlen=3;return;}
(0219) 		   ////////////////////////////////////////////////////////////////////
(0220) 	 }
     3BA 9009      LD	R0,Y+
     3BB BE0F      OUT	0x3F,R0
     3BC 91F9      LD	R31,Y+
     3BD 91E9      LD	R30,Y+
     3BE 9199      LD	R25,Y+
     3BF 9189      LD	R24,Y+
     3C0 9139      LD	R19,Y+
     3C1 9129      LD	R18,Y+
     3C2 9119      LD	R17,Y+
     3C3 9109      LD	R16,Y+
     3C4 9059      LD	R5,Y+
     3C5 9049      LD	R4,Y+
     3C6 9039      LD	R3,Y+
     3C7 9029      LD	R2,Y+
     3C8 9019      LD	R1,Y+
     3C9 9009      LD	R0,Y+
     3CA 9518      RETI
_number_uart1:
  n                    --> Y,+0
  huanhang             --> Y,+8
  NUM                  --> Y,+4
     3CB 940E 076C CALL	push_arg4
     3CD 9724      SBIW	R28,4
(0221) }
(0222) 
(0223) 
(0224) 
(0225) /*void number(unsigned char X,unsigned char Y,unsigned char LEN,int NUM,unsigned char BLACK)
(0226) {
(0227)  char code[]={'0','1','2','3','4','5','6','7','8','9',};
(0228)  if (NUM<0)
(0229)  	{LCD_write_String1(X,Y,"-");NUM=-NUM;}
(0230)  else
(0231)  	{LCD_write_String1(X,Y,"+");}
(0232) X=X+6;
(0233)  while(LEN--)
(0234)  	 {
(0235) 	  LCD_write_String1(X+LEN*6,Y,& code[NUM%10]);
(0236) 	  NUM=NUM/10;
(0237) 	 } 
(0238) }*/
(0239) void number_uart1(long NUM,char huanhang)
(0240) {long n=0;
     3CE E080      LDI	R24,0
     3CF E090      LDI	R25,0
     3D0 E0A0      LDI	R26,0
     3D1 E0B0      LDI	R27,0
     3D2 8388      STD	Y+0,R24
     3D3 8399      STD	Y+1,R25
     3D4 83AA      STD	Y+2,R26
     3D5 83BB      STD	Y+3,R27
(0241)  			if (NUM<0){n=-NUM; while(!(UCSR1A&(1<<UDRE1))); UDR1='-';}
     3D6 E080      LDI	R24,0
     3D7 E090      LDI	R25,0
     3D8 E0A0      LDI	R26,0
     3D9 E0B0      LDI	R27,0
     3DA 802C      LDD	R2,Y+4
     3DB 803D      LDD	R3,Y+5
     3DC 804E      LDD	R4,Y+6
     3DD 805F      LDD	R5,Y+7
     3DE 1628      CP	R2,R24
     3DF 0639      CPC	R3,R25
     3E0 064A      CPC	R4,R26
     3E1 065B      CPC	R5,R27
     3E2 F484      BGE	0x03F3
     3E3 0181      MOVW	R16,R2
     3E4 0192      MOVW	R18,R4
     3E5 940E 07F9 CALL	neg32
     3E7 8308      STD	Y+0,R16
     3E8 8319      STD	Y+1,R17
     3E9 832A      STD	Y+2,R18
     3EA 833B      STD	Y+3,R19
     3EB 9020 009B LDS	R2,0x009B
     3ED FE25      SBRS	R2,5
     3EE CFFC      RJMP	0x03EB
     3EF E28D      LDI	R24,0x2D
     3F0 9380 009C STS	0x009C,R24
     3F2 C00F      RJMP	0x0402
(0242) 			else  {n=NUM;while(!(UCSR1A&(1<<UDRE1))); UDR1='+';}	
     3F3 802C      LDD	R2,Y+4
     3F4 803D      LDD	R3,Y+5
     3F5 804E      LDD	R4,Y+6
     3F6 805F      LDD	R5,Y+7
     3F7 8228      STD	Y+0,R2
     3F8 8239      STD	Y+1,R3
     3F9 824A      STD	Y+2,R4
     3FA 825B      STD	Y+3,R5
     3FB 9020 009B LDS	R2,0x009B
     3FD FE25      SBRS	R2,5
     3FE CFFC      RJMP	0x03FB
     3FF E28B      LDI	R24,0x2B
     400 9380 009C STS	0x009C,R24
(0243) 		     while(!(UCSR1A&(1<<UDRE1)));
     402 9020 009B LDS	R2,0x009B
     404 FE25      SBRS	R2,5
     405 CFFC      RJMP	0x0402
(0244) 		     UDR1=(n/10000)%10+48;
     406 E180      LDI	R24,0x10
     407 E297      LDI	R25,0x27
     408 E0A0      LDI	R26,0
     409 E0B0      LDI	R27,0
     40A 8108      LDD	R16,Y+0
     40B 8119      LDD	R17,Y+1
     40C 812A      LDD	R18,Y+2
     40D 813B      LDD	R19,Y+3
     40E 93BA      ST	R27,-Y
     40F 93AA      ST	R26,-Y
     410 939A      ST	R25,-Y
     411 938A      ST	R24,-Y
     412 940E 0777 CALL	div32s
     414 E08A      LDI	R24,0xA
     415 E090      LDI	R25,0
     416 E0A0      LDI	R26,0
     417 E0B0      LDI	R27,0
     418 93BA      ST	R27,-Y
     419 93AA      ST	R26,-Y
     41A 939A      ST	R25,-Y
     41B 938A      ST	R24,-Y
     41C 940E 0779 CALL	mod32s
     41E 0118      MOVW	R2,R16
     41F 0129      MOVW	R4,R18
     420 E380      LDI	R24,0x30
     421 E090      LDI	R25,0
     422 E0A0      LDI	R26,0
     423 E0B0      LDI	R27,0
     424 0E28      ADD	R2,R24
     425 1E39      ADC	R3,R25
     426 1E4A      ADC	R4,R26
     427 1E5B      ADC	R5,R27
     428 9220 009C STS	0x009C,R2
(0245) 		     while(!(UCSR1A&(1<<UDRE1)));
     42A 9020 009B LDS	R2,0x009B
     42C FE25      SBRS	R2,5
     42D CFFC      RJMP	0x042A
(0246) 		     UDR1=(n/1000)%10+48;
     42E EE88      LDI	R24,0xE8
     42F E093      LDI	R25,3
     430 E0A0      LDI	R26,0
     431 E0B0      LDI	R27,0
     432 8108      LDD	R16,Y+0
     433 8119      LDD	R17,Y+1
     434 812A      LDD	R18,Y+2
     435 813B      LDD	R19,Y+3
     436 93BA      ST	R27,-Y
     437 93AA      ST	R26,-Y
     438 939A      ST	R25,-Y
     439 938A      ST	R24,-Y
     43A 940E 0777 CALL	div32s
     43C E08A      LDI	R24,0xA
     43D E090      LDI	R25,0
     43E E0A0      LDI	R26,0
     43F E0B0      LDI	R27,0
     440 93BA      ST	R27,-Y
     441 93AA      ST	R26,-Y
     442 939A      ST	R25,-Y
     443 938A      ST	R24,-Y
     444 940E 0779 CALL	mod32s
     446 0118      MOVW	R2,R16
     447 0129      MOVW	R4,R18
     448 E380      LDI	R24,0x30
     449 E090      LDI	R25,0
     44A E0A0      LDI	R26,0
     44B E0B0      LDI	R27,0
     44C 0E28      ADD	R2,R24
     44D 1E39      ADC	R3,R25
     44E 1E4A      ADC	R4,R26
     44F 1E5B      ADC	R5,R27
     450 9220 009C STS	0x009C,R2
(0247) 			 while(!(UCSR1A&(1<<UDRE1)));
     452 9020 009B LDS	R2,0x009B
     454 FE25      SBRS	R2,5
     455 CFFC      RJMP	0x0452
(0248) 		     UDR1=(n/100)%10+48;
     456 E684      LDI	R24,0x64
     457 E090      LDI	R25,0
     458 E0A0      LDI	R26,0
     459 E0B0      LDI	R27,0
     45A 8108      LDD	R16,Y+0
     45B 8119      LDD	R17,Y+1
     45C 812A      LDD	R18,Y+2
     45D 813B      LDD	R19,Y+3
     45E 93BA      ST	R27,-Y
     45F 93AA      ST	R26,-Y
     460 939A      ST	R25,-Y
     461 938A      ST	R24,-Y
     462 940E 0777 CALL	div32s
     464 E08A      LDI	R24,0xA
     465 E090      LDI	R25,0
     466 E0A0      LDI	R26,0
     467 E0B0      LDI	R27,0
     468 93BA      ST	R27,-Y
     469 93AA      ST	R26,-Y
     46A 939A      ST	R25,-Y
     46B 938A      ST	R24,-Y
     46C 940E 0779 CALL	mod32s
     46E 0118      MOVW	R2,R16
     46F 0129      MOVW	R4,R18
     470 E380      LDI	R24,0x30
     471 E090      LDI	R25,0
     472 E0A0      LDI	R26,0
     473 E0B0      LDI	R27,0
     474 0E28      ADD	R2,R24
     475 1E39      ADC	R3,R25
     476 1E4A      ADC	R4,R26
     477 1E5B      ADC	R5,R27
     478 9220 009C STS	0x009C,R2
(0249) 			 while(!(UCSR1A&(1<<UDRE1)));
     47A 9020 009B LDS	R2,0x009B
     47C FE25      SBRS	R2,5
     47D CFFC      RJMP	0x047A
(0250) 		     UDR1=(n/10)%10+48;
     47E E08A      LDI	R24,0xA
     47F E090      LDI	R25,0
     480 E0A0      LDI	R26,0
     481 E0B0      LDI	R27,0
     482 8108      LDD	R16,Y+0
     483 8119      LDD	R17,Y+1
     484 812A      LDD	R18,Y+2
     485 813B      LDD	R19,Y+3
     486 93BA      ST	R27,-Y
     487 93AA      ST	R26,-Y
     488 939A      ST	R25,-Y
     489 938A      ST	R24,-Y
     48A 940E 0777 CALL	div32s
     48C E08A      LDI	R24,0xA
     48D E090      LDI	R25,0
     48E E0A0      LDI	R26,0
     48F E0B0      LDI	R27,0
     490 93BA      ST	R27,-Y
     491 93AA      ST	R26,-Y
     492 939A      ST	R25,-Y
     493 938A      ST	R24,-Y
     494 940E 0779 CALL	mod32s
     496 0118      MOVW	R2,R16
     497 0129      MOVW	R4,R18
     498 E380      LDI	R24,0x30
     499 E090      LDI	R25,0
     49A E0A0      LDI	R26,0
     49B E0B0      LDI	R27,0
     49C 0E28      ADD	R2,R24
     49D 1E39      ADC	R3,R25
     49E 1E4A      ADC	R4,R26
     49F 1E5B      ADC	R5,R27
     4A0 9220 009C STS	0x009C,R2
(0251) 			 while(!(UCSR1A&(1<<UDRE1)));
     4A2 9020 009B LDS	R2,0x009B
     4A4 FE25      SBRS	R2,5
     4A5 CFFC      RJMP	0x04A2
(0252) 		     UDR1=n%10+48;
     4A6 E08A      LDI	R24,0xA
     4A7 E090      LDI	R25,0
     4A8 E0A0      LDI	R26,0
     4A9 E0B0      LDI	R27,0
     4AA 8108      LDD	R16,Y+0
     4AB 8119      LDD	R17,Y+1
     4AC 812A      LDD	R18,Y+2
     4AD 813B      LDD	R19,Y+3
     4AE 93BA      ST	R27,-Y
     4AF 93AA      ST	R26,-Y
     4B0 939A      ST	R25,-Y
     4B1 938A      ST	R24,-Y
     4B2 940E 0779 CALL	mod32s
     4B4 0118      MOVW	R2,R16
     4B5 0129      MOVW	R4,R18
     4B6 E380      LDI	R24,0x30
     4B7 E090      LDI	R25,0
     4B8 E0A0      LDI	R26,0
     4B9 E0B0      LDI	R27,0
     4BA 0E28      ADD	R2,R24
     4BB 1E39      ADC	R3,R25
     4BC 1E4A      ADC	R4,R26
     4BD 1E5B      ADC	R5,R27
     4BE 9220 009C STS	0x009C,R2
(0253) 			if (huanhang)
     4C0 8408      LDD	R0,Y+8
     4C1 2000      TST	R0
     4C2 F079      BEQ	0x04D2
(0254) 			 {
(0255) 			  while(!(UCSR1A&(1<<UDRE1)));
     4C3 9020 009B LDS	R2,0x009B
     4C5 FE25      SBRS	R2,5
     4C6 CFFC      RJMP	0x04C3
(0256) 		      UDR1=0x0d;
     4C7 E08D      LDI	R24,0xD
     4C8 9380 009C STS	0x009C,R24
(0257) 			  while(!(UCSR1A&(1<<UDRE1)));
     4CA 9020 009B LDS	R2,0x009B
     4CC FE25      SBRS	R2,5
     4CD CFFC      RJMP	0x04CA
(0258) 		      UDR1=0x0a;
     4CE E08A      LDI	R24,0xA
     4CF 9380 009C STS	0x009C,R24
(0259) 			 }
     4D1 C00E      RJMP	0x04E0
(0260) 			 else
(0261) 			 {
(0262) 			  while(!(UCSR1A&(1<<UDRE1)));
     4D2 9020 009B LDS	R2,0x009B
     4D4 FE25      SBRS	R2,5
     4D5 CFFC      RJMP	0x04D2
(0263) 		      UDR1=0x20;
     4D6 E280      LDI	R24,0x20
     4D7 9380 009C STS	0x009C,R24
(0264) 			  while(!(UCSR1A&(1<<UDRE1)));
     4D9 9020 009B LDS	R2,0x009B
     4DB FE25      SBRS	R2,5
     4DC CFFC      RJMP	0x04D9
(0265) 		      UDR1=0x20;
     4DD E280      LDI	R24,0x20
     4DE 9380 009C STS	0x009C,R24
(0266) 			 } 
     4E0 9628      ADIW	R28,0x8
     4E1 9508      RET
(0267) }
(0268) 
(0269) 
(0270) 
(0271) //TIMER0 initialize - prescale:64
(0272) // WGM: PWM Fast
(0273) // desired value: 1KHz
(0274) // actual value:  0.488KHz (-104.8%)
(0275) void timer0_init(void)
(0276) {
(0277)  TCCR0 = 0x00; //stop
_timer0_init:
     4E2 2422      CLR	R2
     4E3 BE23      OUT	0x33,R2
(0278)  ASSR  = 0x00; //set async mode
     4E4 BE20      OUT	0x30,R2
(0279)  TCNT0 = 0x01; //set count
     4E5 E081      LDI	R24,1
     4E6 BF82      OUT	0x32,R24
(0280)  OCR0  = 0x0f;
     4E7 E08F      LDI	R24,0xF
     4E8 BF81      OUT	0x31,R24
(0281)  TCCR0 = 0x6C; //start timer
     4E9 E68C      LDI	R24,0x6C
     4EA BF83      OUT	0x33,R24
     4EB 9508      RET
(0282) }
(0283) 
(0284) //TIMER1 initialize - prescale:64
(0285) // WGM: 5) PWM 8bit fast, TOP=0x00FF
(0286) // desired value: 1KHz
(0287) // actual value:  0.488KHz (104.8%)

⌨️ 快捷键说明

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