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

📄 m128_test.lst

📁 AVR单片机开发中
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0637 930A      ST	R16,-Y
    0638 940E0F18  CALL	div32f
    063A 93100102  STS	R17,0x102
    063C 93000101  STS	R16,0x101
    063E 93300104  STS	R19,0x104
    0640 93200103  STS	R18,0x103
(0327) 	return 1;
    0642 E001      LDI	R16,1
    0643 E010      LDI	R17,0
    0644 962A      ADIW	R28,0xA
    0645 940E0FD3  CALL	pop_gset4
    0647 9508      RET
_relay_write:
  p                    --> R20
  data                 --> R16
    0648 940E0FA6  CALL	push_gset1
(0328) 			
(0329) }
(0330) ///////////////////////////////////////////////////////////////////////////////	
(0331) void relay_write(unsigned char data)
(0332) 	  {
(0333) 	         unsigned char *p;
(0334) 	         p = (unsigned char *) 0x2250;
    064A E540      LDI	R20,0x50
    064B E252      LDI	R21,0x22
(0335) 	         
(0336) 	              *p=data;
    064C 01FA      MOVW	R30,R20
    064D 8300      STD	R16,0+Z
(0337)    
(0338) 	   }
    064E 940E0FA9  CALL	pop_gset1
    0650 9508      RET
(0339) 
(0340) 
(0341) unsigned char relay_read(void)	  
(0342) {
(0343) 
(0344)        unsigned char *p;
(0345) 	   p = (unsigned char *) 0x2250;
_relay_read:
  p                    --> R16
    0651 E500      LDI	R16,0x50
    0652 E212      LDI	R17,0x22
(0346)        return   *p;
    0653 01F8      MOVW	R30,R16
    0654 8100      LDD	R16,0+Z
    0655 9508      RET
(0347) 
(0348) } 
(0349) ////////////////////////////////////////////////////////////////////////////
(0350) /////////////
(0351) /////////              pwm
(0352) ///////
(0353) /////////////////////////////////////////////////////////////////////////////
(0354) void  motor_pwm ( int left,int right )
(0355) {
(0356) 
(0357)  DDRB|=0XE0;
_motor_pwm:
  right                --> R18
  left                 --> R16
    0656 B387      IN	R24,P17
    0657 6E80      ORI	R24,0xE0
    0658 BB87      OUT	P17,R24
(0358)  TCCR1A=0xA8;
    0659 EA88      LDI	R24,0xA8
    065A BD8F      OUT	P2F,R24
(0359)  TCCR1B=0x11;
    065B E181      LDI	R24,0x11
    065C BD8E      OUT	P2E,R24
(0360)  ICR1  = 0x6000;        
    065D E080      LDI	R24,0
    065E E690      LDI	R25,0x60
    065F 93900047  STS	R25,0x47
    0661 93800046  STS	R24,0x46
(0361)  OCR1A = left;        /////12288 is  stop
    0663 9310004B  STS	R17,0x4B
    0665 9300004A  STS	R16,0x4A
(0362)  OCR1B = right;       //// range is from 0 to 24576
    0667 93300049  STS	R19,0x49
    0669 93200048  STS	R18,0x48
(0363) 
(0364)  //OCR1C = 0x3000 + mid;
(0365) }
    066B 9508      RET
(0366) 
(0367) void  mainboard_pwm(int pwm1, int pwm2, int pwm3)
(0368) {
(0369)     DDRE |= 0x38;
_mainboard_pwm:
  pwm3                 --> Y+0
  pwm2                 --> R18
  pwm1                 --> R16
    066C B182      IN	R24,P02
    066D 6388      ORI	R24,0x38
    066E B982      OUT	P02,R24
(0370)     TCCR3A = 0xA8;
    066F EA88      LDI	R24,0xA8
    0670 9380008B  STS	R24,0x8B
(0371)     TCCR3B = 0x12;
    0672 E182      LDI	R24,0x12
    0673 9380008A  STS	R24,0x8A
(0372)     ICR3  = 0x4E20;
    0675 E280      LDI	R24,0x20
    0676 E49E      LDI	R25,0x4E
    0677 93900081  STS	R25,0x81
    0679 93800080  STS	R24,0x80
(0373)     OCR3A = pwm1;
    067B 93100087  STS	R17,0x87
    067D 93000086  STS	R16,0x86
(0374)     OCR3B = pwm2;
    067F 93300085  STS	R19,0x85
    0681 93200084  STS	R18,0x84
(0375) 	OCR3C = pwm3;
    0683 8008      LDD	R0,0+Y
    0684 8019      LDD	R1,1+Y
    0685 92100083  STS	R1,0x83
    0687 92000082  STS	R0,0x82
(0376)    
(0377)  }
    0689 9508      RET
_mainboard_pwm1:
  frequ                --> R20
    068A 940E0FA6  CALL	push_gset1
    068C 01A8      MOVW	R20,R16
(0378) 
(0379)  void  mainboard_pwm1( int frequ)
(0380) {
(0381)     DDRE |= 0x38;
    068D B182      IN	R24,P02
    068E 6388      ORI	R24,0x38
    068F B982      OUT	P02,R24
(0382)     TCCR3A = 0xA8;
    0690 EA88      LDI	R24,0xA8
    0691 9380008B  STS	R24,0x8B
(0383)     TCCR3B = 0x12;
    0693 E182      LDI	R24,0x12
    0694 9380008A  STS	R24,0x8A
(0384)     ICR3  = frequ;
    0696 93500081  STS	R21,0x81
    0698 93400080  STS	R20,0x80
(0385)     OCR3A = frequ/2;
    069A E022      LDI	R18,2
    069B E030      LDI	R19,0
    069C 018A      MOVW	R16,R20
    069D 940E0E29  CALL	div16s
    069F 93100087  STS	R17,0x87
    06A1 93000086  STS	R16,0x86
(0386)     OCR3B = frequ/2;
    06A3 E022      LDI	R18,2
    06A4 E030      LDI	R19,0
    06A5 018A      MOVW	R16,R20
    06A6 940E0E29  CALL	div16s
    06A8 93100085  STS	R17,0x85
    06AA 93000084  STS	R16,0x84
(0387) 	OCR3C = frequ/2;
    06AC E022      LDI	R18,2
    06AD E030      LDI	R19,0
    06AE 018A      MOVW	R16,R20
    06AF 940E0E29  CALL	div16s
    06B1 93100083  STS	R17,0x83
    06B3 93000082  STS	R16,0x82
(0388)    
(0389)  }
    06B5 940E0FA9  CALL	pop_gset1
    06B7 9508      RET
(0390) //////////////////////////////////////////////////////////////////////////////
(0391) //
(0392) //
(0393) /////////////////////////////////////////////////////////////////////////////////
(0394)   
(0395) 	   
(0396) 	
(0397) 
(0398) 
(0399) 
(0400) 
(0401) //call this routine to initialize all peripherals
(0402) void init_devices(void)
(0403) {
(0404)  //stop errant interrupts until set up
(0405)  CLI(); //disable all interrupts
_init_devices:
    06B8 94F8      BCLR	7
(0406)  XDIV  = 0x00; //xtal divider
    06B9 2422      CLR	R2
    06BA BE2C      OUT	P3C,R2
(0407)  XMCRA = 0x00; //external memory
    06BB 9220006D  STS	R2,0x6D
(0408)  init_isp_devices();
    06BD 940E045B  CALL	_init_isp_devices
(0409)  init_gyro();
    06BF DEDC      RCALL	_init_gyro
(0410)  uart0_init();
    06C0 DDC9      RCALL	_uart0_init
(0411)  uart1_init();
    06C1 DDD9      RCALL	_uart1_init
(0412)  MCUCR = 0x80;
    06C2 E880      LDI	R24,0x80
    06C3 BF85      OUT	P35,R24
(0413)  EICRA = 0x00; //extended ext ints
    06C4 2422      CLR	R2
    06C5 9220006A  STS	R2,0x6A
(0414)  EICRB = 0x00; //extended ext ints
    06C7 BE2A      OUT	P3A,R2
(0415)  EIMSK = 0x00;
    06C8 BE29      OUT	P39,R2
(0416)  TIMSK = 0x00; //timer interrupt sources
    06C9 BE27      OUT	P37,R2
(0417)  ETIMSK = 0x00; //extended timer interrupt sources
    06CA 9220007D  STS	R2,0x7D
(0418)  SEI(); //re-enable interrupts
    06CC 9478      BSET	7
(0419)  //all peripherals are now initialized
(0420) }
    06CD 9508      RET
(0421) void test_motor_pwm(void)
(0422) {
(0423)     motor_pwm(12288,12288);
_test_motor_pwm:
    06CE E020      LDI	R18,0
    06CF E330      LDI	R19,0x30
    06D0 E000      LDI	R16,0
    06D1 E310      LDI	R17,0x30
    06D2 DF83      RCALL	_motor_pwm
(0424)   do
(0425)   {
(0426) 	 
(0427) 	 xy_set(0x01);
    06D3 E001      LDI	R16,1
    06D4 DE22      RCALL	_xy_set
(0428) 	 printf_str(" inp  value :");
    06D5 EB0E      LDI	R16,0xBE
    06D6 E011      LDI	R17,1
    06D7 DE94      RCALL	_printf_str
(0429) 	 delay_nms(100);
    06D8 E604      LDI	R16,0x64
    06D9 E010      LDI	R17,0
    06DA DDA0      RCALL	_delay_nms
(0430) 	 xy_set(0x21);
    06DB E201      LDI	R16,0x21
    06DC DE1A      RCALL	_xy_set
(0431) 	 printf_str("              ");
    06DD EA0F      LDI	R16,0xAF
    06DE E011      LDI	R17,1
    06DF DE8C      RCALL	_printf_str
(0432) 	 xy_set(0x21);
    06E0 E201      LDI	R16,0x21
    06E1 DE15      RCALL	_xy_set
(0433) 	 left=scanf_int();
    06E2 DDF1      RCALL	_scanf_int
    06E3 93100229  STS	R17,_left+1
    06E5 93000228  STS	R16,_left
(0434) 	 delay_nms(100);
    06E7 E604      LDI	R16,0x64
    06E8 E010      LDI	R17,0
    06E9 DD91      RCALL	_delay_nms
(0435) 	 xy_set(0x31);
    06EA E301      LDI	R16,0x31
    06EB DE0B      RCALL	_xy_set
(0436) 	 printf_str("              ");
    06EC EA0F      LDI	R16,0xAF
    06ED E011      LDI	R17,1
    06EE DE7D      RCALL	_printf_str
(0437) 	 xy_set(0x31);
    06EF E301      LDI	R16,0x31
    06F0 DE06      RCALL	_xy_set
(0438) 	 delay_nms(100);
    06F1 E604      LDI	R16,0x64
    06F2 E010      LDI	R17,0
    06F3 DD87      RCALL	_delay_nms
(0439) 	 printf_int(left);
    06F4 91000228  LDS	R16,_left
    06F6 91100229  LDS	R17,_left+1
    06F8 DE64      RCALL	_printf_int
(0440) 	 right=left;
    06F9 90200228  LDS	R2,_left
    06FB 90300229  LDS	R3,_left+1
    06FD 92300227  STS	R3,_right+1
    06FF 92200226  STS	R2,_right
(0441)      motor_pwm(right,left);
    0701 0191      MOVW	R18,R2
    0702 0181      MOVW	R16,R2
    0703 DF52      RCALL	_motor_pwm
(0442) 	  }
(0443)     while (1);
    0704 CFCE      RJMP	0x06D3
(0444) 	
(0445) 
(0446) }
    0705 9508      RET
(0447) void test_isp_cnt()
(0448) {
(0449)      motor_pwm(12288,12288);
_test_isp_cnt:
    0706 E020      LDI	R18,0
    0707 E330      LDI	R19,0x30
    0708 E000      LDI	R16,0
    0709 E310      LDI	R17,0x30
    070A DF4B      RCALL	_motor_pwm
(0450)      xy_set(0x01);
    070B E001      LDI	R16,1
    070C DDEA      RCALL	_xy_set
(0451) 	 printf_str(" inp  value :");
    070D EB0E      LDI	R16,0xBE
    070E E011      LDI	R17,1
    070F DE5C      RCALL	_printf_str
(0452) 	 delay_nms(100);
    0710 E604      LDI	R16,0x64
    0711 E010      LDI	R17,0
    0712 DD68      RCALL	_delay_nms
(0453) 	 xy_set(0x21);
    0713 E201      LDI	R16,0x21
    0714 DDE2      RCALL	_xy_set
(0454) 	 printf_str("        ");
    0715 EA06      LDI	R16,0xA6
    0716 E011      LDI	R17,1
    0717 DE54      RCALL	_printf_str
(0455) 	 xy_set(0x21);
    0718 E201      LDI	R16,0x21
    0719 DDDD      RCALL	_xy_set
(0456) 	 left=scanf_int();
    071A DDB9      RCALL	_scanf_int
    071B 93100229  STS	R17,_left+1
    071D 93000228  STS	R16,_left
(0457) 	 delay_nms(100);
    071F E604      LDI	R16,0x64
    0720 E010      LDI	R17,0
    0721 DD59      RCALL	_delay_nms
(0458) 	 xy_set(0x31);
    0722 E301      LDI	R16,0x31
    0723 DDD3      RCALL	_xy_set
(0459) 	 printf_str("        ");
    0724 EA06      LDI	R16,0xA6
    0725 E011      LDI	R17,1
    0726 DE45      RCALL	_printf_str
(0460) 	 xy_set(0x31);
    0727 E301      LDI	R16,0x31
    0728 DDCE      RCALL	_xy_set
(0461) 	 delay_nms(100);
    0729 E604      LDI	R16,0x64
    072A E010      LDI	R17,0
    072B DD4F      RCALL	_delay_nms
(0462) 	 printf_int(left);
    072C 91000228  LDS	R16,_left
    072E 91100229  LDS	R17,_left+1
    0730 DE2C      RCALL	_printf_int
(0463) 	 right=left;
    0731 90200228  LDS	R2,_left
    0733 90300229  LDS	R3,_left+1
    0735 92300227  STS	R3,_right+1
    0737 92200226  STS	R2,_right
(0464)      motor_pwm(right,left);
    0739 0191      MOVW	R18,R2
    073A 0181      MOVW	R16,R2
    073B DF1A      RCALL	_motor_pwm
(0465) 	 
(0466)    do
(0467) 	 {
(0468)      spi_cnt(CH1);
    073C E001      LDI	R16,1
    073D E010      LDI	R17,0
    073E 940E023B  CALL	_spi_cnt
(0469) 	 delay_nms(100);
    0740 E604      LDI	R16,0x64
    0741 E010      LDI	R17,0
    0742 DD38      RCALL	_delay_nms
(0470) 	 xy_set(0x27);
    0743 E207      LDI	R16,0x27
    0744 DDB2      RCALL	_xy_set
(0471) 	 printf_str("              ");
    0745 EA0F      LDI	R16,0xAF
    0746 E011      LDI	R17,1
    0747 DE24      RCALL	_printf_str
(0472) 	 xy_set(0x27);
    0748 E207      LDI	R16,0x27
    0749 DDAD      RCALL	_xy_set
(0473) 	 len_test=len/7168;
    074A E080      LDI	R24,0
    074B E19C      LDI	R25,0x1C
    074C E0A0      LDI	R26,0
    074D E0B0      LDI	R27,0
    074E 90400224  LDS	R4,_len+2
    0750 90500225  LDS	R5,_len+3
    0752 90200222  LDS	R2,_len
    0754 90300223  LDS	R3,_len+1
    0756 93BA      ST	R27,-Y
    0757 93AA      ST	R26,-Y
    0758 939A      ST	R25,-Y
    0759 938A      ST	R24,-Y
    075A 0181      MOVW	R16,R2
    075B 0192      MOVW	R18,R4
    075C 940E11DB  CALL	div32s
    075E 93100106  STS	R17,0x106
    0760 93000105  STS	R16,0x105
(0474) 	 printf_int(len_test);
    0762 DDFA      RCALL	_printf_int
(0475) 	 xy_set(0x01);
    0763 E001      LDI	R16,1
    0764 DD92      RCALL	_xy_set
(0476) 	 printf_hex(inp(0x250));
    0765 E500      LDI	R16,0x50
    0766 E012      LDI	R17,2
    0767 DE2A      RCALL	_inp
    0768 DDDC      RCALL	_printf_hex
(0477) 	
(0478) 	 delay_nms(100);
    0769 E604      LDI	R16,0x64
    076A E010      LDI	R17,0
    076B DD0F      RCALL	_delay_nms
(0479) 	 }
(0480) 	 while(1);
    076C CFCF      RJMP	0x073C
(0481) }
    076D 9508      RET
_gogo:
  k                    --> R22
  j                    --> R20
  speed                --> Y+2
  gowhere              --> Y+0
  i                    --> R10
    076E 940E0FC9  CALL	push_gset5
    0770 9724      SBIW	R28,4
(0482) 
(0483) void gogo(void)
(0484) {   
(0485)     int  speed = 0;
    0771 2400      CLR	R0
    0772 2411      CLR	R1
    0773 820A      STD	R0,2+Y
    0774 821B      STD	R1,3+Y
(0486)     int  gowhere = 0;
    0775 8208      STD	R0,0+Y
    0776 8219      STD	R1,1+Y
(0487) 	
(0488) 	int i=0,j=0,k=0;
    0777 24AA      CLR	R10
    0778 24BB      CLR	R11
    0779 2744      

⌨️ 快捷键说明

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