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

📄 jidong.lst

📁 基于m16的寻迹寻光小车程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
      46 E5CF      LDI	R28,0x5F
      47 E0D4      LDI	R29,4
      48 BFCD      OUT	0x3D,R28
      49 BFDE      OUT	0x3E,R29
      4A 51CE      SUBI	R28,0x1E
      4B 40D0      SBCI	R29,0
      4C EA0A      LDI	R16,0xAA
      4D 8308      STD	Y+0,R16
      4E 2400      CLR	R0
      4F E8EB      LDI	R30,0x8B
      50 E0F0      LDI	R31,0
      51 E010      LDI	R17,0
      52 38EC      CPI	R30,0x8C
      53 07F1      CPC	R31,R17
      54 F011      BEQ	0x0057
      55 9201      ST	R0,Z+
      56 CFFB      RJMP	0x0052
      57 8300      STD	Z+0,R16
      58 E6E0      LDI	R30,0x60
      59 E0F0      LDI	R31,0
      5A E6A0      LDI	R26,0x60
      5B E0B0      LDI	R27,0
      5C E010      LDI	R17,0
      5D E000      LDI	R16,0
      5E BF0B      OUT	0x3B,R16
      5F 38EB      CPI	R30,0x8B
      60 07F1      CPC	R31,R17
      61 F021      BEQ	0x0066
      62 95C8      LPM
      63 9631      ADIW	R30,1
      64 920D      ST	R0,X+
      65 CFF9      RJMP	0x005F
      66 940E 0599 CALL	_main
_exit:
      68 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\复件自~1\自动充电小车\298\jidong.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) //#include "lcd.h"
(0004) #include "delay.h"
(0005) 
(0006) #define uchar unsigned char
(0007) #define uint  unsigned int
(0008) 
(0009) ////////////////////////////////////////////////////////////////////
(0010) //部分函数声明
(0011) void time0_start( void );
(0012) void time0_stop( void );
(0013) ///////////////////////////////////////////////////////////////////
(0014) 
(0015) ///////////////////////////////////////L298驱动/////////////////////////////////////
(0016) void L298_port_init( void )
(0017) {
(0018)     DDRC |= 0b11111100;
_L298_port_init:
      69 B384      IN	R24,0x14
      6A 6F8C      ORI	R24,0xFC
      6B BB84      OUT	0x14,R24
      6C 9508      RET
(0019) }
(0020) 
(0021) void go_ahead( void )
(0022) {
(0023)  	PORTC &=~ 0B11111100;
_go_ahead:
      6D B385      IN	R24,0x15
      6E 7083      ANDI	R24,3
      6F BB85      OUT	0x15,R24
(0024)     PORTC |= 0b11010100;
      70 B385      IN	R24,0x15
      71 6D84      ORI	R24,0xD4
      72 BB85      OUT	0x15,R24
      73 9508      RET
(0025) }
(0026) 
(0027) void go_back( void )
(0028) {
(0029)  	PORTC &=~ 0B11111100;
_go_back:
      74 B385      IN	R24,0x15
      75 7083      ANDI	R24,3
      76 BB85      OUT	0x15,R24
(0030)     PORTC |= 0b11101000;
      77 B385      IN	R24,0x15
      78 6E88      ORI	R24,0xE8
      79 BB85      OUT	0x15,R24
      7A 9508      RET
(0031) }
(0032) 
(0033) void turn_l( void )
(0034) {
(0035)  	PORTC &=~ 0B11111100;
_turn_l:
      7B B385      IN	R24,0x15
      7C 7083      ANDI	R24,3
      7D BB85      OUT	0x15,R24
(0036)     PORTC |= 0b11011000;
      7E B385      IN	R24,0x15
      7F 6D88      ORI	R24,0xD8
      80 BB85      OUT	0x15,R24
      81 9508      RET
(0037) }
(0038) 
(0039) void turn_r( void )
(0040) {
(0041)  	PORTC &=~ 0B11111100;
_turn_r:
      82 B385      IN	R24,0x15
      83 7083      ANDI	R24,3
      84 BB85      OUT	0x15,R24
(0042)     PORTC |= 0b11100100;
      85 B385      IN	R24,0x15
      86 6E84      ORI	R24,0xE4
      87 BB85      OUT	0x15,R24
      88 9508      RET
(0043) }
(0044) 
(0045) void car_stop( void )
(0046) {
(0047)  	 PORTC &=~ 0B11111100;
_car_stop:
      89 B385      IN	R24,0x15
      8A 7083      ANDI	R24,3
      8B BB85      OUT	0x15,R24
      8C 9508      RET
_get_5small:
  small_tmp            --> Y,+4
  k                    --> Y,+0
  e                    --> Y,+48
  d                    --> Y,+44
  c                    --> Y,+40
  b                    --> Y,+36
  a                    --> Y,+32
      8D 940E 0885 CALL	push_arg4
      8F 97A0      SBIW	R28,0x20
(0048) }
(0049)  	 
(0050) ///////////////////////////////////////L298驱动部分结束/////////////////////////////////
(0051) 
(0052) 
(0053) ///////////////////////////////////////小车寻光部分/////////////////////////////////////
(0054) #define Vref  2.56                //定义基准电压值
(0055) //#define Vref  1.00
(0056) 
(0057) //通道选择宏定义
(0058) #define AD_mux(n)  { ADMUX = ( 0xC0 | n ); } //内部基准 0xC0,        
(0059) 
(0060) //输入通道端口配置
(0061) #define ADC0_in  { DDRA &= 0XFE; PORTA |= 0X01; } //输入,高阻态
(0062) #define ADC1_in  { DDRA &= 0XFD; PORTA |= 0X02; }
(0063) #define ADC2_in  { DDRA &= 0XFB; PORTA |= 0X04; }
(0064) #define ADC3_in  { DDRA &= 0XF7; PORTA |= 0X08; }
(0065) #define ADC4_in  { DDRA &= 0XEF; PORTA |= 0X10; }
(0066) //#define ADC5_in  { DDRA &= 0XDF; PORTA |= 0X20; }
(0067) //#define ADC6_in  { DDRA &= 0XBF; PORTA |= 0X40; }
(0068) //#define ADC7_in  { DDRA &= 0X7F; PORTA |= 0X80; }
(0069) 
(0070) //全局变量
(0071) uint small_flag = 0;   //取最小光敏代号存入该变量
(0072) 
(0073) uint adcl = 0;         //定义暂存低字节
(0074) uint adch = 0;         //高字节
(0075) uint adcvalue = 0;     //低+高
(0076) uchar ad_m = 0;        //初始化通道为0通道
(0077) 
(0078) float ad0_tmp = 0.0;   //转换完成后暂存值
(0079) float ad1_tmp = 0.0;
(0080) float ad2_tmp = 0.0;
(0081) float ad3_tmp = 0.0;
(0082) float ad4_tmp = 0.0; 
(0083) 
(0084) //取三个数中的最小值
(0085) char get_5small( float a, float b, float c, float d, float e ) //ad0_tmp, ad1_tmp, ad2_tmp, ad3_tmp, ad4_tmp
(0086) {
(0087)     float small_tmp = 0.0;
      90 E50C      LDI	R16,0x5C
      91 E010      LDI	R17,0
      92 940E 094B CALL	lpm32
      94 830C      STD	Y+4,R16
      95 831D      STD	Y+5,R17
      96 832E      STD	Y+6,R18
      97 833F      STD	Y+7,R19
(0088)     float k = 0.0;
      98 E50C      LDI	R16,0x5C
      99 E010      LDI	R17,0
      9A 940E 094B CALL	lpm32
      9C 8308      STD	Y+0,R16
      9D 8319      STD	Y+1,R17
      9E 832A      STD	Y+2,R18
      9F 833B      STD	Y+3,R19
(0089)     
(0090)     k  = ( ( a < b ? a : b ) < c ) ? ( a < b ? a : b ) : c;
      A0 A108      LDD	R16,Y+32
      A1 A119      LDD	R17,Y+33
      A2 A12A      LDD	R18,Y+34
      A3 A13B      LDD	R19,Y+35
      A4 01CE      MOVW	R24,R28
      A5 9684      ADIW	R24,0x24
      A6 939A      ST	R25,-Y
      A7 938A      ST	R24,-Y
      A8 940E 0BB3 CALL	fpcmp1
      AA F44C      BGE	0x00B4
      AB A028      LDD	R2,Y+32
      AC A039      LDD	R3,Y+33
      AD A04A      LDD	R4,Y+34
      AE A05B      LDD	R5,Y+35
      AF 862C      STD	Y+12,R2
      B0 863D      STD	Y+13,R3
      B1 864E      STD	Y+14,R4
      B2 865F      STD	Y+15,R5
      B3 C008      RJMP	0x00BC
      B4 A02C      LDD	R2,Y+36
      B5 A03D      LDD	R3,Y+37
      B6 A04E      LDD	R4,Y+38
      B7 A05F      LDD	R5,Y+39
      B8 862C      STD	Y+12,R2
      B9 863D      STD	Y+13,R3
      BA 864E      STD	Y+14,R4
      BB 865F      STD	Y+15,R5
      BC 850C      LDD	R16,Y+12
      BD 851D      LDD	R17,Y+13
      BE 852E      LDD	R18,Y+14
      BF 853F      LDD	R19,Y+15
      C0 01CE      MOVW	R24,R28
      C1 9688      ADIW	R24,0x28
      C2 939A      ST	R25,-Y
      C3 938A      ST	R24,-Y
      C4 940E 0BB3 CALL	fpcmp1
      C6 F52C      BGE	0x00EC
      C7 A108      LDD	R16,Y+32
      C8 A119      LDD	R17,Y+33
      C9 A12A      LDD	R18,Y+34
      CA A13B      LDD	R19,Y+35
      CB 01CE      MOVW	R24,R28
      CC 9684      ADIW	R24,0x24
      CD 939A      ST	R25,-Y
      CE 938A      ST	R24,-Y
      CF 940E 0BB3 CALL	fpcmp1
      D1 F44C      BGE	0x00DB
      D2 A028      LDD	R2,Y+32
      D3 A039      LDD	R3,Y+33
      D4 A04A      LDD	R4,Y+34
      D5 A05B      LDD	R5,Y+35
      D6 8A28      STD	Y+16,R2
      D7 8A39      STD	Y+17,R3
      D8 8A4A      STD	Y+18,R4
      D9 8A5B      STD	Y+19,R5
      DA C008      RJMP	0x00E3
      DB A02C      LDD	R2,Y+36
      DC A03D      LDD	R3,Y+37
      DD A04E      LDD	R4,Y+38
      DE A05F      LDD	R5,Y+39
      DF 8A28      STD	Y+16,R2
      E0 8A39      STD	Y+17,R3
      E1 8A4A      STD	Y+18,R4
      E2 8A5B      STD	Y+19,R5
      E3 8828      LDD	R2,Y+16
      E4 8839      LDD	R3,Y+17
      E5 884A      LDD	R4,Y+18
      E6 885B      LDD	R5,Y+19
      E7 8628      STD	Y+8,R2
      E8 8639      STD	Y+9,R3
      E9 864A      STD	Y+10,R4
      EA 865B      STD	Y+11,R5
      EB C008      RJMP	0x00F4
      EC A428      LDD	R2,Y+40
      ED A439      LDD	R3,Y+41
      EE A44A      LDD	R4,Y+42
      EF A45B      LDD	R5,Y+43
      F0 8628      STD	Y+8,R2
      F1 8639      STD	Y+9,R3
      F2 864A      STD	Y+10,R4
      F3 865B      STD	Y+11,R5
      F4 8428      LDD	R2,Y+8
      F5 8439      LDD	R3,Y+9
      F6 844A      LDD	R4,Y+10
      F7 845B      LDD	R5,Y+11
      F8 8228      STD	Y+0,R2
      F9 8239      STD	Y+1,R3
      FA 824A      STD	Y+2,R4
      FB 825B      STD	Y+3,R5
(0091)     small_tmp  = ( ( k < d ? k : d ) < e ) ? ( k < d ? k : d ) : e;
      FC 8108      LDD	R16,Y+0
      FD 8119      LDD	R17,Y+1
      FE 812A      LDD	R18,Y+2
      FF 813B      LDD	R19,Y+3
     100 01CE      MOVW	R24,R28
     101 968C      ADIW	R24,0x2C
     102 939A      ST	R25,-Y
     103 938A      ST	R24,-Y
     104 940E 0BB3 CALL	fpcmp1
     106 F44C      BGE	0x0110
     107 8028      LDD	R2,Y+0
     108 8039      LDD	R3,Y+1
     109 804A      LDD	R4,Y+2
     10A 805B      LDD	R5,Y+3
     10B 8E28      STD	Y+24,R2
     10C 8E39      STD	Y+25,R3
     10D 8E4A      STD	Y+26,R4
     10E 8E5B      STD	Y+27,R5
     10F C008      RJMP	0x0118
     110 A42C      LDD	R2,Y+44
     111 A43D      LDD	R3,Y+45
     112 A44E      LDD	R4,Y+46
     113 A45F      LDD	R5,Y+47
     114 8E28      STD	Y+24,R2
     115 8E39      STD	Y+25,R3
     116 8E4A      STD	Y+26,R4
     117 8E5B      STD	Y+27,R5
     118 8D08      LDD	R16,Y+24
     119 8D19      LDD	R17,Y+25
     11A 8D2A      LDD	R18,Y+26
     11B 8D3B      LDD	R19,Y+27
     11C 01CE      MOVW	R24,R28
     11D 96C0      ADIW	R24,0x30
     11E 939A      ST	R25,-Y
     11F 938A      ST	R24,-Y
     120 940E 0BB3 CALL	fpcmp1
     122 F52C      BGE	0x0148
     123 8108      LDD	R16,Y+0
     124 8119      LDD	R17,Y+1
     125 812A      LDD	R18,Y+2
     126 813B      LDD	R19,Y+3
     127 01CE      MOVW	R24,R28
     128 968C      ADIW	R24,0x2C
     129 939A      ST	R25,-Y
     12A 938A      ST	R24,-Y
     12B 940E 0BB3 CALL	fpcmp1
     12D F44C      BGE	0x0137
     12E 8028      LDD	R2,Y+0
     12F 8039      LDD	R3,Y+1
     130 804A      LDD	R4,Y+2
     131 805B      LDD	R5,Y+3
     132 8E2C      STD	Y+28,R2
     133 8E3D      STD	Y+29,R3
     134 8E4E      STD	Y+30,R4
     135 8E5F      STD	Y+31,R5
     136 C008      RJMP	0x013F
     137 A42C      LDD	R2,Y+44
     138 A43D      LDD	R3,Y+45
     139 A44E      LDD	R4,Y+46
     13A A45F      LDD	R5,Y+47
     13B 8E2C      STD	Y+28,R2
     13C 8E3D      STD	Y+29,R3
     13D 8E4E      STD	Y+30,R4
     13E 8E5F      STD	Y+31,R5
     13F 8C2C      LDD	R2,Y+28
     140 8C3D      LDD	R3,Y+29
     141 8C4E      LDD	R4,Y+30
     142 8C5F      LDD	R5,Y+31
     143 8A2C      STD	Y+20,R2
     144 8A3D      STD	Y+21,R3
     145 8A4E      STD	Y+22,R4
     146 8A5F      STD	Y+23,R5
     147 C008      RJMP	0x0150
     148 A828      LDD	R2,Y+48
     149 A839      LDD	R3,Y+49
     14A A84A      LDD	R4,Y+50
     14B A85B      LDD	R5,Y+51
     14C 8A2C      STD	Y+20,R2
     14D 8A3D      STD	Y+21,R3
     14E 8A4E      STD	Y+22,R4
     14F 8A5F      STD	Y+23,R5
     150 882C      LDD	R2,Y+20
     151 883D      LDD	R3,Y+21
     152 884E      LDD	R4,Y+22
     153 885F      LDD	R5,Y+23
     154 822C      STD	Y+4,R2
     155 823D      STD	Y+5,R3
     156 824E      STD	Y+6,R4
     157 825F      STD	Y+7,R5
(0092)     
(0093)     if( small_tmp == a ) return 0;
     158 810C      LDD	R16,Y+4
     159 811D      LDD	R17,Y+5
     15A 812E      LDD	R18,Y+6
     15B 813F      LDD	R19,Y+7
     15C 01CE      MOVW	R24,R28
     15D 9680      ADIW	R24,0x20
     15E 939A      ST	R25,-Y
     15F 938A      ST	R24,-Y
     160 940E 0BB3 CALL	fpcmp1
     162 F411      BNE	0x0165
     163 2700      CLR	R16
     164 C035      RJMP	0x019A
(0094) 	else if( small_tmp == b ) return 1;
     165 810C      LDD	R16,Y+4
     166 811D      LDD	R17,Y+5
     167 812E      LDD	R18,Y+6
     168 813F      LDD	R19,Y+7
     169 01CE      MOVW	R24,R28
     16A 9684      ADIW	R24,0x24
     16B 939A      ST	R25,-Y
     16C 938A      ST	R24,-Y
     16D 940E 0BB3 CALL	fpcmp1
     16F F411      BNE	0x0172
     170 E001      LDI	R16,1
     171 C028      RJMP	0x019A
(0095) 	else if( small_tmp == c ) return 2;
     172 810C      LDD	R16,Y+4
     173 811D      LDD	R17,Y+5
     174 812E      LDD	R18,Y+6
     175 813F      LDD	R19,Y+7
     176 01CE      MOVW	R24,R28
     177 9688      ADIW	R24,0x28
     178 939A      ST	R25,-Y
     179 938A      ST	R24,-Y
     17A 940E 0BB3 CALL	fpcmp1
     17C F411      BNE	0x017F
     17D E002      LDI	R16,2
     17E C01B      RJMP	0x019A

⌨️ 快捷键说明

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