📄 pwm.lis
字号:
.module pwm.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .blkb 1
.area idata
000A 79 .byte 'y
.area data(ram, con, rel)
000B .blkb 1
.area idata
000B 00 .byte 0
.area data(ram, con, rel)
000C .dbfile F:\练习\pwm脉宽调制器\pwm.c
000C .dbsym e Table _Table A[12:12]c
000C _Data1::
000C .blkb 2
.area idata
000C 0A00 .byte 10,0
.area data(ram, con, rel)
000E .dbfile F:\练习\pwm脉宽调制器\pwm.c
000E .blkb 2
.area idata
000E 0500 .byte 5,0
.area data(ram, con, rel)
0010 .dbfile F:\练习\pwm脉宽调制器\pwm.c
0010 .dbsym e Data1 _Data1 A[4:4]c
0010 _Data2::
0010 .blkb 2
.area idata
0010 0309 .byte 3,9
.area data(ram, con, rel)
0012 .dbfile F:\练习\pwm脉宽调制器\pwm.c
0012 .blkb 2
.area idata
0012 0100 .byte 1,0
.area data(ram, con, rel)
0014 .dbfile F:\练习\pwm脉宽调制器\pwm.c
0014 .dbsym e Data2 _Data2 A[4:4]c
.area text(rom, con, rel)
0000 .dbfile F:\练习\pwm脉宽调制器\pwm.c
0000 .dbfunc e delay_us _delay_us fV
0000 ; t -> R16,R17
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 16
0000 ; //***************FileName:PWM.C***************//
0000 ; //***************ICCAVR V6.30编译*****************//
0000 ;
0000 ; #include <iom16v.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; //数码管字型表,对应0,1,2,3,4,5,6,7,8,9,E//
0000 ; uchar Table[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79};
0000 ; uchar Data1[4]={10,0,5,0}; //定义初始方波占空比:50%
0000 ; uchar Data2[4]={3,9,1,0}; //设定PWM频率:8M/2046=3910Hz
0000 ; uchar Key1_Flag,Key2_Flag;
0000 ;
0000 ; /////////////////////////////延时///////////////////////////////////////////
0000 ; void delay_us( int t) //us
0000 ; {
0000 L2:
0000 .dbline 18
0000 ; do
0000 ; t--;
0000 0150 subi R16,1
0002 1040 sbci R17,0
0004 L3:
0004 .dbline 19
0004 ; while(t>1);
0004 81E0 ldi R24,1
0006 90E0 ldi R25,0
0008 8017 cp R24,R16
000A 9107 cpc R25,R17
000C CCF3 brlt L2
000E .dbline -2
000E .dbline 20
000E ; }
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r t 16 I
0010 .dbend
0010 .dbfunc e delay_ms _delay_ms fV
0010 ; t -> R20,R21
.even
0010 _delay_ms::
0010 0E940000 xcall push_gset1
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 22
0016 ; void delay_ms(unsigned int t) //ms
0016 ; {
0016 05C0 xjmp L7
0018 L6:
0018 .dbline 24
0018 .dbline 25
0018 06E7 ldi R16,1142
001A 14E0 ldi R17,4
001C F1DF xcall _delay_us
001E .dbline 26
001E 4150 subi R20,1
0020 5040 sbci R21,0
0022 .dbline 27
0022 L7:
0022 .dbline 23
0022 ; while(t!=0)
0022 4030 cpi R20,0
0024 4507 cpc R20,R21
0026 C1F7 brne L6
0028 X0:
0028 .dbline -2
0028 .dbline 28
0028 ; {
0028 ; delay_us(1142);
0028 ; t--;
0028 ; }
0028 ; }
0028 L5:
0028 0E940000 xcall pop_gset1
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r t 20 i
002E .dbend
002E .dbfunc e Display _Display fV
002E ; sel -> R20
002E ; i -> R22
002E ; p -> R10,R11
.even
002E _Display::
002E 0E940000 xcall push_gset3
0032 5801 movw R10,R16
0034 .dbline -1
0034 .dbline 36
0034 ; /*void DelayMs(uint i) //Ms级延时,参数i为延时时间
0034 ; {uint j;
0034 ; {for(j=8000;j!=0;j--) for(;i!=0;i--)
0034 ; {;}}
0034 ; }*/
0034 ;
0034 ; void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
0034 ; {uchar i,sel=0x01;
0034 .dbline 36
0034 41E0 ldi R20,1
0036 .dbline 37
0036 ; for(i=0;i<4;i++)
0036 6627 clr R22
0038 12C0 xjmp L13
003A L10:
003A .dbline 38
003A .dbline 38
003A 4BBB out 0x1b,R20
003C .dbline 40
003C E62F mov R30,R22
003E FF27 clr R31
0040 EA0D add R30,R10
0042 FB1D adc R31,R11
0044 E081 ldd R30,z+0
0046 FF27 clr R31
0048 80E0 ldi R24,<_Table
004A 90E0 ldi R25,>_Table
004C E80F add R30,R24
004E F91F adc R31,R25
0050 2080 ldd R2,z+0
0052 25BA out 0x15,R2
0054 .dbline 41
0054 08EE ldi R16,1000
0056 13E0 ldi R17,3
0058 D3DF xcall _delay_us
005A .dbline 42
005A 440F lsl R20
005C .dbline 43
005C L11:
005C .dbline 37
005C 6395 inc R22
005E L13:
005E .dbline 37
005E 6430 cpi R22,4
0060 60F3 brlo L10
0062 .dbline -2
0062 .dbline 44
0062 ; {PORTA=sel; //选通最右边的数码管
0062 ; //PORTC=~(0xff-Table[p[i]]); //送字型码
0062 ; PORTC=Table[p[i]]; //送字型码
0062 ; delay_us(1000); //显示延时
0062 ; sel=sel<<1; //移位以显示前一位
0062 ; }
0062 ; }
0062 L9:
0062 0E940000 xcall pop_gset3
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r sel 20 c
0068 .dbsym r i 22 c
0068 .dbsym r p 10 pc
0068 .dbend
0068 .dbfunc e Add_Process _Add_Process fV
0068 ; p -> R16,R17
.even
0068 _Add_Process::
0068 .dbline -1
0068 .dbline 47
0068 ;
0068 ; void Add_Process(uchar *p)
0068 ; {if(p[1]!=1)
0068 .dbline 47
0068 F801 movw R30,R16
006A 8181 ldd R24,z+1
006C 8130 cpi R24,1
006E 99F0 breq L15
0070 .dbline 48
0070 ; {p[2]=p[2]+1;
0070 .dbline 48
0070 C801 movw R24,R16
0072 0296 adiw R24,2
0074 FC01 movw R30,R24
0076 8081 ldd R24,z+0
0078 8F5F subi R24,255 ; addi 1
007A 8083 std z+0,R24
007C .dbline 49
007C ; if(p[2]==10) {p[2]=0;p[1]++;}
007C F801 movw R30,R16
007E 8281 ldd R24,z+2
0080 8A30 cpi R24,10
0082 49F4 brne L17
0084 .dbline 49
0084 .dbline 49
0084 2224 clr R2
0086 F801 movw R30,R16
0088 2282 std z+2,R2
008A .dbline 49
008A C801 movw R24,R16
008C 0196 adiw R24,1
008E FC01 movw R30,R24
0090 8081 ldd R24,z+0
0092 8F5F subi R24,255 ; addi 1
0094 8083 std z+0,R24
0096 .dbline 49
0096 L17:
0096 .dbline 50
0096 L15:
0096 .dbline -2
0096 .dbline 51
0096 ; }
0096 ; }
0096 L14:
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbsym r p 16 pc
0098 .dbend
0098 .dbfunc e Sub_Process _Sub_Process fV
0098 ; temp -> R22
0098 ; p -> R20,R21
.even
0098 _Sub_Process::
0098 0E940000 xcall push_gset2
009C A801 movw R20,R16
009E .dbline -1
009E .dbline 54
009E .dbline 55
009E .dbline 56
009E FA01 movw R30,R20
00A0 2180 ldd R2,z+1
00A2 8AE0 ldi R24,10
00A4 829D mul R24,R2
00A6 602D mov R22,R0
00A8 FA01 movw R30,R20
00AA 2280 ldd R2,z+2
00AC 620D add R22,R2
00AE 79F0 breq L20
00B0 .dbline 57
00B0 .dbline 57
00B0 .dbline 58
00B0 6A95 dec R22
00B2 1AE0 ldi R17,10
00B4 062F mov R16,R22
00B6 0E940000 xcall div8u
00BA FA01 movw R30,R20
00BC 0183 std z+1,R16
00BE .dbline 59
00BE FA01 movw R30,R20
00C0 2180 ldd R2,z+1
00C2 8AE0 ldi R24,10
00C4 829D mul R24,R2
00C6 262E mov R2,R22
00C8 2018 sub R2,R0
00CA FA01 movw R30,R20
00CC 2282 std z+2,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -