📄 main.lis
字号:
014C .dbline 234
014C ; {da_counter++;}
014C .dbline 234
014C 80911700 lds R24,_da_counter
0150 8F5F subi R24,255 ; addi 1
0152 80931700 sts _da_counter,R24
0156 .dbline 234
0156 31C0 xjmp L31
0158 L30:
0158 .dbline 236
0158 ; else
0158 ; {
0158 .dbline 237
0158 ; if (micros_nu0==16)
0158 80911500 lds R24,_micros_nu0
015C 8031 cpi R24,16
015E 31F4 brne L32
0160 .dbline 238
0160 ; {da_counter=da_counter+2;}
0160 .dbline 238
0160 80911700 lds R24,_da_counter
0164 8E5F subi R24,254 ; addi 2
0166 80931700 sts _da_counter,R24
016A .dbline 238
016A 27C0 xjmp L33
016C L32:
016C .dbline 240
016C ; else
016C ; {
016C .dbline 241
016C ; if (micros_nu0==8)
016C 80911500 lds R24,_micros_nu0
0170 8830 cpi R24,8
0172 31F4 brne L34
0174 .dbline 242
0174 ; {da_counter=da_counter+4;}
0174 .dbline 242
0174 80911700 lds R24,_da_counter
0178 8C5F subi R24,252 ; addi 4
017A 80931700 sts _da_counter,R24
017E .dbline 242
017E 1DC0 xjmp L35
0180 L34:
0180 .dbline 244
0180 ; else
0180 ; {
0180 .dbline 245
0180 ; if (micros_nu0==4)
0180 80911500 lds R24,_micros_nu0
0184 8430 cpi R24,4
0186 31F4 brne L36
0188 .dbline 246
0188 ; {da_counter=da_counter+8;}
0188 .dbline 246
0188 80911700 lds R24,_da_counter
018C 885F subi R24,248 ; addi 8
018E 80931700 sts _da_counter,R24
0192 .dbline 246
0192 13C0 xjmp L37
0194 L36:
0194 .dbline 248
0194 ; else
0194 ; {
0194 .dbline 249
0194 ; if (micros_nu0==2)
0194 80911500 lds R24,_micros_nu0
0198 8230 cpi R24,2
019A 31F4 brne L38
019C .dbline 250
019C ; {da_counter=da_counter+16;}
019C .dbline 250
019C 80911700 lds R24,_da_counter
01A0 805F subi R24,240 ; addi 16
01A2 80931700 sts _da_counter,R24
01A6 .dbline 250
01A6 09C0 xjmp L39
01A8 L38:
01A8 .dbline 252
01A8 ; else
01A8 ; {
01A8 .dbline 253
01A8 ; if (micros_nu0==1)
01A8 80911500 lds R24,_micros_nu0
01AC 8130 cpi R24,1
01AE 29F4 brne L40
01B0 .dbline 254
01B0 ; {da_counter=da_counter+32;}
01B0 .dbline 254
01B0 80911700 lds R24,_da_counter
01B4 805E subi R24,224 ; addi 32
01B6 80931700 sts _da_counter,R24
01BA .dbline 254
01BA L40:
01BA .dbline 255
01BA ; }
01BA L39:
01BA .dbline 256
01BA ; }
01BA L37:
01BA .dbline 257
01BA ; }
01BA L35:
01BA .dbline 258
01BA ; }
01BA L33:
01BA .dbline 259
01BA L31:
01BA .dbline -2
01BA L1:
01BA 2990 ld R2,y+
01BC 2FBE out 0x3f,R2
01BE F991 ld R31,y+
01C0 E991 ld R30,y+
01C2 9991 ld R25,y+
01C4 8991 ld R24,y+
01C6 2991 ld R18,y+
01C8 0991 ld R16,y+
01CA 3990 ld R3,y+
01CC 2990 ld R2,y+
01CE .dbline 0 ; func end
01CE 1895 reti
01D0 .dbsym r j 16 c
01D0 .dbsym r i 18 c
01D0 .dbend
01D0 .dbfunc e time2_int _time2_int fV
.even
01D0 _time2_int::
01D0 2A92 st -y,R2
01D2 3A92 st -y,R3
01D4 8A93 st -y,R24
01D6 9A93 st -y,R25
01D8 2FB6 in R2,0x3f
01DA 2A92 st -y,R2
01DC .dbline -1
01DC .dbline 266
01DC ; }
01DC ; }
01DC ;
01DC ; /******************************************************
01DC ; 测量脉冲闸门时间波形中断函数(定时器2比较匹配中断)20-12KHZ 1-600RPM
01DC ; ******************************************************/
01DC ; void time2_int(void)
01DC ; {
01DC .dbline 268
01DC ; //200MS闸门
01DC ; counter++;
01DC 80910200 lds R24,_counter
01E0 8F5F subi R24,255 ; addi 1
01E2 80930200 sts _counter,R24
01E6 .dbline 269
01E6 ; if (counter==6)
01E6 8630 cpi R24,6
01E8 11F4 brne L43
01EA .dbline 270
01EA ; {OCR2=32;}
01EA .dbline 270
01EA 80E2 ldi R24,32
01EC 83BD out 0x23,R24
01EE .dbline 270
01EE L43:
01EE .dbline 271
01EE 80910200 lds R24,_counter
01F2 8730 cpi R24,7
01F4 91F4 brne L45
01F6 .dbline 272
01F6 .dbline 273
01F6 20901D00 lds R2,_pull_number
01FA 30901E00 lds R3,_pull_number+1
01FE 30920100 sts _speed_pull+1,R3
0202 20920000 sts _speed_pull,R2
0206 .dbline 274
0206 2224 clr R2
0208 3324 clr R3
020A 30921E00 sts _pull_number+1,R3
020E 20921D00 sts _pull_number,R2
0212 .dbline 275
0212 20920200 sts _counter,R2
0216 .dbline 276
0216 8FEF ldi R24,255
0218 83BD out 0x23,R24
021A .dbline 277
021A L45:
021A .dbline -2
021A L42:
021A 2990 ld R2,y+
021C 2FBE out 0x3f,R2
021E 9991 ld R25,y+
0220 8991 ld R24,y+
0222 3990 ld R3,y+
0224 2990 ld R2,y+
0226 .dbline 0 ; func end
0226 1895 reti
0228 .dbend
0228 .dbfunc e pull_int _pull_int fV
.even
0228 _pull_int::
0228 2A92 st -y,R2
022A 3A92 st -y,R3
022C 8A93 st -y,R24
022E 9A93 st -y,R25
0230 2FB6 in R2,0x3f
0232 2A92 st -y,R2
0234 .dbline -1
0234 .dbline 283
0234 .dbline 284
0234 80911D00 lds R24,_pull_number
0238 90911E00 lds R25,_pull_number+1
023C 0196 adiw R24,1
023E 90931E00 sts _pull_number+1,R25
0242 80931D00 sts _pull_number,R24
0246 .dbline 285
0246 80E6 ldi R24,2400
0248 99E0 ldi R25,9
024A 20901D00 lds R2,_pull_number
024E 30901E00 lds R3,_pull_number+1
0252 8215 cp R24,R2
0254 9305 cpc R25,R3
0256 20F4 brsh L48
0258 .dbline 286
0258 .dbline 286
0258 90931E00 sts _pull_number+1,R25
025C 80931D00 sts _pull_number,R24
0260 .dbline 286
0260 L48:
0260 .dbline -2
0260 L47:
0260 2990 ld R2,y+
0262 2FBE out 0x3f,R2
0264 9991 ld R25,y+
0266 8991 ld R24,y+
0268 3990 ld R3,y+
026A 2990 ld R2,y+
026C .dbline 0 ; func end
026C 1895 reti
026E .dbend
026E .dbfunc e timer1_init _timer1_init fV
.even
026E _timer1_init::
026E .dbline -1
026E .dbline 292
026E ; if (counter==7)
026E ; {
026E ; speed_pull=pull_number;
026E ; pull_number=0;
026E ; counter=0;
026E ; OCR2=0XFF;
026E ; }
026E ; }
026E ; /******************************************************
026E ; 测量脉冲数中断函数(外部INT0中断)
026E ; ******************************************************/
026E ; void pull_int(void)
026E ; {
026E ; pull_number++;
026E ; if (pull_number>2400)
026E ; {pull_number=2400;}
026E ; }
026E ; /****************************************************************
026E ; 定时器1初始化函数
026E ; ****************************************************************/
026E ; void timer1_init(void)
026E ; {
026E .dbline 293
026E ; TCCR1B = (1<<CS10)|(1<<WGM12); //time1的控制寄存器B,CTC模式,clk=系统时钟
026E 89E0 ldi R24,9
0270 8EBD out 0x2e,R24
0272 .dbline 294
0272 ; TIMSK &=~(1<<OCIE1A); //定时中断屏蔽寄存器
0272 89B7 in R24,0x39
0274 8F7E andi R24,239
0276 89BF out 0x39,R24
0278 .dbline -2
0278 L50:
0278 .dbline 0 ; func end
0278 0895 ret
027A .dbend
027A .dbfunc e timer2_init _timer2_init fV
.even
027A _timer2_init::
027A .dbline -1
027A .dbline 301
027A ; }
027A ;
027A ; /****************************************************************
027A ; 定时器2初始化函数
027A ; ****************************************************************/
027A ; void timer2_init(void)
027A ; {
027A .dbline 302
027A ; TCCR2=(1<<CS20)|(1<<CS21)|(1<<CS22)|(1<<WGM21);
027A 8FE0 ldi R24,15
027C 85BD out 0x25,R24
027E .dbline 303
027E ; OCR2=0XFF;
027E 8FEF ldi R24,255
0280 83BD out 0x23,R24
0282 .dbline -2
0282 L51:
0282 .dbline 0 ; func end
0282 0895 ret
0284 .dbend
0284 .dbfunc e int0_init _int0_init fV
.even
0284 _int0_init::
0284 .dbline -1
0284 .dbline 309
0284 ; }
0284 ; /****************************************************************
0284 ; INT0初始化函数
0284 ; ****************************************************************/
0284 ; void int0_init(void)
0284 ; {
0284 .dbline 310
0284 ; DDRD&=~(1<PULL_IN);
0284 8898 cbi 0x11,0
0286 .dbline 311
0286 ; MCUCR=(1<<ISC01)|(1<<ISC00);
0286 83E0 ldi R24,3
0288 85BF out 0x35,R24
028A .dbline -2
028A L52:
028A .dbline 0 ; func end
028A 0895 ret
028C .dbend
028C .dbfunc e port_init _port_init fV
.even
028C _port_init::
028C .dbline -1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -