📄 m16pwm1.lis
字号:
.module M16PWM1.c
.area text(rom, con, rel)
0000 .dbfile F:\job\M16学习板\PWM\M16PWM1.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2007-4-10 下午 03:03:28
0000 ; // Target : M16
0000 ; // Crystal: 1.0000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 11
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 12
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 13
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 14
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 15
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 16
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 17
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e timer1_init _timer1_init fV
.even
0014 _timer1_init::
0014 .dbline -1
0014 .dbline 25
0014 ; }
0014 ;
0014 ; //TIMER1 initialize - prescale:1
0014 ; // WGM: 1) PWM 8bit Phz correct, TOP=0x00FF
0014 ; // desired value: 2KHz
0014 ; // actual value: 1.961KHz (2.0%)
0014 ; void timer1_init(void)
0014 ; {
0014 .dbline 26
0014 ; TCCR1B = 0x00; //stop
0014 2224 clr R2
0016 2EBC out 0x2e,R2
0018 .dbline 27
0018 ; TCNT1H = 0xFF; //setup
0018 8FEF ldi R24,255
001A 8DBD out 0x2d,R24
001C .dbline 28
001C ; TCNT1L = 0x01;
001C 81E0 ldi R24,1
001E 8CBD out 0x2c,R24
0020 .dbline 29
0020 ; OCR1AH = 0x00;
0020 2BBC out 0x2b,R2
0022 .dbline 30
0022 ; OCR1AL = 0xFF;
0022 8FEF ldi R24,255
0024 8ABD out 0x2a,R24
0026 .dbline 31
0026 ; OCR1BH = 0x00;
0026 29BC out 0x29,R2
0028 .dbline 32
0028 ; OCR1BL = 0xFF;
0028 88BD out 0x28,R24
002A .dbline 35
002A ; // OCR1CH = 0xc3;
002A ; // OCR1CL = 0x50;
002A ; ICR1H = 0x00;
002A 27BC out 0x27,R2
002C .dbline 36
002C ; ICR1L = 0xFF;
002C 86BD out 0x26,R24
002E .dbline 37
002E ; TCCR1A = 0xC1;
002E 81EC ldi R24,193
0030 8FBD out 0x2f,R24
0032 .dbline 38
0032 ; TCCR1B = 0x01; //start Timer
0032 81E0 ldi R24,1
0034 8EBD out 0x2e,R24
0036 .dbline -2
0036 L2:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 .dbfunc e init_devices _init_devices fV
.even
0038 _init_devices::
0038 .dbline -1
0038 .dbline 43
0038 ; }
0038 ;
0038 ; //call this routine to initialize all peripherals
0038 ; void init_devices(void)
0038 ; {
0038 .dbline 45
0038 ; //stop errant interrupts until set up
0038 ; CLI(); //disable all interrupts
0038 F894 cli
003A .dbline 46
003A ; port_init();
003A E2DF xcall _port_init
003C .dbline 47
003C ; timer1_init();
003C EBDF xcall _timer1_init
003E .dbline 49
003E ;
003E ; MCUCR = 0x00;
003E 2224 clr R2
0040 25BE out 0x35,R2
0042 .dbline 50
0042 ; GICR = 0x00;
0042 2BBE out 0x3b,R2
0044 .dbline 51
0044 ; TIMSK = 0x00; //timer interrupt sources
0044 29BE out 0x39,R2
0046 .dbline 52
0046 ; SEI(); //re-enable interrupts
0046 7894 sei
0048 .dbline -2
0048 L3:
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbend
004A .dbfunc e main _main fV
.even
004A _main::
004A .dbline -1
004A .dbline 58
004A ; //all peripherals are now initialized
004A ; }
004A ;
004A ; //
004A ; void main(void)
004A ; {
004A .dbline 59
004A ; init_devices();
004A F6DF xcall _init_devices
004C .dbline 60
004C ; DDRD |= 0b00100000;
004C 8D9A sbi 0x11,5
004E L5:
004E .dbline 61
004E L6:
004E .dbline 61
004E FFCF xjmp L5
0050 X0:
0050 .dbline -2
0050 L4:
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -