📄 work.lst
字号:
023D 0435 CPC R3,R5
023E F448 BCC 0x0248
(0304) {
(0305) b=p-b;
023F 2455 CLR R5
0240 1842 SUB R4,R2
0241 0853 SBC R5,R3
0242 92500063 STS _b+1,R5
0244 92400062 STS _b,R4
(0306) Judge1();
0246 DEC5 RCALL _Judge1
(0307) }
0247 C00D RJMP 0x0255
(0308) else
(0309) {
(0310) b=b-p;
0248 2E26 MOV R2,R22
0249 2433 CLR R3
024A 90400062 LDS R4,_b
024C 90500063 LDS R5,_b+1
024E 1842 SUB R4,R2
024F 0853 SBC R5,R3
0250 92500063 STS _b+1,R5
0252 92400062 STS _b,R4
(0311) Judge2();
0254 DED8 RCALL _Judge2
(0312) }
(0313) for(u=0;u<R_Step;u++) //字轮电机转到打印位置
0255 2422 CLR R2
0256 2433 CLR R3
0257 92300065 STS _u+1,R3
0259 92200064 STS _u,R2
025B C00A RJMP 0x0266
(0314) {PulseZiLun(); }
025C DE39 RCALL _PulseZiLun
025D 91800064 LDS R24,_u
025F 91900065 LDS R25,_u+1
0261 9601 ADIW R24,1
0262 93900065 STS _u+1,R25
0264 93800064 STS _u,R24
0266 90200060 LDS R2,_R_Step
0268 2433 CLR R3
0269 90400064 LDS R4,_u
026B 90500065 LDS R5,_u+1
026D 1442 CP R4,R2
026E 0453 CPC R5,R3
026F F360 BCS 0x025C
(0315) Print_Act(); //打印十位数
0270 DE30 RCALL _Print_Act
(0316) }
(0317)
(0318) k++;
0271 9543 INC R20
(0319) MotorZhua_fangZhi(); //翻页
0272 DEDB RCALL _MotorZhua_fangZhi
(0320) if(Cancell==1)
0273 91800066 LDS R24,_Cancell
0275 3081 CPI R24,1
0276 F409 BNE 0x0278
(0321) goto OUT2;
0277 C002 RJMP 0x027A
0278 9BB3 SBIS 0x16,3
0279 CF45 RJMP 0x01BF
(0322) }
(0323) OUT2:
(0324) Cancell=0; //取消动作并进行翻页复位
027A 2422 CLR R2
027B 92200066 STS _Cancell,R2
(0325) for(u=0;u<450;u++)
027D 2433 CLR R3
027E 92300065 STS _u+1,R3
0280 92200064 STS _u,R2
0282 C00D RJMP 0x0290
(0326) {
(0327) M_DIR0;
0283 B385 IN R24,0x15
0284 7F87 ANDI R24,0xF7
0285 BB85 OUT 0x15,R24
(0328) PulseXingZou();
0286 DE04 RCALL _PulseXingZou
0287 91800064 LDS R24,_u
0289 91900065 LDS R25,_u+1
028B 9601 ADIW R24,1
028C 93900065 STS _u+1,R25
028E 93800064 STS _u,R24
0290 91800064 LDS R24,_u
0292 91900065 LDS R25,_u+1
0294 3C82 CPI R24,0xC2
0295 E0E1 LDI R30,1
0296 079E CPC R25,R30
0297 F358 BCS 0x0283
(0329) }
(0330) }
0298 D0C0 RCALL pop_gset2
0299 9508 RET
(0331) //**************装票电机与翻页电机配合的盖章过程函数*************//
(0332) void MotorGaiZhang()
(0333) {
_MotorGaiZhang:
029A C009 RJMP 0x02A4
(0334) while(SONSOR_3==0) //纸张传感器位为0时执行循环
(0335) {
(0336) Motor3HouZou(); //进入盖章位置
029B DEEF RCALL _Motor3HouZou
(0337) Sign_Act(); //盖章动作
029C DE0E RCALL _Sign_Act
(0338) Motor3QianZhong(); //进入翻页位置
029D DEF7 RCALL _Motor3QianZhong
(0339) MotorZhua_fangZhi(); //翻页
029E DEAF RCALL _MotorZhua_fangZhi
(0340) if(Cancell==1) //检测取消标志
029F 91800066 LDS R24,_Cancell
02A1 3081 CPI R24,1
02A2 F409 BNE 0x02A4
(0341) goto OUT3;
02A3 C002 RJMP 0x02A6
02A4 9BB3 SBIS 0x16,3
02A5 CFF5 RJMP 0x029B
(0342) }
(0343) OUT3:
(0344) Cancell=0; //取消动作
02A6 2422 CLR R2
02A7 92200066 STS _Cancell,R2
(0345) }
02A9 9508 RET
(0346) //*********************************主程序***********************************//
(0347) void main(void)
(0348) { INT_Init(); //初始化中断
_main:
02AA DD81 RCALL _INT_Init
(0349) begin:
(0350) Cancell=0;
02AB 2422 CLR R2
02AC 92200066 STS _Cancell,R2
(0351) SIGN_ACT0; //盖章击打电磁铁1吸起
02AE B385 IN R24,0x15
02AF 7F8B ANDI R24,0xFB
02B0 BB85 OUT 0x15,R24
(0352) PRINT_ACT0; //打印页码击打电磁铁2吸起
02B1 B385 IN R24,0x15
02B2 7F8D ANDI R24,0xFD
02B3 BB85 OUT 0x15,R24
(0353) GRASP_ACT0; //抓纸机械手不动作
02B4 B385 IN R24,0x15
02B5 7F8E ANDI R24,0xFE
02B6 BB85 OUT 0x15,R24
(0354) Forward_Step(); //翻页步进电机复位
02B7 DE32 RCALL _Forward_Step
(0355) Motor3HouZou(); //承票板往后走
02B8 DED2 RCALL _Motor3HouZou
(0356) Motor3QianZhong(); //承票板往中间走进行复位
02B9 DEDB RCALL _Motor3QianZhong
(0357) do{do {FunkeyScan();} while(KeyDown==0);
02BA DD98 RCALL _FunkeyScan
02BB 90200067 LDS R2,_KeyDown
02BD 2022 TST R2
02BE F3D9 BEQ 0x02BA
(0358) switch(FunkeyNum)
02BF 91400061 LDS R20,_FunkeyNum
02C1 2755 CLR R21
02C2 3040 CPI R20,0
02C3 0745 CPC R20,R21
02C4 F049 BEQ 0x02CE
02C5 3041 CPI R20,1
02C6 E0E0 LDI R30,0
02C7 075E CPC R21,R30
02C8 F039 BEQ 0x02D0
02C9 3042 CPI R20,2
02CA E0E0 LDI R30,0
02CB 075E CPC R21,R30
02CC F0D9 BEQ 0x02E8
02CD C02D RJMP 0x02FB
(0359) {case 0: //装票操作
(0360) Motor3();
02CE DEC4 RCALL _Motor3
(0361) break;
02CF C02B RJMP 0x02FB
(0362) case 1 : //盖章操作
(0363) Motor3QianZou(); //出仓
02D0 DEA1 RCALL _Motor3QianZou
(0364) wait1:
(0365) while(KEY_1!=0);
02D1 99C9 SBIC 0x19,1
02D2 CFFE RJMP 0x02D1
02D3 C006 RJMP 0x02DA
(0366) while(KEY_1==0)
(0367) {DelayLong(50);
02D4 E302 LDI R16,0x32
02D5 E010 LDI R17,0
02D6 DD68 RCALL _DelayLong
(0368) if(KEY_1==0)
02D7 99C9 SBIC 0x19,1
02D8 CFF8 RJMP 0x02D1
(0369) Motor3HouZhong(); //入仓
02D9 DE9E RCALL _Motor3HouZhong
02DA 9BC9 SBIS 0x19,1
02DB CFF8 RJMP 0x02D4
(0370) else goto wait1;}
(0371) SIGN_ON0;
02DC B382 IN R24,0x12
02DD 7F8E ANDI R24,0xFE
02DE BB82 OUT 0x12,R24
(0372) SIGN_OFF1; //盖章进行中指示灯亮
02DF 9A91 SBI 0x12,1
(0373) Motor3HouZou(); //进入盖章位置
02E0 DEAA RCALL _Motor3HouZou
(0374) MotorGaiZhang(); //盖章函数调用
02E1 DFB8 RCALL _MotorGaiZhang
(0375) Motor3QianZhong(); //退出盖章位置
02E2 DEB2 RCALL _Motor3QianZhong
(0376) SIGN_ON1;
02E3 9A90 SBI 0x12,0
(0377) SIGN_OFF0; //盖章结束指示灯亮
02E4 B382 IN R24,0x12
02E5 7F8D ANDI R24,0xFD
02E6 BB82 OUT 0x12,R24
(0378) break;
02E7 C013 RJMP 0x02FB
(0379) case 2: //打印页码
(0380) Motor3QianZou(); //出仓
02E8 DE89 RCALL _Motor3QianZou
(0381) wait2: while(KEY_2!=0);
02E9 99CA SBIC 0x19,2
02EA CFFE RJMP 0x02E9
02EB C003 RJMP 0x02EF
(0382) while(KEY_2==0)
(0383) {if(KEY_2==0)
02EC 99CA SBIC 0x19,2
02ED CFFB RJMP 0x02E9
(0384) Motor3HouZhong(); //入仓
02EE DE89 RCALL _Motor3HouZhong
02EF 9BCA SBIS 0x19,2
02F0 CFFB RJMP 0x02EC
(0385) else goto wait2;}
(0386) PRINT_ON0;
02F1 B382 IN R24,0x12
02F2 7F87 ANDI R24,0xF7
02F3 BB82 OUT 0x12,R24
(0387) PRINT_OFF1; //打印页码进行指示灯亮
02F4 9A94 SBI 0x12,4
(0388) Motor1_Fuwei();
02F5 DEB1 RCALL _Motor1_Fuwei
(0389) Motor12_Dama(); //打印页码
02F6 DEC5 RCALL _Motor12_Dama
(0390) PRINT_ON1;
02F7 9A93 SBI 0x12,3
(0391) PRINT_OFF0; //打印页结束指示灯亮
02F8 B382 IN R24,0x12
02F9 7E8F ANDI R24,0xEF
02FA BB82 OUT 0x12,R24
(0392) break;
(0393) default:break;}}while(1);
02FB CFBE RJMP 0x02BA
(0394) }
02FC 9508 RET
_INTHandler:
02FD 938A ST R24,-Y
02FE B78F IN R24,0x3F
02FF 938A ST R24,-Y
(0395)
(0396) //**************************中断服务程序*******************************//
(0397) #pragma interrupt_handler INTHandler:2
(0398) void INTHandler()
(0399) {Cancell=1; //置位取消标志
0300 E081 LDI R24,1
0301 93800066 STS _Cancell,R24
(0400) NOP();
0303 0000 NOP
(0401) }
FILE: <library>
0304 9189 LD R24,Y+
0305 BF8F OUT 0x3F,R24
0306 9189 LD R24,Y+
0307 9518 RETI
mod16s:
0308 9468 BSET 6
0309 92DA ST R13,-Y
030A 2ED1 MOV R13,R17
030B C004 RJMP 0x0310
div16s:
030C 94E8 BCLR 6
030D 92DA ST R13,-Y
030E 2ED1 MOV R13,R17
030F 26D3 EOR R13,R19
0310 FF17 SBRS R17,7
0311 C004 RJMP 0x0316
0312 9510 COM R17
0313 9500 COM R16
0314 5F0F SUBI R16,0xFF
0315 4F1F SBCI R17,0xFF
0316 FF37 SBRS R19,7
0317 C004 RJMP 0x031C
0318 9530 COM R19
0319 9520 COM R18
031A 5F2F SUBI R18,0xFF
031B 4F3F SBCI R19,0xFF
031C D00B RCALL xdiv16u
031D FED7 SBRS R13,7
031E C004 RJMP 0x0323
031F 9510 COM R17
0320 9500 COM R16
0321 5F0F SUBI R16,0xFF
0322 4F1F SBCI R17,0xFF
0323 90D9 LD R13,Y+
0324 9508 RET
mod16u:
0325 9468 BSET 6
0326 C001 RJMP xdiv16u
div16u:
0327 94E8 BCLR 6
xdiv16u:
0328 92EA ST R14,-Y
0329 92FA ST R15,-Y
032A 938A ST R24,-Y
032B 24EE CLR R14
032C 24FF CLR R15
032D E180 LDI R24,0x10
032E 0F00 LSL R16
032F 1F11 ROL R17
0330 1CEE ROL R14
0331 1CFF ROL R15
0332 16E2 CP R14,R18
0333 06F3 CPC R15,R19
0334 F018 BCS 0x0338
0335 1AE2 SUB R14,R18
0336 0AF3 SBC R15,R19
0337 9503 INC R16
0338 958A DEC R24
0339 F7A1 BNE 0x032E
033A F416 BRTC 0x033D
033B 2D0E MOV R16,R14
033C 2D1F MOV R17,R15
033D 9189 LD R24,Y+
033E 90F9 LD R15,Y+
033F 90E9 LD R14,Y+
0340 9508 RET
mod8u:
0341 9468 BSET 6
0342 C001 RJMP xdiv8u
div8u:
0343 94E8 BCLR 6
xdiv8u:
0344 932A ST R18,-Y
0345 92FA ST R15,-Y
0346 92EA ST R14,-Y
0347 24FF CLR R15
0348 24EE CLR R14
0349 E120 LDI R18,0x10
034A 0F00 LSL R16
034B 1CFF ROL R15
034C 1CEE ROL R14
034D 16E1 CP R14,R17
034E F010 BCS 0x0351
034F 1AE1 SUB R14,R17
0350 9503 INC R16
0351 952A DEC R18
0352 F7B9 BNE 0x034A
0353 F40E BRTC 0x0355
0354 2D0E MOV R16,R14
0355 90E9 LD R14,Y+
0356 90F9 LD R15,Y+
0357 9129 LD R18,Y+
0358 9508 RET
pop_gset2:
0359 E0E2 LDI R30,2
035A C004 RJMP pop
push_gset1:
035B 935A ST R21,-Y
035C 934A ST R20,-Y
035D 9508 RET
pop_gset1:
035E E0E1 LDI R30,1
pop:
035F 9149 LD R20,Y+
0360 9159 LD R21,Y+
0361 FDE0 SBRC R30,0
0362 9508 RET
0363 9169 LD R22,Y+
0364 9179 LD R23,Y+
0365 FDE1 SBRC R30,1
0366 9508 RET
0367 90A9 LD R10,Y+
0368 90B9 LD R11,Y+
0369 FDE2 SBRC R30,2
036A 9508 RET
036B 90C9 LD R12,Y+
036C 90D9 LD R13,Y+
036D FDE3 SBRC R30,3
036E 9508 RET
036F 90E9 LD R14,Y+
0370 90F9 LD R15,Y+
0371 9508 RET
push_gset2:
0372 937A ST R23,-Y
0373 936A ST R22,-Y
0374 CFE6 RJMP push_gset1
mpy16s:
0375 920A ST R0,-Y
0376 921A ST R1,-Y
0377 2400 CLR R0
0378 2411 CLR R1
0379 3000 CPI R16,0
037A 0701 CPC R16,R17
037B F041 BEQ 0x0384
037C 9516 LSR R17
037D 9507 ROR R16
037E F410 BCC 0x0381
037F 0E02 ADD R0,R18
0380 1E13 ADC R1,R19
0381 0F22 LSL R18
0382 1F33 ROL R19
0383 CFF5 RJMP 0x0379
0384 2D00 MOV R16,R0
0385 2D11 MOV R17,R1
0386 9019 LD R1,Y+
0387 9009 LD R0,Y+
0388 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -