📄 mycontrol.lst
字号:
00D0 938A ST R24,-Y
00D1 93EA ST R30,-Y
00D2 B60F IN R0,0x3F
00D3 920A ST R0,-Y
00D4 D0E4 RCALL push_gset2
(0078)
(0079) #pragma interrupt_handler int1_isr:3
(0080) void int1_isr(void) //external interupt on INT1 记录光电开关的触发脉冲
(0081) {
(0082) Counter_IRPulse++;
00D5 E041 LDI R20,1
00D6 E050 LDI R21,0
00D7 E060 LDI R22,0
00D8 E070 LDI R23,0
00D9 90400067 LDS R4,_Counter_IRPulse+2
00DB 90500068 LDS R5,_Counter_IRPulse+3
00DD 90200065 LDS R2,_Counter_IRPulse
00DF 90300066 LDS R3,_Counter_IRPulse+1
00E1 0E24 ADD R2,R20
00E2 1E35 ADC R3,R21
00E3 1E46 ADC R4,R22
00E4 1E57 ADC R5,R23
00E5 92300066 STS _Counter_IRPulse+1,R3
00E7 92200065 STS _Counter_IRPulse,R2
00E9 92500068 STS _Counter_IRPulse+3,R5
00EB 92400067 STS _Counter_IRPulse+2,R4
(0083) if(Counter_IRPulse >= 1000){ //计算并触发打印按钮
00ED EE48 LDI R20,0xE8
00EE E053 LDI R21,3
00EF E060 LDI R22,0
00F0 E070 LDI R23,0
00F1 1624 CP R2,R20
00F2 0635 CPC R3,R21
00F3 0646 CPC R4,R22
00F4 0657 CPC R5,R23
00F5 F06C BLT 0x0103
(0084) Counter_IRPulse=0;
00F6 E040 LDI R20,0
00F7 E050 LDI R21,0
00F8 E060 LDI R22,0
00F9 E070 LDI R23,0
00FA 93500066 STS _Counter_IRPulse+1,R21
00FC 93400065 STS _Counter_IRPulse,R20
00FE 93700068 STS _Counter_IRPulse+3,R23
0100 93600067 STS _Counter_IRPulse+2,R22
(0085) PORTB |=64; //PB6脚置高电平
0102 9AC6 SBI 0x18,6
(0086) }
(0087) if(Counter_IRPulse == 500) PORTB &=191; //PB6脚置低电平
0103 EF44 LDI R20,0xF4
0104 E051 LDI R21,1
0105 E060 LDI R22,0
0106 E070 LDI R23,0
0107 90400067 LDS R4,_Counter_IRPulse+2
0109 90500068 LDS R5,_Counter_IRPulse+3
010B 90200065 LDS R2,_Counter_IRPulse
010D 90300066 LDS R3,_Counter_IRPulse+1
010F 1624 CP R2,R20
0110 0635 CPC R3,R21
0111 0646 CPC R4,R22
0112 0657 CPC R5,R23
0113 F419 BNE 0x0117
0114 B388 IN R24,0x18
0115 7B8F ANDI R24,0xBF
0116 BB88 OUT 0x18,R24
(0088) }
0117 D088 RCALL pop_gset2
0118 9009 LD R0,Y+
0119 BE0F OUT 0x3F,R0
011A 91E9 LD R30,Y+
011B 9189 LD R24,Y+
011C 9059 LD R5,Y+
011D 9049 LD R4,Y+
011E 9039 LD R3,Y+
011F 9029 LD R2,Y+
0120 9019 LD R1,Y+
0121 9009 LD R0,Y+
0122 9518 RETI
(0089)
(0090) //call this routine to initialise all peripherals
(0091) void init_devices(void)
(0092) {
(0093) //stop errant interrupts until set up
(0094) CLI(); //disable all interrupts
_init_devices:
0123 94F8 BCLR 7
(0095) port_init();
0124 DF0F RCALL _port_init
(0096) timer2_init();
0125 DF3C RCALL _timer2_init
(0097) timer1_init();
0126 DF18 RCALL _timer1_init
(0098)
(0099) MCUCR = 0x0F;
0127 E08F LDI R24,0xF
0128 BF85 OUT 0x35,R24
(0100) GICR = 0xC0;
0129 EC80 LDI R24,0xC0
012A BF8B OUT 0x3B,R24
(0101) TIMSK = 0x18; //timer interrupt sources
012B E188 LDI R24,0x18
012C BF89 OUT 0x39,R24
(0102) SEI(); //re-enable interrupts
012D 9478 BSET 7
(0103) //all peripherals are now initialised
(0104) }
012E 9508 RET
(0105)
(0106) void main()
(0107) {
(0108) Settings_IRTopValue = 1000; //光电开关触发Settings_IRTopValue次后就开始打印一条信息
_main:
012F EE48 LDI R20,0xE8
0130 E053 LDI R21,3
0131 E060 LDI R22,0
0132 E070 LDI R23,0
0133 93500062 STS _Settings_IRTopValue+1,R21
0135 93400061 STS _Settings_IRTopValue,R20
0137 93700064 STS _Settings_IRTopValue+3,R23
0139 93600063 STS _Settings_IRTopValue+2,R22
(0109) Settings_PrintQuality = 10; //10个墨滴选一个充电
013B E08A LDI R24,0xA
013C 93800060 STS _Settings_PrintQuality,R24
(0110) Counter_MotorSpeedPulse =0;
013E E040 LDI R20,0
013F E050 LDI R21,0
0140 E060 LDI R22,0
0141 E070 LDI R23,0
0142 9350006A STS _Counter_MotorSpeedPulse+1,R21
0144 93400069 STS _Counter_MotorSpeedPulse,R20
0146 9370006C STS _Counter_MotorSpeedPulse+3,R23
0148 9360006B STS _Counter_MotorSpeedPulse+2,R22
(0111) Counter_IRPulse =0;
014A E040 LDI R20,0
014B E050 LDI R21,0
014C E060 LDI R22,0
014D E070 LDI R23,0
014E 93500066 STS _Counter_IRPulse+1,R21
0150 93400065 STS _Counter_IRPulse,R20
0152 93700068 STS _Counter_IRPulse+3,R23
0154 93600067 STS _Counter_IRPulse+2,R22
(0112)
(0113) init_devices();
(0114) }
FILE: <library>
0156 CFCC RJMP _init_devices
mod16s:
0157 9468 BSET 6
0158 92DA ST R13,-Y
0159 2ED1 MOV R13,R17
015A C004 RJMP 0x015F
div16s:
015B 94E8 BCLR 6
015C 92DA ST R13,-Y
015D 2ED1 MOV R13,R17
015E 26D3 EOR R13,R19
015F FF17 SBRS R17,7
0160 C004 RJMP 0x0165
0161 9510 COM R17
0162 9500 COM R16
0163 5F0F SUBI R16,0xFF
0164 4F1F SBCI R17,0xFF
0165 FF37 SBRS R19,7
0166 C004 RJMP 0x016B
0167 9530 COM R19
0168 9520 COM R18
0169 5F2F SUBI R18,0xFF
016A 4F3F SBCI R19,0xFF
016B D00B RCALL xdiv16u
016C FED7 SBRS R13,7
016D C004 RJMP 0x0172
016E 9510 COM R17
016F 9500 COM R16
0170 5F0F SUBI R16,0xFF
0171 4F1F SBCI R17,0xFF
0172 90D9 LD R13,Y+
0173 9508 RET
mod16u:
0174 9468 BSET 6
0175 C001 RJMP xdiv16u
div16u:
0176 94E8 BCLR 6
xdiv16u:
0177 92EA ST R14,-Y
0178 92FA ST R15,-Y
0179 938A ST R24,-Y
017A 24EE CLR R14
017B 24FF CLR R15
017C E180 LDI R24,0x10
017D 0F00 LSL R16
017E 1F11 ROL R17
017F 1CEE ROL R14
0180 1CFF ROL R15
0181 16E2 CP R14,R18
0182 06F3 CPC R15,R19
0183 F018 BCS 0x0187
0184 1AE2 SUB R14,R18
0185 0AF3 SBC R15,R19
0186 9503 INC R16
0187 958A DEC R24
0188 F7A1 BNE 0x017D
0189 F416 BRTC 0x018C
018A 2D0E MOV R16,R14
018B 2D1F MOV R17,R15
018C 9189 LD R24,Y+
018D 90F9 LD R15,Y+
018E 90E9 LD R14,Y+
018F 9508 RET
empy16s:
0190 920A ST R0,-Y
0191 921A ST R1,-Y
0192 938A ST R24,-Y
0193 939A ST R25,-Y
0194 9F02 MUL R16,R18
0195 01C0 MOVW R24,R0
0196 9F12 MUL R17,R18
0197 0D90 ADD R25,R0
0198 9F03 MUL R16,R19
0199 0D90 ADD R25,R0
019A 018C MOVW R16,R24
019B 9199 LD R25,Y+
019C 9189 LD R24,Y+
019D 9019 LD R1,Y+
019E 9009 LD R0,Y+
019F 9508 RET
pop_gset2:
01A0 E0E2 LDI R30,2
01A1 C004 RJMP pop
push_gset1:
01A2 935A ST R21,-Y
01A3 934A ST R20,-Y
01A4 9508 RET
pop_gset1:
01A5 E0E1 LDI R30,1
pop:
01A6 9149 LD R20,Y+
01A7 9159 LD R21,Y+
01A8 FDE0 SBRC R30,0
01A9 9508 RET
01AA 9169 LD R22,Y+
01AB 9179 LD R23,Y+
01AC FDE1 SBRC R30,1
01AD 9508 RET
01AE 90A9 LD R10,Y+
01AF 90B9 LD R11,Y+
01B0 FDE2 SBRC R30,2
01B1 9508 RET
01B2 90C9 LD R12,Y+
01B3 90D9 LD R13,Y+
01B4 FDE3 SBRC R30,3
01B5 9508 RET
01B6 90E9 LD R14,Y+
01B7 90F9 LD R15,Y+
01B8 9508 RET
push_gset2:
01B9 937A ST R23,-Y
01BA 936A ST R22,-Y
01BB CFE6 RJMP push_gset1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -