⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lis

📁 LCD里程表驱动电路程序。ICCAVR开发。使用ATMEGA8
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -