?? init_device.lis
字號:
.module init_device.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\小車尋跡\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 + -