📄 lcd.lis
字号:
00AA L7:
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbend
.area vector(rom, abs)
.org 28
001C 56C0 rjmp _adc_isr
.area text(rom, con, rel)
00AC .dbfile D:\prog251\Motortest\251.c
00AC .dbfunc e adc_isr _adc_isr fV
.even
00AC _adc_isr::
00AC .dbline -1
00AC .dbline 114
00AC ; }
00AC ;
00AC ; #pragma interrupt_handler adc_isr:15
00AC ; void adc_isr(void)
00AC ; {
00AC .dbline -2
00AC L8:
00AC .dbline 0 ; func end
00AC 1895 reti
00AE .dbend
.area vector(rom, abs)
.org 2
0002 57C0 rjmp _int0_isr
.area text(rom, con, rel)
00AE .dbfile D:\prog251\Motortest\251.c
00AE .dbfunc e int0_isr _int0_isr fV
.even
00AE _int0_isr::
00AE .dbline -1
00AE .dbline 122
00AE ; //conversion complete, read value (int) using...
00AE ; // value=ADCL; //Read 8 low bits first (important)
00AE ; // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
00AE ; }
00AE ;
00AE ; #pragma interrupt_handler int0_isr:2
00AE ; void int0_isr(void)
00AE ; {
00AE .dbline -2
00AE L9:
00AE .dbline 0 ; func end
00AE 1895 reti
00B0 .dbend
.area vector(rom, abs)
.org 4
0004 58C0 rjmp _int1_isr
.area text(rom, con, rel)
00B0 .dbfile D:\prog251\Motortest\251.c
00B0 .dbfunc e int1_isr _int1_isr fV
.even
00B0 _int1_isr::
00B0 .dbline -1
00B0 .dbline 128
00B0 ; //external interupt on INT0
00B0 ; }
00B0 ;
00B0 ; #pragma interrupt_handler int1_isr:3
00B0 ; void int1_isr(void)
00B0 ; {
00B0 .dbline -2
00B0 L10:
00B0 .dbline 0 ; func end
00B0 1895 reti
00B2 .dbend
00B2 .dbfunc e init_devices _init_devices fV
.even
00B2 _init_devices::
00B2 .dbline -1
00B2 .dbline 134
00B2 ; //external interupt on INT1
00B2 ; }
00B2 ;
00B2 ; //call this routine to initialize all peripherals
00B2 ; void init_devices(void)
00B2 ; {
00B2 .dbline 136
00B2 ; //stop errant interrupts until set up
00B2 ; CLI(); //disable all interrupts
00B2 F894 cli
00B4 .dbline 137
00B4 ; port_init();
00B4 A5DF rcall _port_init
00B6 .dbline 138
00B6 ; timer1_init();
00B6 B0DF rcall _timer1_init
00B8 .dbline 139
00B8 ; timer2_init();
00B8 D0DF rcall _timer2_init
00BA .dbline 140
00BA ; spi_init();
00BA EBDF rcall _spi_init
00BC .dbline 141
00BC ; adc_init();
00BC EFDF rcall _adc_init
00BE .dbline 143
00BE ;
00BE ; MCUCR = 0x0F;
00BE 8FE0 ldi R24,15
00C0 85BF out 0x35,R24
00C2 .dbline 144
00C2 ; GICR = 0xC0;
00C2 80EC ldi R24,192
00C4 8BBF out 0x3b,R24
00C6 .dbline 145
00C6 ; TIMSK = 0x44; //timer interrupt sources
00C6 84E4 ldi R24,68
00C8 89BF out 0x39,R24
00CA .dbline 146
00CA ; SEI(); //re-enable interrupts
00CA 7894 sei
00CC .dbline -2
00CC L11:
00CC .dbline 0 ; func end
00CC 0895 ret
00CE .dbend
00CE .dbfunc e main _main fV
.even
00CE _main::
00CE .dbline -1
00CE .dbline 152
00CE ; //all peripherals are now initialized
00CE ; }
00CE ;
00CE ; //
00CE ; void main(void)
00CE ; {
00CE .dbline 153
00CE ; init_devices();
00CE F1DF rcall _init_devices
00D0 05C0 rjmp L14
00D2 L13:
00D2 .dbline 156
00D2 ; //insert your functional code here...
00D2 ; while(1)
00D2 ; {
00D2 .dbline 157
00D2 ; if(MotorBlocked==0)
00D2 20900000 lds R2,_MotorBlocked
00D6 2220 tst R2
00D8 09F4 brne L16
00DA .dbline 158
00DA ; motor();
00DA 02D0 rcall _motor
00DC L16:
00DC .dbline 159
00DC L14:
00DC .dbline 155
00DC FACF rjmp L13
00DE X0:
00DE .dbline -2
00DE L12:
00DE .dbline 0 ; func end
00DE 0895 ret
00E0 .dbend
.area data(ram, con, rel)
0005 .dbfile D:\prog251\Motortest\251.c
0005 _IOWord::
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile D:\prog251\Motortest\251.c
0006 .dbsym e IOWord _IOWord c
.area text(rom, con, rel)
00E0 .dbfile D:\prog251\Motortest\251.c
00E0 .dbfunc e motor _motor fV
00E0 ; delay -> <dead>
00E0 ; anticlockwise -> R16
00E0 ; clockwise -> R16
.even
00E0 _motor::
00E0 .dbline -1
00E0 .dbline 169
00E0 ; }
00E0 ;
00E0 ; }
00E0 ;
00E0 ; uchar IOWord = 0x00;
00E0 ;
00E0 ; //===============================================
00E0 ; //=============MOTOR SUBROUTINE=================
00E0 ; //================================================
00E0 ; void motor(void)
00E0 ; {
00E0 .dbline 170
00E0 ; uchar clockwise = 0x00;//test
00E0 0027 clr R16
00E2 .dbline 171
00E2 ; uchar anticlockwise = 0;
00E2 .dbline 185
00E2 ; /* //CALCULATE THE DIRECTION OF ALL MOTOR
00E2 ; if(SpeedMotorCurrent<SpeedMotorSetting)
00E2 ; {
00E2 ; // SpeedMotorCurrent++;
00E2 ; clockwise |=BIT(1); //SPEED invert
00E2 ; }
00E2 ; else if (SpeedMotorCurrent>SpeedMotorSetting)
00E2 ; {
00E2 ; // SpeedMotorCurrent--;
00E2 ; anticlockwise |= BIT(1); //SPEED invert
00E2 ; }
00E2 ; */
00E2 ; int delay;
00E2 ; PORTB ^=BIT(1);
00E2 82E0 ldi R24,2
00E4 28B2 in R2,0x18
00E6 2826 eor R2,R24
00E8 28BA out 0x18,R2
00EA .dbline 189
00EA ; // PORTD ^=BIT(7);
00EA ; //CLOCKWISE
00EA ; //set DAD1(PB7)
00EA ; PORTB |= BIT(7);
00EA C79A sbi 0x18,7
00EC .dbline 191
00EC ; //set DAC1-8 through SPI
00EC ; SPDR = 0x01;//clockwise; //SPIOUTPUT
00EC 81E0 ldi R24,1
00EE 8FB9 out 0xf,R24
00F0 L19:
00F0 .dbline 192
00F0 L20:
00F0 .dbline 192
00F0 ; while ( !(SPSR & BIT(7)) ) ; //wait
00F0 779B sbis 0xe,7
00F2 FECF rjmp L19
00F4 .dbline 193
00F4 ; PORTB |= BIT(0); //SET OUTCS
00F4 C09A sbi 0x18,0
00F6 .dbline 194
00F6 ; _NOP();
00F6 0000 nop
00F8 .dbline 195
00F8 ; PORTB &= ~BIT(0); //CLEAR OUTCS
00F8 C098 cbi 0x18,0
00FA .dbline 197
00FA ; //clear DAC1-8
00FA ; SPDR = 0x00; //SPIOUTPUT
00FA 2224 clr R2
00FC 2FB8 out 0xf,R2
00FE L22:
00FE .dbline 198
00FE L23:
00FE .dbline 198
00FE ; while ( !(SPSR & BIT(7)) ) ; //wait
00FE 779B sbis 0xe,7
0100 FECF rjmp L22
0102 .dbline 199
0102 ; PORTB |= BIT(0); //SET OUTCS
0102 C09A sbi 0x18,0
0104 .dbline 200
0104 ; _NOP();
0104 0000 nop
0106 .dbline 201
0106 ; PORTB &= ~BIT(0); //CLEAR OUTCS
0106 C098 cbi 0x18,0
0108 .dbline 203
0108 ;
0108 ; SPDR = IOWord; //SPIOUTPUT
0108 20900500 lds R2,_IOWord
010C 2FB8 out 0xf,R2
010E L25:
010E .dbline 204
010E L26:
010E .dbline 204
010E ; while ( !(SPSR & BIT(7)) ) ; //wait
010E 779B sbis 0xe,7
0110 FECF rjmp L25
0112 .dbline 205
0112 ; PORTD = BIT(7);
0112 80E8 ldi R24,128
0114 82BB out 0x12,R24
0116 .dbline 206
0116 ; _NOP();
0116 0000 nop
0118 .dbline 207
0118 ; PORTD &= ~BIT(7);
0118 9798 cbi 0x12,7
011A .dbline 208
011A ; IOWord = ~IOWord;
011A 20900500 lds R2,_IOWord
011E 2094 com R2
0120 20920500 sts _IOWord,R2
0124 .dbline 230
0124 ;
0124 ; //ANTICLOCKWISE
0124 ; /*
0124 ; //clear DAD1(PB7)
0124 ; PORTB &= BIT(7);
0124 ; //set DAC1-8 through SPI
0124 ; SPDR = anticlockwise; //SPIOUTPUT
0124 ; while ( SPSR & BIT(7) ) ; //wait
0124 ; PORTB |= BIT(0); //SET OUTCS
0124 ; _NOP();
0124 ; PORTB &= ~BIT(0); //CLEAR OUTCS
0124 ; //clear DAC1-8
0124 ; SPDR = 0; //SPIOUTPUT
0124 ; while ( SPSR & BIT(7) ) ; //wait
0124 ; PORTB |= BIT(0); //SET OUTCS
0124 ; _NOP();
0124 ; PORTB &= ~BIT(0); //CLEAR OUTCS
0124 ; //}
0124 ; */
0124 ;
0124 ; //BLOCK
0124 ; MotorBlocked = 1;
0124 81E0 ldi R24,1
0126 80930000 sts _MotorBlocked,R24
012A .dbline -2
012A L18:
012A .dbline 0 ; func end
012A 0895 ret
012C .dbsym l delay 1 I
012C .dbsym r anticlockwise 16 c
012C .dbsym r clockwise 16 c
012C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -