📄 251.lis
字号:
00E0 .dbline -2
00E0 L28:
00E0 .dbline 0 ; func end
00E0 0895 ret
00E2 .dbend
00E2 .dbfunc e timer1_init _timer1_init fV
.even
00E2 _timer1_init::
00E2 .dbline -1
00E2 .dbline 149
00E2 ; }
00E2 ;
00E2 ;
00E2 ; //TIMER1 initialize - prescale:8
00E2 ; // WGM: 0) Normal, TOP=0xFFFF
00E2 ; // 1.0485s Overflow
00E2 ; // actual value: 0.100Sec (0.0%)
00E2 ; // For speed meter time counting
00E2 ; void timer1_init(void)
00E2 ; {
00E2 .dbline 150
00E2 ; TCCR1B = 0x00; //stop
00E2 2224 clr R2
00E4 2EBC out 0x2e,R2
00E6 .dbline 151
00E6 ; TCNT1H = 0x00; //setup
00E6 2DBC out 0x2d,R2
00E8 .dbline 152
00E8 ; TCNT1L = 0x00;
00E8 2CBC out 0x2c,R2
00EA .dbline 153
00EA ; OCR1AH = 0xC3;
00EA 83EC ldi R24,195
00EC 8BBD out 0x2b,R24
00EE .dbline 154
00EE ; OCR1AL = 0x50;
00EE 80E5 ldi R24,80
00F0 8ABD out 0x2a,R24
00F2 .dbline 155
00F2 ; OCR1BH = 0xC3;
00F2 83EC ldi R24,195
00F4 89BD out 0x29,R24
00F6 .dbline 156
00F6 ; OCR1BL = 0x50;
00F6 80E5 ldi R24,80
00F8 88BD out 0x28,R24
00FA .dbline 157
00FA ; ICR1H = 0xC3;
00FA 83EC ldi R24,195
00FC 87BD out 0x27,R24
00FE .dbline 158
00FE ; ICR1L = 0x50;
00FE 80E5 ldi R24,80
0100 86BD out 0x26,R24
0102 .dbline 159
0102 ; TCCR1A = 0x00;
0102 2FBC out 0x2f,R2
0104 .dbline 160
0104 ; TCCR1B = 0x03; //start Timer
0104 83E0 ldi R24,3
0106 8EBD out 0x2e,R24
0108 .dbline -2
0108 L29:
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbend
010A .dbfunc e timer2_init _timer2_init fV
.even
010A _timer2_init::
010A .dbline -1
010A .dbline 171
010A ; }
010A ;
010A ;
010A ;
010A ; //TIMER2 initialize - prescale:32
010A ; // WGM: Normal
010A ; // desired value: 1KHz
010A ; // actual value: 1.000KHz (0.0%)
010A ; // for motor
010A ; void timer2_init(void)
010A ; {
010A .dbline 172
010A ; TCCR2 = 0x00; //stop
010A 2224 clr R2
010C 25BC out 0x25,R2
010E .dbline 173
010E ; ASSR = 0x00; //set async mode
010E 22BC out 0x22,R2
0110 .dbline 174
0110 ; TCNT2 = 0x83; //setup
0110 83E8 ldi R24,131
0112 84BD out 0x24,R24
0114 .dbline 175
0114 ; OCR2 = 0x7D;
0114 8DE7 ldi R24,125
0116 83BD out 0x23,R24
0118 .dbline 176
0118 ; TCCR2 = 0x03; //start
0118 83E0 ldi R24,3
011A 85BD out 0x25,R24
011C .dbline -2
011C L30:
011C .dbline 0 ; func end
011C 0895 ret
011E .dbend
011E .dbfunc e watchdog_init _watchdog_init fV
.even
011E _watchdog_init::
011E .dbline -1
011E .dbline 182
011E ; }
011E ;
011E ; //Watchdog initialize
011E ; // prescale: 1024K
011E ; void watchdog_init(void)
011E ; {
011E .dbline 183
011E ; WDR(); //this prevents a timout on enabling
011E A895 wdr
0120 .dbline 184
0120 ; WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget to issue WDRs
0120 8EE0 ldi R24,14
0122 81BD out 0x21,R24
0124 .dbline -2
0124 L31:
0124 .dbline 0 ; func end
0124 0895 ret
0126 .dbend
.area vector(rom, abs)
.org 8
0008 93C0 rjmp _timer2_ovf_isr
.area text(rom, con, rel)
0126 .dbfile D:\prog251\251.c
0126 .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
0126 _timer2_ovf_isr::
0126 2A92 st -y,R2
0128 8A93 st -y,R24
012A 2FB6 in R2,0x3f
012C 2A92 st -y,R2
012E .dbline -1
012E .dbline 193
012E ; }
012E ;
012E ; //==========================================================
012E ; //=======================ISR==============================
012E ; //==========================================================
012E ;
012E ; #pragma interrupt_handler timer2_ovf_isr:5
012E ; void timer2_ovf_isr(void)
012E ; {
012E .dbline 194
012E ; TCNT2 = 0x83; //reload counter value
012E 83E8 ldi R24,131
0130 84BD out 0x24,R24
0132 .dbline 196
0132 ; //unblock motor
0132 ; MotorBlocked = 0;
0132 2224 clr R2
0134 20920B00 sts _MotorBlocked,R2
0138 .dbline 197
0138 ; WDR();
0138 A895 wdr
013A .dbline -2
013A L32:
013A 2990 ld R2,y+
013C 2FBE out 0x3f,R2
013E 8991 ld R24,y+
0140 2990 ld R2,y+
0142 .dbline 0 ; func end
0142 1895 reti
0144 .dbend
.area vector(rom, abs)
.org 16
0010 A2C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0144 .dbfile D:\prog251\251.c
0144 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0144 _timer1_ovf_isr::
0144 2A92 st -y,R2
0146 8A93 st -y,R24
0148 EA93 st -y,R30
014A 2FB6 in R2,0x3f
014C 2A92 st -y,R2
014E 00D0 rcall push_gset2
0150 .dbline -1
0150 .dbline 202
0150 .dbline 203
0150 40E2 ldi R20,32
0152 51EA ldi R21,161
0154 67E0 ldi R22,7
0156 70E0 ldi R23,0
0158 50931300 sts _TimeInterval+1,R21
015C 40931200 sts _TimeInterval,R20
0160 70931500 sts _TimeInterval+2+1,R23
0164 60931400 sts _TimeInterval+2,R22
0168 .dbline 204
0168 81E0 ldi R24,1
016A 80931000 sts _TimeIntervalRefreshed,R24
016E .dbline 205
016E 80931100 sts _SpeedUltraLow,R24
0172 .dbline 206
0172 20906100 lds R2,_MileageSaved
0176 2220 tst R2
0178 29F4 brne L34
017A .dbline 207
017A .dbline 208
017A 2224 clr R2
017C 20920F00 sts _MileageSaveBlocked,R2
0180 .dbline 209
0180 80936100 sts _MileageSaved,R24
0184 .dbline 210
0184 L34:
0184 .dbline -2
0184 L33:
0184 00D0 rcall pop_gset2
0186 2990 ld R2,y+
0188 2FBE out 0x3f,R2
018A E991 ld R30,y+
018C 8991 ld R24,y+
018E 2990 ld R2,y+
0190 .dbline 0 ; func end
0190 1895 reti
0192 .dbend
.area vector(rom, abs)
.org 18
0012 C9C0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0192 .dbfile D:\prog251\251.c
0192 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0192 _timer0_ovf_isr::
0192 2A92 st -y,R2
0194 3A92 st -y,R3
0196 8A93 st -y,R24
0198 9A93 st -y,R25
019A 2FB6 in R2,0x3f
019C 2A92 st -y,R2
019E .dbline -1
019E .dbline 215
019E .dbline 217
019E 8DE3 ldi R24,61
01A0 82BF out 0x32,R24
01A2 .dbline 219
01A2 80910E00 lds R24,_Timer0Div
01A6 8F5F subi R24,255 ; addi 1
01A8 80930E00 sts _Timer0Div,R24
01AC .dbline 220
01AC 8230 cpi R24,2
01AE A8F0 brlo L37
01B0 .dbline 221
01B0 .dbline 222
01B0 2224 clr R2
01B2 20920E00 sts _Timer0Div,R2
01B6 .dbline 226
01B6 20901A00 lds R2,_NPulseCnt
01BA 30901B00 lds R3,_NPulseCnt+1
01BE 30921D00 sts _NPulse+1,R3
01C2 20921C00 sts _NPulse,R2
01C6 .dbline 227
01C6 2224 clr R2
01C8 3324 clr R3
01CA 30921B00 sts _NPulseCnt+1,R3
01CE 20921A00 sts _NPulseCnt,R2
01D2 .dbline 230
01D2 20920C00 sts _CalculateBlocked,R2
01D6 .dbline 231
01D6 20920D00 sts _ParallelBlocked,R2
01DA .dbline 232
01DA L37:
01DA .dbline -2
01DA L36:
01DA 2990 ld R2,y+
01DC 2FBE out 0x3f,R2
01DE 9991 ld R25,y+
01E0 8991 ld R24,y+
01E2 3990 ld R3,y+
01E4 2990 ld R2,y+
01E6 .dbline 0 ; func end
01E6 1895 reti
01E8 .dbend
01E8 .dbfunc e spi_init _spi_init fV
.even
01E8 _spi_init::
01E8 .dbline -1
01E8 .dbline 238
01E8 ; }
01E8 ;
01E8 ; #pragma interrupt_handler timer1_ovf_isr:9
01E8 ; void timer1_ovf_isr(void)
01E8 ; {
01E8 ; TimeInterval = 100000*5;
01E8 ; TimeIntervalRefreshed = 1;
01E8 ; SpeedUltraLow = 1;
01E8 ; if(!MileageSaved)
01E8 ; {
01E8 ; MileageSaveBlocked = 0; //Start Mileage Saving
01E8 ; MileageSaved = 1;
01E8 ; }
01E8 ; }
01E8 ;
01E8 ; #pragma interrupt_handler timer0_ovf_isr:10
01E8 ; void timer0_ovf_isr(void)
01E8 ; {
01E8 ; //TIMER1 has overflowed
01E8 ; TCNT0 = 0x3D; //reload counter
01E8 ;
01E8 ; Timer0Div++;
01E8 ; if(Timer0Div>=2) //Divid by 2
01E8 ; {
01E8 ; Timer0Div = 0;
01E8 ; //speed motor is not controled by timer0
01E8 ;
01E8 ; //N motor pulse count
01E8 ; NPulse = NPulseCnt;
01E8 ; NPulseCnt = 0;
01E8 ;
01E8 ; //Wake up calculating
01E8 ; CalculateBlocked = 0;
01E8 ; ParallelBlocked = 0;
01E8 ; }
01E8 ; }
01E8 ;
01E8 ; //SPI initialize
01E8 ; // clock rate: 250000hz
01E8 ; void spi_init(void)
01E8 ; {
01E8 .dbline 239
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -