📄 pwm.lis
字号:
.module pwm.c
.area text(rom, con, rel)
0000 .dbfile F:\项目\直流电机\pwm.c
0000 .dbfunc e timers_init _timers_init fV
0000 ; a -> R20
.even
0000 _timers_init::
0000 0E940000 xcall push_gset1
0004 402F mov R20,R16
0006 2497 sbiw R28,4
0008 .dbline -1
0008 .dbline 5
0008 ; #include"iom16v.h"
0008 ;
0008 ;
0008 ; void timers_init(char a)
0008 ; {
0008 .dbline 6
0008 ; sbit(DDRD,5);
0008 25E0 ldi R18,5
000A 30E0 ldi R19,0
000C 01B3 in R16,0x11
000E 1127 clr R17
0010 0E940000 xcall _sbit
0014 .dbline 7
0014 ; OCR1A=1024-10.24*a;
0014 00E0 ldi R16,<L4
0016 10E0 ldi R17,>L4
0018 0E940000 xcall lpm32
001C 3A93 st -y,R19
001E 2A93 st -y,R18
0020 1A93 st -y,R17
0022 0A93 st -y,R16
0024 00E0 ldi R16,<L5
0026 10E0 ldi R17,>L5
0028 0E940000 xcall lpm32
002C 3A93 st -y,R19
002E 2A93 st -y,R18
0030 1A93 st -y,R17
0032 0A93 st -y,R16
0034 042F mov R16,R20
0036 1127 clr R17
0038 0E940000 xcall int2fp
003C 3A93 st -y,R19
003E 2A93 st -y,R18
0040 1A93 st -y,R17
0042 0A93 st -y,R16
0044 0E940000 xcall empy32fs
0048 0E940000 xcall sub32f
004C FE01 movw R30,R28
004E 0083 std z+0,R16
0050 1183 std z+1,R17
0052 2283 std z+2,R18
0054 3383 std z+3,R19
0056 FE01 movw R30,R28
0058 2080 ldd R2,z+0
005A 3180 ldd R3,z+1
005C 4280 ldd R4,z+2
005E 5380 ldd R5,z+3
0060 5A92 st -y,R5
0062 4A92 st -y,R4
0064 3A92 st -y,R3
0066 2A92 st -y,R2
0068 00E0 ldi R16,<L6
006A 10E0 ldi R17,>L6
006C 0E940000 xcall lpm32
0070 3A93 st -y,R19
0072 2A93 st -y,R18
0074 1A93 st -y,R17
0076 0A93 st -y,R16
0078 0E940000 xcall cmp32f
007C CCF0 brlt L2
007E FE01 movw R30,R28
0080 2080 ldd R2,z+0
0082 3180 ldd R3,z+1
0084 4280 ldd R4,z+2
0086 5380 ldd R5,z+3
0088 5A92 st -y,R5
008A 4A92 st -y,R4
008C 3A92 st -y,R3
008E 2A92 st -y,R2
0090 00E0 ldi R16,<L6
0092 10E0 ldi R17,>L6
0094 0E940000 xcall lpm32
0098 3A93 st -y,R19
009A 2A93 st -y,R18
009C 1A93 st -y,R17
009E 0A93 st -y,R16
00A0 0E940000 xcall sub32f
00A4 0E940000 xcall fp2int
00A8 A801 movw R20,R16
00AA 4050 subi R20,0 ; offset = 32768
00AC 5048 sbci R21,128
00AE 08C0 xjmp L3
00B0 L2:
00B0 FE01 movw R30,R28
00B2 0081 ldd R16,z+0
00B4 1181 ldd R17,z+1
00B6 2281 ldd R18,z+2
00B8 3381 ldd R19,z+3
00BA 0E940000 xcall fp2int
00BE A801 movw R20,R16
00C0 L3:
00C0 5BBD out 0x2b,R21
00C2 4ABD out 0x2a,R20
00C4 .dbline 8
00C4 ; OCR1B=0x00;
00C4 2224 clr R2
00C6 3324 clr R3
00C8 39BC out 0x29,R3
00CA 28BC out 0x28,R2
00CC .dbline 9
00CC ; TCNT1=0x00;
00CC 3DBC out 0x2d,R3
00CE 2CBC out 0x2c,R2
00D0 .dbline 10
00D0 ; TCCR1A=0xc3;
00D0 83EC ldi R24,195
00D2 8FBD out 0x2f,R24
00D4 .dbline 11
00D4 ; TCCR1B=0x09;
00D4 89E0 ldi R24,9
00D6 8EBD out 0x2e,R24
00D8 .dbline -2
00D8 L1:
00D8 2496 adiw R28,4
00DA 0E940000 xcall pop_gset1
00DE .dbline 0 ; func end
00DE 0895 ret
00E0 .dbsym r a 20 c
00E0 .dbend
00E0 .dbfunc e main _main fI
.even
00E0 _main::
00E0 .dbline -1
00E0 .dbline 14
00E0 ; }
00E0 ; int main(void)
00E0 ; {
00E0 .dbline 15
00E0 ; timers_init(25);
00E0 09E1 ldi R16,25
00E2 8EDF xcall _timers_init
00E4 .dbline -2
00E4 L7:
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbend
.area lit(rom, con, rel)
0000 L6:
0000 00000047 .word 0x0,0x4700
0004 L5:
0004 0AD72341 .word 0xd70a,0x4123
0008 L4:
0008 00008044 .word 0x0,0x4480
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -