?? wwork.s
字號:
.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 E:\張軍\AVR\光盤內容\實例源文件\第七章工程\wwork.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 E:\張軍\AVR\光盤內容\實例源文件\第七章工程\wwork.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 + -