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

📄 work.s

📁 对于AVR单片机初学者来说
💻 S
📖 第 1 页 / 共 3 页
字号:
	.dbline 286
;      if(k<10)                                   
	cpi R20,10
	brsh L109
	.dbline 287
; 	   {
	.dbline 288
; 	     b=k+k;
	mov R2,R20
	clr R3
	mov R4,R2
	clr R5
	add R4,R2
	adc R5,R3
	sts _b+1,R5
	sts _b,R4
	.dbline 289
;          Judge1();
	rcall _Judge1
	.dbline 290
; 		 for(u=0;u<R_Step;u++)     //字轮电机转到打印位置
	clr R2
	clr R3
	sts _u+1,R3
	sts _u,R2
	rjmp L114
L111:
	.dbline 291
	.dbline 291
	rcall _PulseZiLun
	.dbline 291
L112:
	.dbline 290
	lds R24,_u
	lds R25,_u+1
	adiw R24,1
	sts _u+1,R25
	sts _u,R24
L114:
	.dbline 290
	lds R2,_R_Step
	clr R3
	lds R4,_u
	lds R5,_u+1
	cp R4,R2
	cpc R5,R3
	brlo L111
	.dbline 292
;          {PulseZiLun(); }     
;          Print_Act();
	rcall _Print_Act
	.dbline 293
; 	    }
	rjmp L110
L109:
	.dbline 296
; 
; 	  else
; 	   {
	.dbline 297
; 	    b=k/10+k/10;               //取整的余数(个位数的值)
	ldi R18,10
	ldi R19,0
	mov R16,R20
	clr R17
	rcall div16s
	mov R2,R16
	mov R3,R17
	add R2,R16
	adc R3,R17
	sts _b+1,R3
	sts _b,R2
	.dbline 298
;          Judge1();
	rcall _Judge1
	.dbline 299
; 		 for(u=0;u<R_Step;u++)     //字轮电机转到打印位置
	clr R2
	clr R3
	sts _u+1,R3
	sts _u,R2
	rjmp L118
L115:
	.dbline 300
	.dbline 300
	rcall _PulseZiLun
	.dbline 300
L116:
	.dbline 299
	lds R24,_u
	lds R25,_u+1
	adiw R24,1
	sts _u+1,R25
	sts _u,R24
L118:
	.dbline 299
	lds R2,_R_Step
	clr R3
	lds R4,_u
	lds R5,_u+1
	cp R4,R2
	cpc R5,R3
	brlo L115
	.dbline 301
;          {PulseZiLun(); }   
;          Print_Act();              //打印个位数
	rcall _Print_Act
	.dbline 302
;         p=2*(k%10);                //取整的值(十位数的值)
	ldi R17,10
	mov R16,R20
	rcall mod8u
	mov R22,R16
	lsl R22
	.dbline 303
;          if(p>b)
	lds R2,_b
	lds R3,_b+1
	mov R4,R22
	clr R5
	cp R2,R4
	cpc R3,R5
	brsh L119
	.dbline 304
; 		   {
	.dbline 305
; 		     b=p-b;
	clr R5
	sub R4,R2
	sbc R5,R3
	sts _b+1,R5
	sts _b,R4
	.dbline 306
; 			 Judge1();
	rcall _Judge1
	.dbline 307
; 		   }
	rjmp L120
L119:
	.dbline 309
; 		   else
; 		   {
	.dbline 310
; 		     b=b-p;
	mov R2,R22
	clr R3
	lds R4,_b
	lds R5,_b+1
	sub R4,R2
	sbc R5,R3
	sts _b+1,R5
	sts _b,R4
	.dbline 311
; 		     Judge2();
	rcall _Judge2
	.dbline 312
; 		    }
L120:
	.dbline 313
; 		 for(u=0;u<R_Step;u++)    //字轮电机转到打印位置
	clr R2
	clr R3
	sts _u+1,R3
	sts _u,R2
	rjmp L124
L121:
	.dbline 314
	.dbline 314
	rcall _PulseZiLun
	.dbline 314
L122:
	.dbline 313
	lds R24,_u
	lds R25,_u+1
	adiw R24,1
	sts _u+1,R25
	sts _u,R24
L124:
	.dbline 313
	lds R2,_R_Step
	clr R3
	lds R4,_u
	lds R5,_u+1
	cp R4,R2
	cpc R5,R3
	brlo L121
	.dbline 315
;          {PulseZiLun(); }   
;          Print_Act();             //打印十位数
	rcall _Print_Act
	.dbline 316
; 	   }
L110:
	.dbline 318
; 
;      k++;
	inc R20
	.dbline 319
;     MotorZhua_fangZhi();          //翻页
	rcall _MotorZhua_fangZhi
	.dbline 320
; 	 if(Cancell==1)
	lds R24,_Cancell
	cpi R24,1
	brne L125
	.dbline 321
;      goto OUT2;
	rjmp L127
L125:
	.dbline 322
L103:
	.dbline 277
	sbis 0x16,3
	rjmp L102
L127:
	.dbline 324
;  }
;  OUT2:  
;  Cancell=0;                       //取消动作并进行翻页复位
	clr R2
	sts _Cancell,R2
	.dbline 325
;  for(u=0;u<450;u++) 
	clr R3
	sts _u+1,R3
	sts _u,R2
	rjmp L131
L128:
	.dbline 326
	.dbline 327
	in R24,0x15
	andi R24,247
	out 0x15,R24
	.dbline 328
	rcall _PulseXingZou
	.dbline 329
L129:
	.dbline 325
	lds R24,_u
	lds R25,_u+1
	adiw R24,1
	sts _u+1,R25
	sts _u,R24
L131:
	.dbline 325
	lds R24,_u
	lds R25,_u+1
	cpi R24,194
	ldi R30,1
	cpc R25,R30
	brlo L128
	.dbline -2
	.dbline 330
;      {
; 	  M_DIR0; 
;       PulseXingZou();	   
;      }   
; }
L101:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r p 22 c
	.dbsym r k 20 c
	.dbend
	.dbfunc e MotorGaiZhang _MotorGaiZhang fV
	.even
_MotorGaiZhang::
	.dbline -1
	.dbline 333
; //**************装票电机与翻页电机配合的盖章过程函数*************//
; void MotorGaiZhang()
; {
	rjmp L134
L133:
	.dbline 335
;  while(SONSOR_3==0)         //纸张传感器位为0时执行循环
;  { 
	.dbline 336
;    Motor3HouZou();          //进入盖章位置
	rcall _Motor3HouZou
	.dbline 337
;    Sign_Act();              //盖章动作
	rcall _Sign_Act
	.dbline 338
;    Motor3QianZhong();       //进入翻页位置
	rcall _Motor3QianZhong
	.dbline 339
;    MotorZhua_fangZhi();     //翻页
	rcall _MotorZhua_fangZhi
	.dbline 340
;     if(Cancell==1)          //检测取消标志
	lds R24,_Cancell
	cpi R24,1
	brne L136
	.dbline 341
;    goto OUT3;
	rjmp L138
L136:
	.dbline 342
L134:
	.dbline 334
	sbis 0x16,3
	rjmp L133
L138:
	.dbline 344
;  }
; OUT3: 
;  Cancell=0;                 //取消动作
	clr R2
	sts _Cancell,R2
	.dbline -2
	.dbline 345
; }
L132:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 348
; //*********************************主程序***********************************//
; void main(void)
; { INT_Init();            //初始化中断	
	.dbline 348
	rcall _INT_Init
L140:
	.dbline 350
;  begin: 	
; 	Cancell=0; 
	clr R2
	sts _Cancell,R2
	.dbline 351
; 	SIGN_ACT0;           //盖章击打电磁铁1吸起	
	in R24,0x15
	andi R24,251
	out 0x15,R24
	.dbline 352
;     PRINT_ACT0;          //打印页码击打电磁铁2吸起
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 353
;     GRASP_ACT0;          //抓纸机械手不动作
	in R24,0x15
	andi R24,254
	out 0x15,R24
	.dbline 354
; 	Forward_Step();        //翻页步进电机复位
	rcall _Forward_Step
	.dbline 355
; 	Motor3HouZou();        //承票板往后走
	rcall _Motor3HouZou
	.dbline 356
;   	Motor3QianZhong();     //承票板往中间走进行复位
	rcall _Motor3QianZhong
L141:
	.dbline 357
L144:
	.dbline 357
	.dbline 357
	rcall _FunkeyScan
	.dbline 357
L145:
	.dbline 357
;  do{do {FunkeyScan();} while(KeyDown==0); 
	lds R2,_KeyDown
	tst R2
	breq L144
	.dbline 358
;    	switch(FunkeyNum)
	lds R20,_FunkeyNum
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L150
X0:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L151
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L161
	rjmp L148
X1:
	.dbline 359
; 		{case 0:                     //装票操作             
L150:
	.dbline 360
; 			    Motor3();                   
	rcall _Motor3
	.dbline 361
; 				break;									 
	rjmp L148
L151:
	.dbline 363
;          case 1 :                     //盖章操作
; 				Motor3QianZou();      //出仓				 
	rcall _Motor3QianZou
L153:
	.dbline 365
L154:
	.dbline 365
;           wait1:
; 				while(KEY_1!=0);
	sbic 0x19,1
	rjmp L153
	rjmp L157
L156:
	.dbline 367
;                 while(KEY_1==0) 
;                    {DelayLong(50);
	.dbline 367
	ldi R16,50
	ldi R17,0
	rcall _DelayLong
	.dbline 368
;                     if(KEY_1==0)
	sbic 0x19,1
	rjmp L154
	.dbline 369
;                         Motor3HouZhong(); //入仓
	rcall _Motor3HouZhong
	.dbline 370
L160:
	.dbline 370
L157:
	.dbline 366
	sbis 0x19,1
	rjmp L156
	.dbline 371
;                     else goto wait1;}
; 				SIGN_ON0;                     
	in R24,0x12
	andi R24,254
	out 0x12,R24
	.dbline 372
;                 SIGN_OFF1;              //盖章进行中指示灯亮
	sbi 0x12,1
	.dbline 373
; 			    Motor3HouZou();         //进入盖章位置
	rcall _Motor3HouZou
	.dbline 374
; 				MotorGaiZhang();        //盖章函数调用
	rcall _MotorGaiZhang
	.dbline 375
; 			    Motor3QianZhong();		//退出盖章位置 
	rcall _Motor3QianZhong
	.dbline 376
;                 SIGN_ON1;                     
	sbi 0x12,0
	.dbline 377
;                 SIGN_OFF0;              //盖章结束指示灯亮
	in R24,0x12
	andi R24,253
	out 0x12,R24
	.dbline 378
; 				break;
	rjmp L148
L161:
	.dbline 380
;         case 2:                         //打印页码
;                 Motor3QianZou();        //出仓
	rcall _Motor3QianZou
L163:
	.dbline 381
L164:
	.dbline 381
;          wait2: while(KEY_2!=0); 
	sbic 0x19,2
	rjmp L163
	rjmp L167
L166:
	.dbline 383
;                 while(KEY_2==0) 
;                    {if(KEY_2==0)
	.dbline 383
	sbic 0x19,2
	rjmp L164
	.dbline 384
;                      Motor3HouZhong();  //入仓
	rcall _Motor3HouZhong
	.dbline 385
L170:
	.dbline 385
L167:
	.dbline 382
	sbis 0x19,2
	rjmp L166
	.dbline 386
; 					else goto wait2;}
; 				PRINT_ON0;                     
	in R24,0x12
	andi R24,247
	out 0x12,R24
	.dbline 387
;                 PRINT_OFF1;             //打印页码进行指示灯亮
	sbi 0x12,4
	.dbline 388
;                 Motor1_Fuwei();          
	rcall _Motor1_Fuwei
	.dbline 389
; 				Motor12_Dama();         //打印页码  
	rcall _Motor12_Dama
	.dbline 390
; 				PRINT_ON1;                     
	sbi 0x12,3
	.dbline 391
;                 PRINT_OFF0;             //打印页结束指示灯亮
	in R24,0x12
	andi R24,239
	out 0x12,R24
	.dbline 392
; 				break;
	.dbline 393
L148:
	.dbline 393
L142:
	.dbline 393
	rjmp L141
X2:
	.dbline -2
	.dbline 394
; 		default:break;}}while(1);
; }
L139:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 2
	rjmp _INTHandler
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第七章\第七章工程\work.c
	.dbfunc e INTHandler _INTHandler fV
	.even
_INTHandler::
	st -y,R24
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 399
; 
; //**************************中断服务程序*******************************//
; #pragma interrupt_handler INTHandler:2
; void INTHandler()  
; {Cancell=1;                             //置位取消标志 
	.dbline 399
	ldi R24,1
	sts _Cancell,R24
	.dbline 400
;  NOP();
	nop
	.dbline -2
	.dbline 401
; }
L171:
	ld R24,y+
	out 0x3f,R24
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\张军\AVR\AVR单片机系统开发实例稿\第七章\第七章工程\work.c
_R_Step::
	.blkb 1
	.dbsym e R_Step _R_Step c
_FunkeyNum::
	.blkb 1
	.dbsym e FunkeyNum _FunkeyNum c
_b::
	.blkb 2
	.dbsym e b _b i
_u::
	.blkb 2
	.dbsym e u _u i
_Cancell::
	.blkb 1
	.dbsym e Cancell _Cancell c
_KeyDown::
	.blkb 1
	.dbsym e KeyDown _KeyDown c

⌨️ 快捷键说明

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