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

📄 init_device.lis

📁 小车自动寻迹代码,可以进行电子设计,设计电动小车
💻 LIS
字号:
                        .module init_device.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.1B4135EF7FF9405\桌面\小车寻迹\init_device.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ; //ICC-AVR application builder : 2006-9-7 0:27:10
 0000           ; // Target : M32
 0000           ; // Crystal: 7.3728Mhz
 0000           ; #include "config.h"
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 8
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 9
 0004           ;  DDRA  = 0x00;
 0004 2ABA              out 0x1a,R2
 0006                   .dbline 10
 0006           ;  PORTB = 0x00;
 0006 28BA              out 0x18,R2
 0008                   .dbline 11
 0008           ;  DDRB  = 0xFF;
 0008 8FEF              ldi R24,255
 000A 87BB              out 0x17,R24
 000C                   .dbline 12
 000C           ;  PORTC = 0x00;
 000C 25BA              out 0x15,R2
 000E                   .dbline 13
 000E           ;  DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 14
 0010           ;  PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012                   .dbline 15
 0012           ;  DDRD  = 0x80;
 0012 80E8              ldi R24,128
 0014 81BB              out 0x11,R24
 0016                   .dbline -2
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0018           _timer0_init::
 0018                   .dbline -1
 0018                   .dbline 23
 0018           ; }
 0018           ; 
 0018           ; //============timer1 PWM输出==================//
 0018           ; //TIMER0 initialize - prescale:1024
 0018           ; // desired value: 25mSec
 0018           ; // actual value: 25.000mSec (0.0%)
 0018           ; void timer0_init(void)
 0018           ; {
 0018                   .dbline 24
 0018           ;  TCCR0 = 0x00;  //stop
 0018 2224              clr R2
 001A 23BE              out 0x33,R2
 001C                   .dbline 25
 001C           ;  TCNT0= 0x01;  //set count
 001C 81E0              ldi R24,1
 001E 82BF              out 0x32,R24
 0020                   .dbline 26
 0020           ;  OCR0 = 0x66;  //set compare
 0020 86E6              ldi R24,102
 0022 8CBF              out 0x3c,R24
 0024                   .dbline 27
 0024           ;  TCCR0 = (1<<WGM00)|(1<<WGM01)|(1<<COM01)|0x04;//0x04 0100B 代表256预分频
 0024 8CE6              ldi R24,108
 0026 83BF              out 0x33,R24
 0028                   .dbline -2
 0028           L2:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbend
 002A                   .dbfunc e timer1_init _timer1_init fV
                        .even
 002A           _timer1_init::
 002A                   .dbline -1
 002A                   .dbline 34
 002A           ; }
 002A           ; 
 002A           ; //TIMER1 initialize - prescale:8
 002A           ; // desired value: 50mSec
 002A           ; // actual value:  50mSec (0.0%)
 002A           ; void timer1_init(void) 
 002A           ; {
 002A                   .dbline 35
 002A           ;  TCCR1B = 0x00; //stop
 002A 2224              clr R2
 002C 2EBC              out 0x2e,R2
 002E                   .dbline 36
 002E           ;  TCNT1H = 0x4C; //setup
 002E 8CE4              ldi R24,76
 0030 8DBD              out 0x2d,R24
 0032                   .dbline 37
 0032           ;  TCNT1L = 0x01;
 0032 81E0              ldi R24,1
 0034 8CBD              out 0x2c,R24
 0036                   .dbline 38
 0036           ;  OCR1AH = 0xB3;
 0036 83EB              ldi R24,179
 0038 8BBD              out 0x2b,R24
 003A                   .dbline 39
 003A           ;  OCR1AL = 0xFF;
 003A 8FEF              ldi R24,255
 003C 8ABD              out 0x2a,R24
 003E                   .dbline 40
 003E           ;  OCR1BH = 0xB3;
 003E 83EB              ldi R24,179
 0040 89BD              out 0x29,R24
 0042                   .dbline 41
 0042           ;  OCR1BL = 0xFF;
 0042 8FEF              ldi R24,255
 0044 88BD              out 0x28,R24
 0046                   .dbline 42
 0046           ;  ICR1H  = 0xB3;
 0046 83EB              ldi R24,179
 0048 87BD              out 0x27,R24
 004A                   .dbline 43
 004A           ;  ICR1L  = 0xFF;
 004A 8FEF              ldi R24,255
 004C 86BD              out 0x26,R24
 004E                   .dbline 44
 004E           ;  TCCR1A = 0x00;
 004E 2FBC              out 0x2f,R2
 0050                   .dbline 45
 0050           ;  TCCR1B = 0x02; //start Timer
 0050 82E0              ldi R24,2
 0052 8EBD              out 0x2e,R24
 0054                   .dbline -2
 0054           L3:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbend
 0056                   .dbfunc e timer2_init _timer2_init fV
                        .even
 0056           _timer2_init::
 0056                   .dbline -1
 0056                   .dbline 50
 0056           ; }
 0056           ; /**************************timer2 PWM输出***********************/
 0056           ; // PWM频率 = 系统时钟频率/(分频系数*2*计数器上限值)) 
 0056           ; void timer2_init(void)
 0056           ; {
 0056                   .dbline 51
 0056           ;  TCCR2 = 0x00;  //stop
 0056 2224              clr R2
 0058 25BC              out 0x25,R2
 005A                   .dbline 52
 005A           ;  TCNT2= 0x01;  //set count
 005A 81E0              ldi R24,1
 005C 84BD              out 0x24,R24
 005E                   .dbline 53
 005E           ;  OCR2 = 0x66;  //set compare
 005E 86E6              ldi R24,102
 0060 83BD              out 0x23,R24
 0062                   .dbline 54
 0062           ;  TCCR2 = (1<<WGM20)|(1<<WGM21)|(1<<COM21)|0x06; //  start timer 快速pwm模式,匹配清零,溢出置位 256分频
 0062 8EE6              ldi R24,110
 0064 85BD              out 0x25,R24
 0066                   .dbline -2
 0066           L4:
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbend
 0068                   .dbfunc e init_devices _init_devices fV
                        .even
 0068           _init_devices::
 0068                   .dbline -1
 0068                   .dbline 61
 0068           ; //高比低为:(OCR2-0X55)/(0XFF-OCR2)    OX55++++++(0X77)__________OXFF
 0068           ; //即OCR2越大,输出越大
 0068           ; }
 0068           ; 
 0068           ; //call this routine to initialize all peripherals
 0068           ; void init_devices(void)
 0068           ; {
 0068                   .dbline 63
 0068           ;  //stop errant interrupts until set up
 0068           ;  CLI(); //disable all interrupts
 0068 F894              cli
 006A                   .dbline 64
 006A           ;  port_init();
 006A CADF              xcall _port_init
 006C                   .dbline 65
 006C           ;  timer2_init();
 006C F4DF              xcall _timer2_init
 006E                   .dbline 67
 006E           ; // timer1_init();
 006E           ;  timer0_init();
 006E D4DF              xcall _timer0_init
 0070                   .dbline 68
 0070           ;  MCUCR |= (1<<ISC01);    // INT0,INT1 下降沿产生中断请求
 0070 85B7              in R24,0x35
 0072 8260              ori R24,2
 0074 85BF              out 0x35,R24
 0076                   .dbline 70
 0076           ;  //MCUCSR |= (1<<ISC2);             //INT2上升沿产生中断请求
 0076           ;  GICR |= (1<<INT0)|(1<<INT1);
 0076 8BB7              in R24,0x3b
 0078 806C              ori R24,192
 007A 8BBF              out 0x3b,R24
 007C                   .dbline 71
 007C           ;  TIMSK = (1<<TOIE0)|(1<<TOIE2)|(1<<OCIE0)|(0<<OCIE2); //timer interrupt sources
 007C 83E4              ldi R24,67
 007E 89BF              out 0x39,R24
 0080                   .dbline 72
 0080           ;  SEI(); //re-enable interrupts
 0080 7894              sei
 0082                   .dbline -2
 0082           L5:
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -