📄 control.lis
字号:
00DC 40930900 sts _Counter_MotorSpeedPulse,R20
00E0 70930C00 sts _Counter_MotorSpeedPulse+2+1,R23
00E4 60930B00 sts _Counter_MotorSpeedPulse+2,R22
00E8 .dbline 74
00E8 ; PORTB |=32; //PB5脚置高电平
00E8 C59A sbi 0x18,5
00EA .dbline 75
00EA ; }
00EA L7:
00EA .dbline 76
00EA 44EF ldi R20,244
00EC 51E0 ldi R21,1
00EE 60E0 ldi R22,0
00F0 70E0 ldi R23,0
00F2 40900B00 lds R4,_Counter_MotorSpeedPulse+2
00F6 50900C00 lds R5,_Counter_MotorSpeedPulse+2+1
00FA 20900900 lds R2,_Counter_MotorSpeedPulse
00FE 30900A00 lds R3,_Counter_MotorSpeedPulse+1
0102 2416 cp R2,R20
0104 3506 cpc R3,R21
0106 4606 cpc R4,R22
0108 5706 cpc R5,R23
010A 19F4 brne L9
010C .dbline 76
010C 88B3 in R24,0x18
010E 8F7D andi R24,223
0110 88BB out 0x18,R24
0112 L9:
0112 .dbline -2
0112 .dbline 77
0112 ; if(Counter_MotorSpeedPulse==500) PORTB &=223; //PB5脚置低电平
0112 ; }
0112 L6:
0112 00D0 rcall pop_gset2
0114 2990 ld R2,y+
0116 2FBE out 0x3f,R2
0118 E991 ld R30,y+
011A B991 ld R27,y+
011C A991 ld R26,y+
011E 9991 ld R25,y+
0120 8991 ld R24,y+
0122 5990 ld R5,y+
0124 4990 ld R4,y+
0126 3990 ld R3,y+
0128 2990 ld R2,y+
012A .dbline 0 ; func end
012A 1895 reti
012C .dbend
.area vector(rom, abs)
.org 4
0004 96C0 rjmp _int1_isr
.area text(rom, con, rel)
012C .dbfile C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC1控制)\Control.c
012C .dbfunc e int1_isr _int1_isr fV
.even
012C _int1_isr::
012C 0A92 st -y,R0
012E 1A92 st -y,R1
0130 2A92 st -y,R2
0132 3A92 st -y,R3
0134 4A92 st -y,R4
0136 5A92 st -y,R5
0138 8A93 st -y,R24
013A EA93 st -y,R30
013C 0FB6 in R0,0x3f
013E 0A92 st -y,R0
0140 00D0 rcall push_gset2
0142 .dbline -1
0142 .dbline 81
0142 ;
0142 ; #pragma interrupt_handler int1_isr:3
0142 ; void int1_isr(void) //external interupt on INT1 记录光电开关的触发脉冲
0142 ; {
0142 .dbline 82
0142 ; Counter_IRPulse++;
0142 41E0 ldi R20,1
0144 50E0 ldi R21,0
0146 60E0 ldi R22,0
0148 70E0 ldi R23,0
014A 40900700 lds R4,_Counter_IRPulse+2
014E 50900800 lds R5,_Counter_IRPulse+2+1
0152 20900500 lds R2,_Counter_IRPulse
0156 30900600 lds R3,_Counter_IRPulse+1
015A 240E add R2,R20
015C 351E adc R3,R21
015E 461E adc R4,R22
0160 571E adc R5,R23
0162 30920600 sts _Counter_IRPulse+1,R3
0166 20920500 sts _Counter_IRPulse,R2
016A 50920800 sts _Counter_IRPulse+2+1,R5
016E 40920700 sts _Counter_IRPulse+2,R4
0172 .dbline 83
0172 ; if(Counter_IRPulse >= 1000){ //计算并触发打印按钮
0172 48EE ldi R20,232
0174 53E0 ldi R21,3
0176 60E0 ldi R22,0
0178 70E0 ldi R23,0
017A 2416 cp R2,R20
017C 3506 cpc R3,R21
017E 4606 cpc R4,R22
0180 5706 cpc R5,R23
0182 6CF0 brlt L12
0184 .dbline 83
0184 .dbline 84
0184 ; Counter_IRPulse=0;
0184 40E0 ldi R20,0
0186 50E0 ldi R21,0
0188 60E0 ldi R22,0
018A 70E0 ldi R23,0
018C 50930600 sts _Counter_IRPulse+1,R21
0190 40930500 sts _Counter_IRPulse,R20
0194 70930800 sts _Counter_IRPulse+2+1,R23
0198 60930700 sts _Counter_IRPulse+2,R22
019C .dbline 85
019C ; PORTB |=64; //PB6脚置高电平
019C C69A sbi 0x18,6
019E .dbline 86
019E ; }
019E L12:
019E .dbline 87
019E 44EF ldi R20,244
01A0 51E0 ldi R21,1
01A2 60E0 ldi R22,0
01A4 70E0 ldi R23,0
01A6 40900700 lds R4,_Counter_IRPulse+2
01AA 50900800 lds R5,_Counter_IRPulse+2+1
01AE 20900500 lds R2,_Counter_IRPulse
01B2 30900600 lds R3,_Counter_IRPulse+1
01B6 2416 cp R2,R20
01B8 3506 cpc R3,R21
01BA 4606 cpc R4,R22
01BC 5706 cpc R5,R23
01BE 19F4 brne L14
01C0 .dbline 87
01C0 88B3 in R24,0x18
01C2 8F7B andi R24,191
01C4 88BB out 0x18,R24
01C6 L14:
01C6 .dbline -2
01C6 .dbline 88
01C6 ; if(Counter_IRPulse == 500) PORTB &=191; //PB6脚置低电平
01C6 ; }
01C6 L11:
01C6 00D0 rcall pop_gset2
01C8 0990 ld R0,y+
01CA 0FBE out 0x3f,R0
01CC E991 ld R30,y+
01CE 8991 ld R24,y+
01D0 5990 ld R5,y+
01D2 4990 ld R4,y+
01D4 3990 ld R3,y+
01D6 2990 ld R2,y+
01D8 1990 ld R1,y+
01DA 0990 ld R0,y+
01DC .dbline 0 ; func end
01DC 1895 reti
01DE .dbend
01DE .dbfunc e init_devices _init_devices fV
.even
01DE _init_devices::
01DE .dbline -1
01DE .dbline 92
01DE ;
01DE ; //call this routine to initialise all peripherals
01DE ; void init_devices(void)
01DE ; {
01DE .dbline 94
01DE ; //stop errant interrupts until set up
01DE ; CLI(); //disable all interrupts
01DE F894 cli
01E0 .dbline 95
01E0 ; port_init();
01E0 0FDF rcall _port_init
01E2 .dbline 96
01E2 ; timer2_init();
01E2 3CDF rcall _timer2_init
01E4 .dbline 97
01E4 ; timer1_init();
01E4 18DF rcall _timer1_init
01E6 .dbline 99
01E6 ;
01E6 ; MCUCR = 0x0F;
01E6 8FE0 ldi R24,15
01E8 85BF out 0x35,R24
01EA .dbline 100
01EA ; GICR = 0xC0;
01EA 80EC ldi R24,192
01EC 8BBF out 0x3b,R24
01EE .dbline 101
01EE ; TIMSK = 0x18; //timer interrupt sources
01EE 88E1 ldi R24,24
01F0 89BF out 0x39,R24
01F2 .dbline 102
01F2 ; SEI(); //re-enable interrupts
01F2 7894 sei
01F4 .dbline -2
01F4 .dbline 104
01F4 ; //all peripherals are now initialised
01F4 ; }
01F4 L16:
01F4 .dbline 0 ; func end
01F4 0895 ret
01F6 .dbend
01F6 .dbfunc e main _main fV
.even
01F6 _main::
01F6 .dbline -1
01F6 .dbline 107
01F6 ;
01F6 ; void main()
01F6 ; {
01F6 .dbline 108
01F6 ; Settings_IRTopValue = 1000; //光电开关触发Settings_IRTopValue次后就开始打印一条信息
01F6 48EE ldi R20,232
01F8 53E0 ldi R21,3
01FA 60E0 ldi R22,0
01FC 70E0 ldi R23,0
01FE 50930200 sts _Settings_IRTopValue+1,R21
0202 40930100 sts _Settings_IRTopValue,R20
0206 70930400 sts _Settings_IRTopValue+2+1,R23
020A 60930300 sts _Settings_IRTopValue+2,R22
020E .dbline 109
020E ; Settings_PrintQuality = 10; //10个墨滴选一个充电
020E 8AE0 ldi R24,10
0210 80930000 sts _Settings_PrintQuality,R24
0214 .dbline 110
0214 ; Counter_MotorSpeedPulse =0;
0214 40E0 ldi R20,0
0216 50E0 ldi R21,0
0218 60E0 ldi R22,0
021A 70E0 ldi R23,0
021C 50930A00 sts _Counter_MotorSpeedPulse+1,R21
0220 40930900 sts _Counter_MotorSpeedPulse,R20
0224 70930C00 sts _Counter_MotorSpeedPulse+2+1,R23
0228 60930B00 sts _Counter_MotorSpeedPulse+2,R22
022C .dbline 111
022C ; Counter_IRPulse =0;
022C 40E0 ldi R20,0
022E 50E0 ldi R21,0
0230 60E0 ldi R22,0
0232 70E0 ldi R23,0
0234 50930600 sts _Counter_IRPulse+1,R21
0238 40930500 sts _Counter_IRPulse,R20
023C 70930800 sts _Counter_IRPulse+2+1,R23
0240 60930700 sts _Counter_IRPulse+2,R22
0244 .dbline 113
0244 ;
0244 ; init_devices();
0244 .dbline -2
0244 .dbline 114
0244 ; }
0244 L17:
0244 .dbline 0 ; func end
0244 CCCF rjmp _init_devices
0246 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC1控制)\Control.c
0000 _Settings_PrintQuality::
0000 .blkb 1
0001 .dbsym e Settings_PrintQuality _Settings_PrintQuality c
0001 _Settings_IRTopValue::
0001 .blkb 4
0005 .dbsym e Settings_IRTopValue _Settings_IRTopValue L
0005 _Counter_IRPulse::
0005 .blkb 4
0009 .dbsym e Counter_IRPulse _Counter_IRPulse L
0009 _Counter_MotorSpeedPulse::
0009 .blkb 4
000D .dbsym e Counter_MotorSpeedPulse _Counter_MotorSpeedPulse L
000D _Ddummy::
000D .blkb 4
0011 .dbsym e Ddummy _Ddummy L
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -