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

📄 fjv14.lst

📁 一本关于控制系统仿真的书的程序 1、文件夹1中的程序是书中的一些仿真。 2、文件2中的是最近做的预测控制、PID控制及逻辑控制的对比综合研究。 3、文件夹3中是与maltab通信的数据采集板的设
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0206 075E      CPC	R21,R30
    0207 F161      BEQ	0x0234
    0208 3045      CPI	R20,5
    0209 E0E0      LDI	R30,0
    020A 075E      CPC	R21,R30
    020B F409      BNE	0x020D
    020C C035      RJMP	0x0242
    020D 3046      CPI	R20,6
    020E E0E0      LDI	R30,0
    020F 075E      CPC	R21,R30
    0210 F409      BNE	0x0212
    0211 C03E      RJMP	0x0250
    0212 3047      CPI	R20,7
    0213 E0E0      LDI	R30,0
    0214 075E      CPC	R21,R30
    0215 F409      BNE	0x0217
    0216 C047      RJMP	0x025E
    0217 C053      RJMP	0x026B
(0371)        {
(0372)            case IO_PB0: //启动PB0通道
(0373)                if (IO_data==0x00)
    0218 2300      TST	R16
    0219 F429      BNE	0x021F
(0374)                    {
(0375)                    	DDRB |= (1<<DDB0);
    021A 9AB8      SBI	0x17,0
(0376)                    	PORTB &= 0b11111110;//PB0置0,其他位不变
    021B B388      IN	R24,0x18
    021C 7F8E      ANDI	R24,0xFE
    021D BB88      OUT	0x18,R24
(0377)                    }
    021E C04C      RJMP	0x026B
(0378)                else if (IO_data==0x01)
    021F 3001      CPI	R16,1
    0220 F419      BNE	0x0224
(0379)                   {
(0380)                         DDRB |= (1<<DDB0);
    0221 9AB8      SBI	0x17,0
(0381)                    	PORTB |= (1<<PB0);//PB0置1,其他位不变	
    0222 9AC0      SBI	0x18,0
(0382)                   }
    0223 C047      RJMP	0x026B
(0383)                else  
(0384) 	 	 { 
(0385) 	    	  asm("NOP");
    0224 0000      NOP
(0386) 	  	 }
(0387)                break;   
    0225 C045      RJMP	0x026B
(0388)           case IO_PB1:  
(0389)                 if (IO_data==0x00)
    0226 2300      TST	R16
    0227 F429      BNE	0x022D
(0390)                    {
(0391)                    	DDRB |= (1<<DDB1);
    0228 9AB9      SBI	0x17,1
(0392)                    	PORTB &= 0b11111101;//输出0
    0229 B388      IN	R24,0x18
    022A 7F8D      ANDI	R24,0xFD
    022B BB88      OUT	0x18,R24
(0393)                    }
    022C C03E      RJMP	0x026B
(0394)                else if (IO_data==0x01)
    022D 3001      CPI	R16,1
    022E F419      BNE	0x0232
(0395)                   {
(0396)                         DDRB |= (1<<DDB1);
    022F 9AB9      SBI	0x17,1
(0397)                    	PORTB |= (1<<PB1);//输出1	
    0230 9AC1      SBI	0x18,1
(0398)                   }
    0231 C039      RJMP	0x026B
(0399)                else  
(0400) 	 	         { 
(0401) 	    	      asm("NOP");
    0232 0000      NOP
(0402) 				 }
(0403) 		       break; 
    0233 C037      RJMP	0x026B
(0404)           case IO_PB4: 
(0405)                 if (IO_data==0x00)
    0234 2300      TST	R16
    0235 F429      BNE	0x023B
(0406)                    {
(0407)                    	DDRB |= (1<<DDB4);
    0236 9ABC      SBI	0x17,4
(0408)                    	PORTB &= 0b11101111;;//输出0
    0237 B388      IN	R24,0x18
    0238 7E8F      ANDI	R24,0xEF
    0239 BB88      OUT	0x18,R24
(0409)                    }
    023A C030      RJMP	0x026B
(0410)                else if (IO_data==0x01)
    023B 3001      CPI	R16,1
    023C F419      BNE	0x0240
(0411)                   {
(0412)                         DDRB |= (1<<DDB4);
    023D 9ABC      SBI	0x17,4
(0413)                    	PORTB |= (1<<PB4);//输出1	
    023E 9AC4      SBI	0x18,4
(0414)                   }
    023F C02B      RJMP	0x026B
(0415)                else  
(0416) 	 	        { 
(0417) 	    	       asm("NOP");    
    0240 0000      NOP
(0418) 				 }   
(0419) 		       break;  
    0241 C029      RJMP	0x026B
(0420)           case IO_PD5:  
(0421)                 if (IO_data==0x00)
    0242 2300      TST	R16
    0243 F429      BNE	0x0249
(0422)                    {
(0423)                    	DDRD |= (1<<DDD5);
    0244 9A8D      SBI	0x11,5
(0424)                    	PORTD &= 0b11011111;//输出0
    0245 B382      IN	R24,0x12
    0246 7D8F      ANDI	R24,0xDF
    0247 BB82      OUT	0x12,R24
(0425)                    }
    0248 C022      RJMP	0x026B
(0426)                else if (IO_data==0x01)
    0249 3001      CPI	R16,1
    024A F419      BNE	0x024E
(0427)                   {
(0428)                         DDRD |= (1<<DDD5);
    024B 9A8D      SBI	0x11,5
(0429)                    	PORTD |= (1<<PD5);//输出1	
    024C 9A95      SBI	0x12,5
(0430)                   }
    024D C01D      RJMP	0x026B
(0431)                else  
(0432) 	 	         { 
(0433) 	    	       asm("NOP");
    024E 0000      NOP
(0434) 				 }
(0435) 		       break;  
    024F C01B      RJMP	0x026B
(0436) 	  case IO_PD6:  
(0437)                if (IO_data==0x00)
    0250 2300      TST	R16
    0251 F429      BNE	0x0257
(0438)                    {
(0439)                    	DDRD |= (1<<DDD6);
    0252 9A8E      SBI	0x11,6
(0440)                    	PORTD &= 0b10111111;//输出0
    0253 B382      IN	R24,0x12
    0254 7B8F      ANDI	R24,0xBF
    0255 BB82      OUT	0x12,R24
(0441)                    }
    0256 C014      RJMP	0x026B
(0442)                else if (IO_data==0x01)
    0257 3001      CPI	R16,1
    0258 F419      BNE	0x025C
(0443)                   {
(0444)                         DDRD |= (1<<DDD6);
    0259 9A8E      SBI	0x11,6
(0445)                    	PORTD |= (1<<PD6);//输出1	
    025A 9A96      SBI	0x12,6
(0446)                   }
    025B C00F      RJMP	0x026B
(0447)                else  
(0448) 	 	         { 
(0449) 	    	       asm("NOP");
    025C 0000      NOP
(0450) 				 }
(0451) 		       break;  
    025D C00D      RJMP	0x026B
(0452) 		   
(0453)           case IO_PD7:  //如果为00则启动CH1通道
(0454)                if (IO_data==0x00)
    025E 2300      TST	R16
    025F F429      BNE	0x0265
(0455)                    {
(0456)                    	DDRD |= (1<<DDD7);
    0260 9A8F      SBI	0x11,7
(0457)                    	PORTD &= 0b01111111;//输出0
    0261 B382      IN	R24,0x12
    0262 778F      ANDI	R24,0x7F
    0263 BB82      OUT	0x12,R24
(0458)                    }
    0264 C006      RJMP	0x026B
(0459)                else if (IO_data==0x01)
    0265 3001      CPI	R16,1
    0266 F419      BNE	0x026A
(0460)                   {
(0461)                         DDRD |= (1<<DDD7);
    0267 9A8F      SBI	0x11,7
(0462)                    	PORTD |= (1<<PD7);//输出1	
    0268 9A97      SBI	0x12,7
(0463)                   }
    0269 C001      RJMP	0x026B
(0464)                else  
(0465) 	 	         { 
(0466) 	            	  asm("NOP");
    026A 0000      NOP
(0467) 				}
(0468) 		       break;  
(0469) 		         	              	
(0470)        	   default:break;
    026B D080      RCALL	pop_gset1
    026C 9508      RET
_IO_in:
  temp                 --> R20
  IO_channel           --> R16
    026D D079      RCALL	push_gset2
(0471)        	}
(0472) 	 
(0473) 	
(0474) }
(0475) /*****************************************************************/
(0476) unsigned char IO_in(unsigned char IO_channel)
(0477) {
(0478)   unsigned char temp;
(0479)   temp=0;
    026E 2744      CLR	R20
(0480)   switch (IO_channel)
    026F 2F60      MOV	R22,R16
    0270 2777      CLR	R23
    0271 3060      CPI	R22,0
    0272 0767      CPC	R22,R23
    0273 F0B1      BEQ	0x028A
    0274 3061      CPI	R22,1
    0275 E0E0      LDI	R30,0
    0276 077E      CPC	R23,R30
    0277 F0D1      BEQ	0x0292
    0278 3064      CPI	R22,4
    0279 E0E0      LDI	R30,0
    027A 077E      CPC	R23,R30
    027B F0F9      BEQ	0x029B
    027C 3065      CPI	R22,5
    027D E0E0      LDI	R30,0
    027E 077E      CPC	R23,R30
    027F F139      BEQ	0x02A7
    0280 3066      CPI	R22,6
    0281 E0E0      LDI	R30,0
    0282 077E      CPC	R23,R30
    0283 F181      BEQ	0x02B4
    0284 3067      CPI	R22,7
    0285 E0E0      LDI	R30,0
    0286 077E      CPC	R23,R30
    0287 F409      BNE	0x0289
    0288 C039      RJMP	0x02C2
    0289 C046      RJMP	0x02D0
(0481)        {
(0482)            case IO_PB0: //启动PB0通道
(0483)            	{
(0484)                   DDRB &= 0b11111110;
    028A B387      IN	R24,0x17
    028B 7F8E      ANDI	R24,0xFE
    028C BB87      OUT	0x17,R24
(0485)                   PORTB |= (1<<PB0);//输入、带上拉	
    028D 9AC0      SBI	0x18,0
(0486)                   asm("NOP");//留出读写转换的时间。
    028E 0000      NOP
(0487)                	  temp = PINB;//读取PB0通道的值。
    028F B346      IN	R20,0x16
(0488)                	  temp = temp & 0x01;
    0290 7041      ANDI	R20,1
(0489) 		}
(0490)                break;   
    0291 C03E      RJMP	0x02D0
(0491)           case IO_PB1:  
(0492)                 {
(0493)                   DDRB &= 0b11111101;
    0292 B387      IN	R24,0x17
    0293 7F8D      ANDI	R24,0xFD
    0294 BB87      OUT	0x17,R24
(0494)                   PORTB |= (1<<PB1);//输入、带上拉	
    0295 9AC1      SBI	0x18,1
(0495)                   asm("NOP");
    0296 0000      NOP
(0496)                   temp = PINB;
    0297 B346      IN	R20,0x16
(0497) 		  temp=(temp>>1)& 0x01;//提取位值。
    0298 9546      LSR	R20
    0299 7041      ANDI	R20,1
(0498) 		                 	  
(0499)                 }
(0500) 		       break; 
    029A C035      RJMP	0x02D0
(0501)           case IO_PB4:  
(0502)                   {
(0503)                      DDRB &= 0b11101111;
    029B B387      IN	R24,0x17
    029C 7E8F      ANDI	R24,0xEF
    029D BB87      OUT	0x17,R24
(0504)                      PORTB |= (1<<PB4);//输入、带上拉
    029E 9AC4      SBI	0x18,4
(0505)                      asm("NOP");	
    029F 0000      NOP
(0506)                	     temp = PINB;
    02A0 B346      IN	R20,0x16
(0507) 		     temp=(temp>>4)& 0x01;
    02A1 2F84      MOV	R24,R20
    02A2 9582      SWAP	R24
    02A3 708F      ANDI	R24,0xF
    02A4 7081      ANDI	R24,1
    02A5 2F48      MOV	R20,R24
(0508)                	 }     
(0509) 		       break;  
    02A6 C029      RJMP	0x02D0
(0510)           case IO_PD5:  
(0511)                 {
(0512)                   DDRD &= 0b11011111;
    02A7 B381      IN	R24,0x11
    02A8 7D8F      ANDI	R24,0xDF
    02A9 BB81      OUT	0x11,R24
(0513)                   PORTD |= (1<<PD5);//输入、带上拉	
    02AA 9A95      SBI	0x12,5
(0514)                   asm("NOP");
    02AB 0000      NOP
(0515)                   temp = PIND;
    02AC B340      IN	R20,0x10
(0516) 		  temp=(temp>>5)& 0x01;
    02AD 9546      LSR	R20
    02AE 9546      LSR	R20
    02AF 9546      LSR	R20
    02B0 9546      LSR	R20
    02B1 9546      LSR	R20
    02B2 7041      ANDI	R20,1
(0517)                	 }
(0518) 		       break;  
    02B3 C01C      RJMP	0x02D0
(0519) 	  case IO_PD6:  
(0520)               {
(0521)                   DDRD &= 0b10111111;
    02B4 B381      IN	R24,0x11
    02B5 7B8F      ANDI	R24,0xBF
    02B6 BB81      OUT	0x11,R24
(0522)                   PORTD |= (1<<PD6);//输入、带上拉	
    02B7 9A96      SBI	0x12,6
(0523)                   asm("NOP");
    02B8 0000      NOP
(0524)                   temp = PIND;
    02B9 B340      IN	R20,0x10
(0525) 		  temp=(temp>>6)& 0x01;
    02BA 9546      LSR	R20
    02BB 9546      LSR	R20
    02BC 9546      LSR	R20
    02BD 9546      LSR	R20
    02BE 9546      LSR	R20
    02BF 9546      LSR	R20
    02C0 7041      ANDI	R20,1
(0526)                	 }
(0527) 		       break;  
    02C1 C00E      RJMP	0x02D0
(0528)           case IO_PD7:  
(0529)               {
(0530)                   DDRD &= 0b01111111;
    02C2 B381      IN	R24,0x11
    02C3 778F      ANDI	R24,0x7F
    02C4 BB81      OUT	0x11,R24
(0531)                   PORTD |= (1<<PD7);//输入、带上拉	
    02C5 9A97      SBI	0x12,7
(0532)                   asm("NOP");
    02C6 0000      NOP
(0533)                   temp = PIND;
    02C7 B340      IN	R20,0x10
(0534) 		  temp=(temp>>7)& 0x01;
    02C8 9546      LSR	R20
    02C9 9546      LSR	R20
    02CA 9546      LSR	R20
    02CB 9546      LSR	R20
    02CC 9546      LSR	R20
    02CD 9546      LSR	R20
    02CE 9546      LSR	R20
    02CF 7041      ANDI	R20,1
(0535)                	 }
(0536) 		       break;  	              	
(0537)        	   default:break;
(0538) 	 }
(0539)   return temp;
    02D0 2F04      MOV	R16,R20
    02D1 D00B      RCALL	pop_gset2
    02D2 9508      RET
(0540) }  
(0541) /*******************************************************************/
(0542) //1ms延时函数
(0543) void delay_1ms(void)
(0544) {
(0545)   unsigned int i;
(0546)   for (i=0;i<150;i++)
FILE: <library>
_delay_1ms:
  i                    --> R16
    02D3 2700      CLR	R16
    02D4 2711      CLR	R17
    02D5 C002      RJMP	0x02D8
    02D6 5F0F      SUBI	R16,0xFF
    02D7 4F1F      SBCI	R17,0xFF
    02D8 3906      CPI	R16,0x96
    02D9 E0E0      LDI	R30,0
    02DA 071E      CPC	R17,R30
    02DB F3D0      BCS	0x02D6
    02DC 9508      RET
pop_gset2:
    02DD E0E2      LDI	R30,2
    02DE C00E      RJMP	pop
pop_gset4:
    02DF E0E8      LDI	R30,0x8
    02E0 C00C      RJMP	pop
push_gset5:
    02E1 92FA      ST	R15,-Y
    02E2 92EA      ST	R14,-Y
push_gset4:
    02E3 92DA      ST	R13,-Y
    02E4 92CA      ST	R12,-Y
push_gset3:
    02E5 92BA      ST	R11,-Y
    02E6 92AA      ST	R10,-Y
push_gset2:
    02E7 937A      ST	R23,-Y
    02E8 936A      ST	R22,-Y
push_gset1:
    02E9 935A      ST	R21,-Y
    02EA 934A      ST	R20,-Y
    02EB 9508      RET
pop_gset1:
    02EC E0E1      LDI	R30,1
pop:
    02ED 9149      LD	R20,Y+
    02EE 9159      LD	R21,Y+
    02EF FDE0      SBRC	R30,0
    02F0 9508      RET
    02F1 9169      LD	R22,Y+
    02F2 9179      LD	R23,Y+
    02F3 FDE1      SBRC	R30,1
    02F4 9508      RET
    02F5 90A9      LD	R10,Y+
    02F6 90B9      LD	R11,Y+
    02F7 FDE2      SBRC	R30,2
    02F8 9508      RET
    02F9 90C9      LD	R12,Y+
    02FA 90D9      LD	R13,Y+
    02FB FDE3      SBRC	R30,3
    02FC 9508      RET
    02FD 90E9      LD	R14,Y+
    02FE 90F9      LD	R15,Y+
    02FF 9508      RET
_getchar:
    0300 9B5F      SBIS	0x0B,7
    0301 CFFE      RJMP	_getchar
    0302 B10C      IN	R16,0x0C
    0303 2711      CLR	R17
    0304 9508      RET

⌨️ 快捷键说明

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