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

📄 fjv14.s

📁 一本关于控制系统仿真的书的程序 1、文件夹1中的程序是书中的一些仿真。 2、文件2中的是最近做的预测控制、PID控制及逻辑控制的对比综合研究。 3、文件夹3中是与maltab通信的数据采集板的设
💻 S
📖 第 1 页 / 共 3 页
字号:
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L102
X5:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L107
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L112
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X7
	rjmp L117
X7:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	brne X8
	rjmp L122
X8:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	brne X9
	rjmp L127
X9:
	rjmp L100
X6:
	.dbline 371
;        {
L102:
	.dbline 373
;            case IO_PB0: //启动PB0通道
;                if (IO_data==0x00)
	tst R16
	brne L103
	.dbline 374
;                    {
	.dbline 375
;                    	DDRB |= (1<<DDB0);
	sbi 0x17,0
	.dbline 376
;                    	PORTB &= 0b11111110;//PB0置0,其他位不变
	in R24,0x18
	andi R24,254
	out 0x18,R24
	.dbline 377
;                    }
	rjmp L100
L103:
	.dbline 378
;                else if (IO_data==0x01)
	cpi R16,1
	brne L105
	.dbline 379
;                   {
	.dbline 380
;                         DDRB |= (1<<DDB0);
	sbi 0x17,0
	.dbline 381
;                    	PORTB |= (1<<PB0);//PB0置1,其他位不变	
	sbi 0x18,0
	.dbline 382
;                   }
	rjmp L100
L105:
	.dbline 384
;                else  
; 	 	 { 
	.dbline 385
; 	    	  asm("NOP");
	NOP
	.dbline 386
; 	  	 }
	.dbline 387
;                break;   
	rjmp L100
L107:
	.dbline 389
;           case IO_PB1:  
;                 if (IO_data==0x00)
	tst R16
	brne L108
	.dbline 390
;                    {
	.dbline 391
;                    	DDRB |= (1<<DDB1);
	sbi 0x17,1
	.dbline 392
;                    	PORTB &= 0b11111101;//输出0
	in R24,0x18
	andi R24,253
	out 0x18,R24
	.dbline 393
;                    }
	rjmp L100
L108:
	.dbline 394
;                else if (IO_data==0x01)
	cpi R16,1
	brne L110
	.dbline 395
;                   {
	.dbline 396
;                         DDRB |= (1<<DDB1);
	sbi 0x17,1
	.dbline 397
;                    	PORTB |= (1<<PB1);//输出1	
	sbi 0x18,1
	.dbline 398
;                   }
	rjmp L100
L110:
	.dbline 400
;                else  
; 	 	         { 
	.dbline 401
; 	    	      asm("NOP");
	NOP
	.dbline 402
; 				 }
	.dbline 403
; 		       break; 
	rjmp L100
L112:
	.dbline 405
;           case IO_PB4: 
;                 if (IO_data==0x00)
	tst R16
	brne L113
	.dbline 406
;                    {
	.dbline 407
;                    	DDRB |= (1<<DDB4);
	sbi 0x17,4
	.dbline 408
;                    	PORTB &= 0b11101111;;//输出0
	in R24,0x18
	andi R24,239
	out 0x18,R24
	.dbline 408
	.dbline 409
;                    }
	rjmp L100
L113:
	.dbline 410
;                else if (IO_data==0x01)
	cpi R16,1
	brne L115
	.dbline 411
;                   {
	.dbline 412
;                         DDRB |= (1<<DDB4);
	sbi 0x17,4
	.dbline 413
;                    	PORTB |= (1<<PB4);//输出1	
	sbi 0x18,4
	.dbline 414
;                   }
	rjmp L100
L115:
	.dbline 416
;                else  
; 	 	        { 
	.dbline 417
; 	    	       asm("NOP");    
	NOP
	.dbline 418
; 				 }   
	.dbline 419
; 		       break;  
	rjmp L100
L117:
	.dbline 421
;           case IO_PD5:  
;                 if (IO_data==0x00)
	tst R16
	brne L118
	.dbline 422
;                    {
	.dbline 423
;                    	DDRD |= (1<<DDD5);
	sbi 0x11,5
	.dbline 424
;                    	PORTD &= 0b11011111;//输出0
	in R24,0x12
	andi R24,223
	out 0x12,R24
	.dbline 425
;                    }
	rjmp L100
L118:
	.dbline 426
;                else if (IO_data==0x01)
	cpi R16,1
	brne L120
	.dbline 427
;                   {
	.dbline 428
;                         DDRD |= (1<<DDD5);
	sbi 0x11,5
	.dbline 429
;                    	PORTD |= (1<<PD5);//输出1	
	sbi 0x12,5
	.dbline 430
;                   }
	rjmp L100
L120:
	.dbline 432
;                else  
; 	 	         { 
	.dbline 433
; 	    	       asm("NOP");
	NOP
	.dbline 434
; 				 }
	.dbline 435
; 		       break;  
	rjmp L100
L122:
	.dbline 437
; 	  case IO_PD6:  
;                if (IO_data==0x00)
	tst R16
	brne L123
	.dbline 438
;                    {
	.dbline 439
;                    	DDRD |= (1<<DDD6);
	sbi 0x11,6
	.dbline 440
;                    	PORTD &= 0b10111111;//输出0
	in R24,0x12
	andi R24,191
	out 0x12,R24
	.dbline 441
;                    }
	rjmp L100
L123:
	.dbline 442
;                else if (IO_data==0x01)
	cpi R16,1
	brne L125
	.dbline 443
;                   {
	.dbline 444
;                         DDRD |= (1<<DDD6);
	sbi 0x11,6
	.dbline 445
;                    	PORTD |= (1<<PD6);//输出1	
	sbi 0x12,6
	.dbline 446
;                   }
	rjmp L100
L125:
	.dbline 448
;                else  
; 	 	         { 
	.dbline 449
; 	    	       asm("NOP");
	NOP
	.dbline 450
; 				 }
	.dbline 451
; 		       break;  
	rjmp L100
L127:
	.dbline 454
; 		   
;           case IO_PD7:  //如果为00则启动CH1通道
;                if (IO_data==0x00)
	tst R16
	brne L128
	.dbline 455
;                    {
	.dbline 456
;                    	DDRD |= (1<<DDD7);
	sbi 0x11,7
	.dbline 457
;                    	PORTD &= 0b01111111;//输出0
	in R24,0x12
	andi R24,127
	out 0x12,R24
	.dbline 458
;                    }
	rjmp L100
L128:
	.dbline 459
;                else if (IO_data==0x01)
	cpi R16,1
	brne L130
	.dbline 460
;                   {
	.dbline 461
;                         DDRD |= (1<<DDD7);
	sbi 0x11,7
	.dbline 462
;                    	PORTD |= (1<<PD7);//输出1	
	sbi 0x12,7
	.dbline 463
;                   }
	rjmp L100
L130:
	.dbline 465
	.dbline 466
	NOP
	.dbline 467
	.dbline 468
	.dbline 470
L100:
	.dbline -2
L98:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r IO_channel 18 c
	.dbsym r IO_data 16 c
	.dbend
	.dbfunc e IO_in _IO_in fc
;           temp -> R20
;     IO_channel -> R16
	.even
_IO_in::
	rcall push_gset2
	.dbline -1
	.dbline 477
;                else  
; 	 	         { 
; 	            	  asm("NOP");
; 				}
; 		       break;  
; 		         	              	
;        	   default:break;
;        	}
; 	 
; 	
; }
; /*****************************************************************/
; unsigned char IO_in(unsigned char IO_channel)
; {
	.dbline 479
;   unsigned char temp;
;   temp=0;
	clr R20
	.dbline 480
;   switch (IO_channel)
	mov R22,R16
	clr R23
	cpi R22,0
	cpc R22,R23
	breq L136
X10:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L137
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	breq L138
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	breq L139
	cpi R22,6
	ldi R30,0
	cpc R23,R30
	breq L140
	cpi R22,7
	ldi R30,0
	cpc R23,R30
	brne X12
	rjmp L141
X12:
	rjmp L134
X11:
	.dbline 481
;        {
L136:
	.dbline 483
;            case IO_PB0: //启动PB0通道
;            	{
	.dbline 484
;                   DDRB &= 0b11111110;
	in R24,0x17
	andi R24,254
	out 0x17,R24
	.dbline 485
;                   PORTB |= (1<<PB0);//输入、带上拉	
	sbi 0x18,0
	.dbline 486
;                   asm("NOP");//留出读写转换的时间。
	NOP
	.dbline 487
;                	  temp = PINB;//读取PB0通道的值。
	in R20,0x16
	.dbline 488
;                	  temp = temp & 0x01;
	andi R20,1
	.dbline 489
; 		}
	.dbline 490
;                break;   
	rjmp L134
L137:
	.dbline 492
;           case IO_PB1:  
;                 {
	.dbline 493
;                   DDRB &= 0b11111101;
	in R24,0x17
	andi R24,253
	out 0x17,R24
	.dbline 494
;                   PORTB |= (1<<PB1);//输入、带上拉	
	sbi 0x18,1
	.dbline 495
;                   asm("NOP");
	NOP
	.dbline 496
;                   temp = PINB;
	in R20,0x16
	.dbline 497
; 		  temp=(temp>>1)& 0x01;//提取位值。
	lsr R20
	andi R20,1
	.dbline 499
; 		                 	  
;                 }
	.dbline 500
; 		       break; 
	rjmp L134
L138:
	.dbline 502
;           case IO_PB4:  
;                   {
	.dbline 503
;                      DDRB &= 0b11101111;
	in R24,0x17
	andi R24,239
	out 0x17,R24
	.dbline 504
;                      PORTB |= (1<<PB4);//输入、带上拉
	sbi 0x18,4
	.dbline 505
;                      asm("NOP");	
	NOP
	.dbline 506
;                	     temp = PINB;
	in R20,0x16
	.dbline 507
; 		     temp=(temp>>4)& 0x01;
	mov R24,R20
	swap R24
	andi R24,#0x0F
	andi R24,1
	mov R20,R24
	.dbline 508
;                	 }     
	.dbline 509
; 		       break;  
	rjmp L134
L139:
	.dbline 511
;           case IO_PD5:  
;                 {
	.dbline 512
;                   DDRD &= 0b11011111;
	in R24,0x11
	andi R24,223
	out 0x11,R24
	.dbline 513
;                   PORTD |= (1<<PD5);//输入、带上拉	
	sbi 0x12,5
	.dbline 514
;                   asm("NOP");
	NOP
	.dbline 515
;                   temp = PIND;
	in R20,0x10
	.dbline 516
; 		  temp=(temp>>5)& 0x01;
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	andi R20,1
	.dbline 517
;                	 }
	.dbline 518
; 		       break;  
	rjmp L134
L140:
	.dbline 520
; 	  case IO_PD6:  
;               {
	.dbline 521
;                   DDRD &= 0b10111111;
	in R24,0x11
	andi R24,191
	out 0x11,R24
	.dbline 522
;                   PORTD |= (1<<PD6);//输入、带上拉	
	sbi 0x12,6
	.dbline 523
;                   asm("NOP");
	NOP
	.dbline 524
;                   temp = PIND;
	in R20,0x10
	.dbline 525
; 		  temp=(temp>>6)& 0x01;
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	andi R20,1
	.dbline 526
;                	 }
	.dbline 527
; 		       break;  
	rjmp L134
L141:
	.dbline 529
;           case IO_PD7:  
;               {
	.dbline 530
;                   DDRD &= 0b01111111;
	in R24,0x11
	andi R24,127
	out 0x11,R24
	.dbline 531
;                   PORTD |= (1<<PD7);//输入、带上拉	
	sbi 0x12,7
	.dbline 532
;                   asm("NOP");
	NOP
	.dbline 533
;                   temp = PIND;
	in R20,0x10
	.dbline 534
; 		  temp=(temp>>7)& 0x01;
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	lsr R20
	andi R20,1
	.dbline 535
;                	 }
	.dbline 536
; 		       break;  	              	
	.dbline 537
;        	   default:break;
L134:
	.dbline 539
; 	 }
;   return temp;
	mov R16,R20
	.dbline -2
L132:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbsym r IO_channel 16 c
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 544
; }  
; /*******************************************************************/
; //1ms延时函数
; void delay_1ms(void)
; {
	.dbline 546
;   unsigned int i;
;   for (i=0;i<150;i++)
	clr R16
	clr R17
	rjmp L146
L143:
	.dbline 547
	.dbline 548
L144:
	.dbline 546
	subi R16,255  ; offset = 1
	sbci R17,255
L146:
	.dbline 546
	cpi R16,150
	ldi R30,0
	cpc R17,R30
	brlo L143
	.dbline -2
L142:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\采集卡项目\单片机程序\fjv14\fjv14.c
_AD_value10::
	.blkb 2
	.dbsym e AD_value10 _AD_value10 i

⌨️ 快捷键说明

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