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

📄 left.lst

📁 AVR单片机系统开发经典实例部分源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    0047 EFCF      LDI	R28,0xFF
    0048 E1D0      LDI	R29,0x10
    0049 BFCD      OUT	0x3D,R28
    004A BFDE      OUT	0x3E,R29
    004B 51C0      SUBI	R28,0x10
    004C 40D0      SBCI	R29,0
    004D EA0A      LDI	R16,0xAA
    004E 8308      STD	Y+0,R16
    004F 2400      CLR	R0
    0050 E0E2      LDI	R30,2
    0051 E0F1      LDI	R31,1
    0052 E011      LDI	R17,1
    0053 30E2      CPI	R30,2
    0054 07F1      CPC	R31,R17
    0055 F011      BEQ	0x0058
    0056 9201      ST	R0,Z+
    0057 CFFB      RJMP	0x0053
    0058 8300      STD	Z+0,R16
    0059 E8EC      LDI	R30,0x8C
    005A E0F0      LDI	R31,0
    005B E0A0      LDI	R26,0
    005C E0B1      LDI	R27,1
    005D E010      LDI	R17,0
    005E 38EE      CPI	R30,0x8E
    005F 07F1      CPC	R31,R17
    0060 F021      BEQ	0x0065
    0061 95C8      LPM
    0062 9631      ADIW	R30,1
    0063 920D      ST	R0,X+
    0064 CFF9      RJMP	0x005E
    0065 940E00DD  CALL	_main
_exit:
    0067 CFFF      RJMP	_exit
FILE: C:\AVR\t1\main.c
(0001) #include<iom128v.h>
(0002) #include<STDIO.h>
(0003) #include<STRING.h>
(0004) #include<stdlib.h>
(0005) #include<MATH.h>
(0006) #define xtal 4
(0007) void delay_1ms(void)
(0008) 	 {
(0009) 	  unsigned int i;
(0010)  	  for(i=1;i<(unsigned int)(xtal*143-2);i++)
_delay_1ms:
  i                    --> R16
    0068 E001      LDI	R16,1
    0069 E010      LDI	R17,0
    006A C002      RJMP	0x006D
    006B 5F0F      SUBI	R16,0xFF
    006C 4F1F      SBCI	R17,0xFF
    006D 330A      CPI	R16,0x3A
    006E E0E2      LDI	R30,2
    006F 071E      CPC	R17,R30
    0070 F3D0      BCS	0x006B
    0071 9508      RET
(0011)       	; 
(0012) 	 }
(0013) 
(0014) void readfile(int map[50][50])
(0015) {
(0016) 	//加入打开地图
(0017)    ;
_readfile:
  map                  --> Y+0
    0072 9508      RET
(0018) 	
(0019) }
(0020) 
(0021) void save(int walked [50])
(0022) {
(0023) //	//保存地图
(0024) ;
_save:
  walked               --> Y+0
    0073 9508      RET
(0025) 
(0026) }
(0027) 
(0028) int judge(int walked [50])
(0029) {
(0030) 	;
(0031) 	//判断部分
(0032) ;
_judge:
  walked               --> Y+0
    0074 9508      RET
(0033) }
(0034) 
(0035) void renew(int walked [50])
(0036) {
(0037) 	;
_renew:
  walked               --> Y+0
    0075 9508      RET
_freenode:
  H                    --> R22
  head                 --> R20
  aa                   --> R10
  hh                   --> R16
    0076 940E02DD  CALL	push_gset4
(0038) 	//随机
(0039) }
(0040) 
(0041)   
(0042)  void freenode(int hh)
(0043) {
    0078 C010      RJMP	0x0089
(0044)    int aa,head,H;
(0045)    while(aa!=head)
(0046)    {
(0047)     H=aa;
    0079 01B5      MOVW	R22,R10
(0048) 	aa=aa||head;
    007A 3060      CPI	R22,0
    007B 0767      CPC	R22,R23
    007C F419      BNE	0x0080
    007D 3040      CPI	R20,0
    007E 0745      CPC	R20,R21
    007F F021      BEQ	0x0084
    0080 E081      LDI	R24,1
    0081 E090      LDI	R25,0
    0082 016C      MOVW	R12,R24
    0083 C002      RJMP	0x0086
    0084 24CC      CLR	R12
    0085 24DD      CLR	R13
    0086 0156      MOVW	R10,R12
(0049) 	H=0;
    0087 2766      CLR	R22
    0088 2777      CLR	R23
    0089 16A4      CP	R10,R20
    008A 06B5      CPC	R11,R21
    008B F769      BNE	0x0079
(0050)    }; 
    008C 940E02D5  CALL	pop_gset4
    008E 9508      RET
_addstack:
  flag1                --> R20
  head                 --> R22
  p                    --> R16
    008F 940E02DF  CALL	push_gset3
(0051)   // 节点;
(0052) }
(0053) 
(0054) void addstack(int p)
(0055)  {
    0091 C013      RJMP	0x00A5
(0056)     int head,flag1;                           //把路径读入数组
(0057) 	while(p&&p!=head)
(0058) 	 {
(0059)      switch(p=flag1)
    0092 018A      MOVW	R16,R20
    0093 015A      MOVW	R10,R20
    0094 3041      CPI	R20,1
    0095 E0E0      LDI	R30,0
    0096 075E      CPC	R21,R30
    0097 F069      BEQ	0x00A5
    0098 3042      CPI	R20,2
    0099 E0E0      LDI	R30,0
    009A 075E      CPC	R21,R30
    009B F049      BEQ	0x00A5
    009C 3043      CPI	R20,3
    009D E0E0      LDI	R30,0
    009E 075E      CPC	R21,R30
    009F F029      BEQ	0x00A5
    00A0 3044      CPI	R20,4
    00A1 E0E0      LDI	R30,0
    00A2 075E      CPC	R21,R30
    00A3 F009      BEQ	0x00A5
    00A4 C000      RJMP	0x00A5
    00A5 3000      CPI	R16,0
    00A6 0701      CPC	R16,R17
    00A7 F019      BEQ	0x00AB
    00A8 1706      CP	R16,R22
    00A9 0717      CPC	R17,R23
    00AA F739      BNE	0x0092
    00AB 940E02D2  CALL	pop_gset3
    00AD 9508      RET
_judgewalk:
  p                    --> Y+1
  i                    --> Y+1
  f                    --> R20
  y                    --> R14
  head                 --> R22
  flag                 --> R22
  a                    --> Y+12
  t                    --> Y+10
  start_y              --> R10
  start_x              --> R12
    00AE 940E02DB  CALL	push_gset5
    00B0 0159      MOVW	R10,R18
    00B1 0168      MOVW	R12,R16
(0060) 	 {
(0061) 	    case 1:
(0062)            ;
(0063) 		case 2:
(0064) 			;
(0065) 		case 3:
(0066) 			;
(0067) 		case 4:
(0068) 			;
(0069) 		default:
(0070) 		 break ;
(0071) 	 }
(0072)     ;//
(0073) 	 }
(0074) 	
(0075)  }
(0076) 
(0077) void judgewalk(int start_x,int start_y,int t,int a[50][50])                  //判断可以行动否并建立B-树
(0078) {
(0079) 	int i,f,head=0;
    00B2 2766      CLR	R22
    00B3 2777      CLR	R23
(0080)     int flag=0; 
(0081) 	int  *p;  
(0082) 	int y=rand()%4; 
    00B4 940E0313  CALL	_rand
    00B6 E024      LDI	R18,4
    00B7 E030      LDI	R19,0
    00B8 940E0288  CALL	mod16s
    00BA 0178      MOVW	R14,R16
(0083)   if(a[start_x][start_y]!=t)                         //没有找到灭火器或者着火点 继续找
    00BB E604      LDI	R16,0x64
    00BC E010      LDI	R17,0
    00BD 0196      MOVW	R18,R12
    00BE 940E02C2  CALL	empy16s
    00C0 0118      MOVW	R2,R16
    00C1 840C      LDD	R0,Y+12
    00C2 841D      LDD	R1,Y+13
    00C3 0C20      ADD	R2,R0
    00C4 1C31      ADC	R3,R1
    00C5 E002      LDI	R16,2
    00C6 E010      LDI	R17,0
    00C7 0195      MOVW	R18,R10
    00C8 940E02C2  CALL	empy16s
    00CA 01F8      MOVW	R30,R16
    00CB 0DE2      ADD	R30,R2
    00CC 1DF3      ADC	R31,R3
    00CD 8020      LDD	R2,Z+0
    00CE 8031      LDD	R3,Z+1
    00CF 840A      LDD	R0,Y+10
    00D0 841B      LDD	R1,Y+11
    00D1 1420      CP	R2,R0
    00D2 0431      CPC	R3,R1
    00D3 F031      BEQ	0x00DA
(0084)    {  
(0085) 	  if(f==0)
    00D4 3040      CPI	R20,0
    00D5 0745      CPC	R20,R21
    00D6 F401      BNE	0x00D7
(0086) 	  {
(0087) 		  ;
(0088) 	  };
(0089) 	 
(0090)       if(flag==0)    //向上
    00D7 3060      CPI	R22,0
    00D8 0767      CPC	R22,R23
    00D9 F401      BNE	0x00DA
(0091) 	  
(0092) 	  {    
(0093) 		 ;
(0094) 		 //左
(0095) 	  }
(0096) 	  ; 
(0097) 	} 	//右  
    00DA 940E02D8  CALL	pop_gset5
    00DC 9508      RET
_main:
  h                    --> Y+5006
  start_Y              --> Y+5004
  start_X              --> R12
  n                    --> R10
  y1                   --> Y+5018
  x1                   --> Y+5016
  q                    --> Y+5014
  sm                   --> R20
  l                    --> Y+5012
  i                    --> Y+5010
  a                    --> Y+4
  k                    --> R14
  j                    --> R22
    00DD 97EF      SBIW	R28,0x3F
    00DE 97EF      SBIW	R28,0x3F
    00DF 97EF      SBIW	R28,0x3F
    00E0 97EF      SBIW	R28,0x3F
    00E1 97EF      SBIW	R28,0x3F
    00E2 97EF      SBIW	R28,0x3F
    00E3 97EF      SBIW	R28,0x3F
    00E4 97EF      SBIW	R28,0x3F
    00E5 97EF      SBIW	R28,0x3F
    00E6 97EF      SBIW	R28,0x3F
    00E7 97EF      SBIW	R28,0x3F
    00E8 97EF      SBIW	R28,0x3F
    00E9 97EF      SBIW	R28,0x3F
    00EA 97EF      SBIW	R28,0x3F
    00EB 97EF      SBIW	R28,0x3F
    00EC 97EF      SBIW	R28,0x3F
    00ED 97EF      SBIW	R28,0x3F
    00EE 97EF      SBIW	R28,0x3F
    00EF 97EF      SBIW	R28,0x3F
    00F0 97EF      SBIW	R28,0x3F
    00F1 97EF      SBIW	R28,0x3F
    00F2 97EF      SBIW	R28,0x3F
    00F3 97EF      SBIW	R28,0x3F
    00F4 97EF      SBIW	R28,0x3F
    00F5 97EF      SBIW	R28,0x3F
    00F6 97EF      SBIW	R28,0x3F
    00F7 97EF      SBIW	R28,0x3F
    00F8 97EF      SBIW	R28,0x3F
    00F9 97EF      SBIW	R28,0x3F
    00FA 97EF      SBIW	R28,0x3F
    00FB 97EF      SBIW	R28,0x3F
    00FC 97EF      SBIW	R28,0x3F
    00FD 97EF      SBIW	R28,0x3F
    00FE 97EF      SBIW	R28,0x3F
    00FF 97EF      SBIW	R28,0x3F
    0100 97EF      SBIW	R28,0x3F
    0101 97EF      SBIW	R28,0x3F
    0102 97EF      SBIW	R28,0x3F
    0103 97EF      SBIW	R28,0x3F
    0104 97EF      SBIW	R28,0x3F
    0105 97EF      SBIW	R28,0x3F
    0106 97EF      SBIW	R28,0x3F
    0107 97EF      SBIW	R28,0x3F
    0108 97EF      SBIW	R28,0x3F
    0109 97EF      SBIW	R28,0x3F
    010A 97EF      SBIW	R28,0x3F
    010B 97EF      SBIW	R28,0x3F
    010C 97EF      SBIW	R28,0x3F
    010D 97EF      SBIW	R28,0x3F
    010E 97EF      SBIW	R28,0x3F
    010F 97EF      SBIW	R28,0x3F
    0110 97EF      SBIW	R28,0x3F
    0111 97EF      SBIW	R28,0x3F
    0112 97EF      SBIW	R28,0x3F
    0113 97EF      SBIW	R28,0x3F
    0114 97EF      SBIW	R28,0x3F
    0115 97EF      SBIW	R28,0x3F
    0116 97EF      SBIW	R28,0x3F
    0117 97EF      SBIW	R28,0x3F
    0118 97EF      SBIW	R28,0x3F
    0119 97EF      SBIW	R28,0x3F
    011A 97EF      SBIW	R28,0x3F
    011B 97EF      SBIW	R28,0x3F
    011C 97EF      SBIW	R28,0x3F
    011D 97EF      SBIW	R28,0x3F
    011E 97EF      SBIW	R28,0x3F
    011F 97EF      SBIW	R28,0x3F
    0120 97EF      SBIW	R28,0x3F
    0121 97EF      SBIW	R28,0x3F
    0122 97EF      SBIW	R28,0x3F
    0123 97EF      SBIW	R28,0x3F
    0124 97EF      SBIW	R28,0x3F
    0125 97EF      SBIW	R28,0x3F
    0126 97EF      SBIW	R28,0x3F
    0127 97EF      SBIW	R28,0x3F
    0128 97EF      SBIW	R28,0x3F
    0129 97EF      SBIW	R28,0x3F
    012A 97EF      SBIW	R28,0x3F
    012B 97EF      SBIW	R28,0x3F
    012C 97AB      SBIW	R28,0x2B
(0098) 	  
(0099) }
(0100) 
(0101) 
(0102)  
(0103)  void main(void)
(0104)  { 
(0105) 	  //init();           //初始化
(0106) 	  int i,j,k,h,l,q,sm,x1,y1,n,start_X,start_Y;
(0107) 	  int a[50][50];
(0108) 	  delay_1ms();
    012D DF3A      RCALL	_delay_1ms
(0109) 	 // delay(50);
(0110) 	   for(i=0;i<50;i++)
    012E 2400      CLR	R0
    012F 2411      CLR	R1
    0130 01FE      MOVW	R30,R28
    0131 56EE      SUBI	R30,0x6E
    0132 4EFC      SBCI	R31,0xEC
    0133 8211      STD	Z+1,R1
    0134 8200      STD	Z+0,R0
(0111) 		  for(j=0;j<50;j++)
    0135 2766      CLR	R22
    0136 2777      CLR	R23
(0112) 		  {
(0113) 		    a[i][j]=1;
    0137 E604      LDI	R16,0x64
    0138 E010      LDI	R17,0
    0139 01FE      MOVW	R30,R28
    013A 56EE      SUBI	R30,0x6E
    013B 4EFC      SBCI	R31,0xEC
    013C 8120      LDD	R18,Z+0
    013D 8131      LDD	R19,Z+1
    013E 940E02C2  CALL	empy16s
    0140 0118      MOVW	R2,R16
    0141 01CE      MOVW	R24,R28
    0142 9604      ADIW	R24,4
    0143 0E28      ADD	R2,R24
    0144 1E39      ADC	R3,R25
    0145 E002      LDI	R16,2
    0146 E010      LDI	R17,0
    0147 019B      MOVW	R18,R22
    0148 940E02C2  CALL	empy16s
    014A 01F8      MOVW	R30,R16
    014B 0DE2      ADD	R30,R2
    014C 1DF3      ADC	R31,R3
    014D E081      LDI	R24,1
    014E E090      LDI	R25,0
    014F 8391      STD	Z+1,R25
    0150 8380      STD	Z+0,R24
    0151 5F6F      SUBI	R22,0xFF
    0152 4F7F      SBCI	R23,0xFF
    0153 3362      CPI	R22,0x32
    0154 E0E0      LDI	R30,0
    0155 077E      CPC	R23,R30
    0156 F304      BLT	0x0137
    0157 01FE      MOVW	R30,R28
    0158 56EE      SUBI	R30,0x6E
    0159 4EFC      SBCI	R31,0xEC
    015A 8180      LDD	R24,Z+0
    015B 8191      LDD	R25,Z+1
    015C 9601      ADIW	R24,1
    015D 01FE      MOVW	R30,R28
    015E 56EE      SUBI	R30,0x6E
    015F 4EFC      SBCI	R31,0xEC
    0160 8391      STD	Z+1,R25
    0161 8380      STD	Z+0,R24
    0162 3382      CPI	R24,0x32
    0163 E0E0      LDI	R30,0
    0164 079E      CPC	R25,R30
    0165 F27C      BLT	0x0135
(0114) 		  }
(0115) 	   sm=1;
    0166 E041      LDI	R20,1
    0167 E050      LDI	R21,0
(0116) 	  //读MAP;
(0117)       n=0;
    0168 24AA      CLR	R10
    0169 24BB      CLR	R11
(0118) 	 
(0119)      for(j=0;j<h+1;j++)
    016A 2766      CLR	R22
    016B 2777      CLR	R23
    016C C03F      RJMP	0x01AC
(0120) 	 {      
(0121) 		 for(k=0;k<l+1;k++)
    016D 24EE      CLR	R14
    016E 24FF      CLR	R15
    016F C030      RJMP	0x01A0
(0122) 	   {
(0123) 		   switch(a[j][k])
    0170 E604      LDI	R16,0x64
    0171 E010      LDI	R17,0
    0172 019B      MOVW	R18,R22
    0173 940E02C2  CALL	empy16s
    0175 0118      MOVW	R2,R16
    0176 01CE      MOVW	R24,R28
    0177 9604      ADIW	R24,4
    0178 0E28      ADD	R2,R24
    0179 1E39      ADC	R3,R25
    017A E002      LDI	R16,2
    017B E010      LDI	R17,0
    017C 0197      MOVW	R18,R14
    017D 940E02C2  CALL	empy16s
    017F 01F8      MOVW	R30,R16
    0180 0DE2      ADD	R30,R2

⌨️ 快捷键说明

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