?? pwm.lst
字號(hào):
__text_start:
__start:
46 EFCF LDI R28,0xFF
47 E1D0 LDI R29,0x10
48 BFCD OUT 0x3D,R28
49 BFDE OUT 0x3E,R29
4A 51CE SUBI R28,0x1E
4B 40D0 SBCI R29,0
4C EA0A LDI R16,0xAA
4D 8308 STD Y+0,R16
4E 2400 CLR R0
4F E0E0 LDI R30,0
50 E0F1 LDI R31,1
51 E011 LDI R17,1
52 30E0 CPI R30,0
53 07F1 CPC R31,R17
54 F011 BEQ 0x0057
55 9201 ST R0,Z+
56 CFFB RJMP 0x0052
57 8300 STD Z+0,R16
58 E8EC LDI R30,0x8C
59 E0F0 LDI R31,0
5A E0A0 LDI R26,0
5B E0B1 LDI R27,1
5C E010 LDI R17,0
5D E000 LDI R16,0
5E BF0B OUT 0x3B,R16
5F 38EC CPI R30,0x8C
60 07F1 CPC R31,R17
61 F021 BEQ 0x0066
62 95C8 LPM
63 9631 ADIW R30,1
64 920D ST R0,X+
65 CFF9 RJMP 0x005F
66 940E 0091 CALL _main
_exit:
68 CFFF RJMP _exit
FILE: D:\實(shí)驗(yàn)程序\PWM輸出\PWM.C
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003)
(0004) void port_init(void)
(0005) {
(0006) PORTA = 0x00;
_port_init:
69 2422 CLR R2
6A BA2B OUT 0x1B,R2
(0007) DDRA = 0x00;
6B BA2A OUT 0x1A,R2
(0008) PORTB = 0x00;
6C BA28 OUT 0x18,R2
(0009) DDRB = 0x00;
6D BA27 OUT 0x17,R2
(0010) PORTC = 0x00; //m103 output only
6E BA25 OUT 0x15,R2
(0011) DDRC = 0x00;
6F BA24 OUT 0x14,R2
(0012) PORTD = 0xff;
70 EF8F LDI R24,0xFF
71 BB82 OUT 0x12,R24
(0013) DDRD = 0xff;
72 BB81 OUT 0x11,R24
73 9508 RET
(0014) }
(0015)
(0016) //TIMER1 initialize - prescale:64
(0017) // WGM: 10) PWM phz correct, TOP= ICRn
(0018) // desired value: 1000Hz
(0019) // actual value: 1000.000Hz (0.0%)
(0020) void timer1_init(void)
(0021) {
(0022) TCCR1B = 0x00; //stop
_timer1_init:
74 2422 CLR R2
75 BC2E OUT 0x2E,R2
(0023) TCNT1H = 0xFF; //setup
76 EF8F LDI R24,0xFF
77 BD8D OUT 0x2D,R24
(0024) TCNT1L = 0x83;
78 E883 LDI R24,0x83
79 BD8C OUT 0x2C,R24
(0025) OCR1AH = 0x00;
7A BC2B OUT 0x2B,R2
(0026) OCR1AL = 0x65; //占空比
7B E685 LDI R24,0x65
7C BD8A OUT 0x2A,R24
(0027) OCR1BH = 0x00;
7D BC29 OUT 0x29,R2
(0028) OCR1BL = 0x10; //占空比
7E E180 LDI R24,0x10
7F BD88 OUT 0x28,R24
(0029) ICR1H = 0x00;
80 BC27 OUT 0x27,R2
(0030) ICR1L = 0x7D;
81 E78D LDI R24,0x7D
82 BD86 OUT 0x26,R24
(0031) TCCR1A = 0xA2;
83 EA82 LDI R24,0xA2
84 BD8F OUT 0x2F,R24
(0032) TCCR1B = 0x13; //start Timer
85 E183 LDI R24,0x13
86 BD8E OUT 0x2E,R24
87 9508 RET
(0033) }
(0034)
(0035) //call this routine to initialize all peripherals
(0036) void init_devices(void)
(0037) {
(0038) //stop errant interrupts until set up
(0039) CLI(); //disable all interrupts
_init_devices:
88 94F8 BCLR 7
(0040) port_init();
89 DFDF RCALL _port_init
(0041) timer1_init();
8A DFE9 RCALL _timer1_init
(0042)
(0043) MCUCR = 0x00;
8B 2422 CLR R2
8C BE25 OUT 0x35,R2
(0044) GICR = 0x00;
8D BE2B OUT 0x3B,R2
(0045) TIMSK = 0x00; //timer interrupt sources
8E BE29 OUT 0x39,R2
(0046) SEI(); //re-enable interrupts
8F 9478 BSET 7
90 9508 RET
(0047) //all peripherals are now initialized
(0048) }
(0049)
(0050) main()
(0051) {
(0052) init_devices();
FILE: <library>
_main:
91 DFF6 RCALL _init_devices
92 9508 RET
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -