?? init_device.s
字號:
.module init_device.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator.1B4135EF7FF9405\桌面\小車尋跡\init_device.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 7
; //ICC-AVR application builder : 2006-9-7 0:27:10
; // Target : M32
; // Crystal: 7.3728Mhz
; #include "config.h"
;
; void port_init(void)
; {
.dbline 8
; PORTA = 0x00;
clr R2
out 0x1b,R2
.dbline 9
; DDRA = 0x00;
out 0x1a,R2
.dbline 10
; PORTB = 0x00;
out 0x18,R2
.dbline 11
; DDRB = 0xFF;
ldi R24,255
out 0x17,R24
.dbline 12
; PORTC = 0x00;
out 0x15,R2
.dbline 13
; DDRC = 0x00;
out 0x14,R2
.dbline 14
; PORTD = 0x00;
out 0x12,R2
.dbline 15
; DDRD = 0x80;
ldi R24,128
out 0x11,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 23
; }
;
; //============timer1 PWM輸出==================//
; //TIMER0 initialize - prescale:1024
; // desired value: 25mSec
; // actual value: 25.000mSec (0.0%)
; void timer0_init(void)
; {
.dbline 24
; TCCR0 = 0x00; //stop
clr R2
out 0x33,R2
.dbline 25
; TCNT0= 0x01; //set count
ldi R24,1
out 0x32,R24
.dbline 26
; OCR0 = 0x66; //set compare
ldi R24,102
out 0x3c,R24
.dbline 27
; TCCR0 = (1<<WGM00)|(1<<WGM01)|(1<<COM01)|0x04;//0x04 0100B 代表256預分頻
ldi R24,108
out 0x33,R24
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 34
; }
;
; //TIMER1 initialize - prescale:8
; // desired value: 50mSec
; // actual value: 50mSec (0.0%)
; void timer1_init(void)
; {
.dbline 35
; TCCR1B = 0x00; //stop
clr R2
out 0x2e,R2
.dbline 36
; TCNT1H = 0x4C; //setup
ldi R24,76
out 0x2d,R24
.dbline 37
; TCNT1L = 0x01;
ldi R24,1
out 0x2c,R24
.dbline 38
; OCR1AH = 0xB3;
ldi R24,179
out 0x2b,R24
.dbline 39
; OCR1AL = 0xFF;
ldi R24,255
out 0x2a,R24
.dbline 40
; OCR1BH = 0xB3;
ldi R24,179
out 0x29,R24
.dbline 41
; OCR1BL = 0xFF;
ldi R24,255
out 0x28,R24
.dbline 42
; ICR1H = 0xB3;
ldi R24,179
out 0x27,R24
.dbline 43
; ICR1L = 0xFF;
ldi R24,255
out 0x26,R24
.dbline 44
; TCCR1A = 0x00;
out 0x2f,R2
.dbline 45
; TCCR1B = 0x02; //start Timer
ldi R24,2
out 0x2e,R24
.dbline -2
L3:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer2_init _timer2_init fV
.even
_timer2_init::
.dbline -1
.dbline 50
; }
; /**************************timer2 PWM輸出***********************/
; // PWM頻率 = 系統時鐘頻率/(分頻系數*2*計數器上限值))
; void timer2_init(void)
; {
.dbline 51
; TCCR2 = 0x00; //stop
clr R2
out 0x25,R2
.dbline 52
; TCNT2= 0x01; //set count
ldi R24,1
out 0x24,R24
.dbline 53
; OCR2 = 0x66; //set compare
ldi R24,102
out 0x23,R24
.dbline 54
; TCCR2 = (1<<WGM20)|(1<<WGM21)|(1<<COM21)|0x06; // start timer 快速pwm模式,匹配清零,溢出置位 256分頻
ldi R24,110
out 0x25,R24
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 61
; //高比低為:(OCR2-0X55)/(0XFF-OCR2) OX55++++++(0X77)__________OXFF
; //即OCR2越大,輸出越大
; }
;
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
.dbline 63
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 64
; port_init();
xcall _port_init
.dbline 65
; timer2_init();
xcall _timer2_init
.dbline 67
; // timer1_init();
; timer0_init();
xcall _timer0_init
.dbline 68
; MCUCR |= (1<<ISC01); // INT0,INT1 下降沿產生中斷請求
in R24,0x35
ori R24,2
out 0x35,R24
.dbline 70
; //MCUCSR |= (1<<ISC2); //INT2上升沿產生中斷請求
; GICR |= (1<<INT0)|(1<<INT1);
in R24,0x3b
ori R24,192
out 0x3b,R24
.dbline 71
; TIMSK = (1<<TOIE0)|(1<<TOIE2)|(1<<OCIE0)|(0<<OCIE2); //timer interrupt sources
ldi R24,67
out 0x39,R24
.dbline 72
; SEI(); //re-enable interrupts
sei
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -