📄 pwm.lst
字号:
Interrupt Vectors
00000 940C 0048 JMP __start|__text_start
Program Code (text area)
__start|__text_start:
00048 EFCF LDI R28,0xFF
00049 E1D0 LDI R29,0x10
0004A BFCD OUT 0x3D,R28
0004B BFDE OUT 0x3E,R29
0004C 51CE SUBI R28,0x1E
0004D 40D0 SBCI R29,0
0004E EA0A LDI R16,0xAA
0004F 8308 ST Y,R16
00050 2400 CLR R0
00051 E0E4 LDI R30,4
00052 E0F1 LDI R31,1
00053 E011 LDI R17,1
00054 30E4 CPI R30,4
00055 07F1 CPC R31,R17
00056 F011 BEQ 0x0059
00057 9201 ST Z+,R0
00058 CFFB RJMP 0x0054
00059 8300 ST Z,R16
0005A E8EC LDI R30,0x8C
0005B E0F0 LDI R31,0
0005C E0A0 LDI R26,0
0005D E0B1 LDI R27,1
0005E E010 LDI R17,0
0005F E000 LDI R16,0
00060 BF0B OUT 0x3B,R16
00061 39E0 CPI R30,0x90
00062 07F1 CPC R31,R17
00063 F021 BEQ 0x0068
00064 95C8 LPM
00065 9631 ADIW R30,1
00066 920D ST X+,R0
00067 CFF9 RJMP 0x0061
00068 940E 0085 CALL _main
_exit:
0006A CFFF RJMP _exit
FILE: E:\课件\128最小系统板\AVR程序\pwm\pwm.c
(0001) #include<iom128v.h>
(0002) #define uint unsigned int
(0003) uint pwm1=100,pwm2=100;
(0004) void int_io(void)
(0005) {
(0006) TCCR1A=0XFF;//三通道
_int_io:
0006B EF8F LDI R24,0xFF
0006C BD8F OUT 0x2F,R24
(0007) TCCR1B=0X0A;//8分频 0x09不分频
0006D E08A LDI R24,0xA
0006E BD8E OUT 0x2E,R24
(0008) TCNT1=0X0000;
0006F 2422 CLR R2
00070 2433 CLR R3
00071 BC3D OUT 0x2D,R3
00072 BC2C OUT 0x2C,R2
(0009) TIMSK=0X00;
00073 BE27 OUT 0x37,R2
(0010) ETIMSK=0X00;
00074 9220 007D STS 0x7D,R2
(0011) DDRB=0XFF;
00076 EF8F LDI R24,0xFF
00077 BB87 OUT 0x17,R24
(0012) OCR1A=pwm1;
00078 9020 0100 LDS R2,pwm1
0007A 9030 0101 LDS R3,pwm1+1
0007C BC3B OUT 0x2B,R3
0007D BC2A OUT 0x2A,R2
(0013) OCR1B=pwm2;
0007E 9020 0102 LDS R2,pwm2
00080 9030 0103 LDS R3,pwm2+1
00082 BC39 OUT 0x29,R3
00083 BC28 OUT 0x28,R2
00084 9508 RET
(0014) }
(0015) void main(void)
(0016) {
(0017) DDRA=0XFF;
_main:
00085 EF8F LDI R24,0xFF
00086 BB8A OUT 0x1A,R24
(0018) PORTA=0XF0;
00087 EF80 LDI R24,0xF0
00088 BB8B OUT 0x1B,R24
(0019) DDRD=0X00;
00089 2422 CLR R2
0008A BA21 OUT 0x11,R2
(0020) PORTD=0XFF;
0008B EF8F LDI R24,0xFF
0008C BB82 OUT 0x12,R24
(0021) int_io();
0008D DFDD RCALL _int_io
0008E C054 RJMP 0x00E3
(0022) while(1)
(0023) {
(0024)
(0025) if(PIND==0XFE)
0008F B380 IN R24,0x10
00090 3F8E CPI R24,0xFE
00091 F491 BNE 0x00A4
(0026) {
(0027) pwm1=pwm1-100;
00092 9180 0100 LDS R24,pwm1
00094 9190 0101 LDS R25,pwm1+1
00096 5684 SUBI R24,0x64
00097 4090 SBCI R25,0
00098 9390 0101 STS pwm1+1,R25
0009A 9380 0100 STS pwm1,R24
(0028) OCR1A=pwm1;
0009C BD9B OUT 0x2B,R25
0009D BD8A OUT 0x2A,R24
(0029) OCR1B=pwm2;
0009E 9020 0102 LDS R2,pwm2
000A0 9030 0103 LDS R3,pwm2+1
000A2 BC39 OUT 0x29,R3
000A3 BC28 OUT 0x28,R2
(0030) }
(0031) if(PIND==0XFD)
000A4 B380 IN R24,0x10
000A5 3F8D CPI R24,0xFD
000A6 F491 BNE 0x00B9
(0032) {
(0033) pwm2=pwm2-100;
000A7 9180 0102 LDS R24,pwm2
000A9 9190 0103 LDS R25,pwm2+1
000AB 5684 SUBI R24,0x64
000AC 4090 SBCI R25,0
000AD 9390 0103 STS pwm2+1,R25
000AF 9380 0102 STS pwm2,R24
(0034) OCR1A=pwm1;
000B1 9020 0100 LDS R2,pwm1
000B3 9030 0101 LDS R3,pwm1+1
000B5 BC3B OUT 0x2B,R3
000B6 BC2A OUT 0x2A,R2
(0035) OCR1B=pwm2;
000B7 BD99 OUT 0x29,R25
000B8 BD88 OUT 0x28,R24
(0036) }
(0037) if(PIND==0XFB)
000B9 B380 IN R24,0x10
000BA 3F8B CPI R24,0xFB
000BB F491 BNE 0x00CE
(0038) {
(0039) pwm1=pwm1+100;
000BC 9180 0100 LDS R24,pwm1
000BE 9190 0101 LDS R25,pwm1+1
000C0 598C SUBI R24,0x9C
000C1 4F9F SBCI R25,0xFF
000C2 9390 0101 STS pwm1+1,R25
000C4 9380 0100 STS pwm1,R24
(0040) OCR1A=pwm1;
000C6 BD9B OUT 0x2B,R25
000C7 BD8A OUT 0x2A,R24
(0041) OCR1B=pwm2;
000C8 9020 0102 LDS R2,pwm2
000CA 9030 0103 LDS R3,pwm2+1
000CC BC39 OUT 0x29,R3
000CD BC28 OUT 0x28,R2
(0042) }
(0043) if(PIND==0XF7)
000CE B380 IN R24,0x10
000CF 3F87 CPI R24,0xF7
000D0 F491 BNE 0x00E3
(0044) {
(0045) pwm2=pwm2+100;
000D1 9180 0102 LDS R24,pwm2
000D3 9190 0103 LDS R25,pwm2+1
000D5 598C SUBI R24,0x9C
000D6 4F9F SBCI R25,0xFF
000D7 9390 0103 STS pwm2+1,R25
000D9 9380 0102 STS pwm2,R24
(0046) OCR1A=pwm1;
000DB 9020 0100 LDS R2,pwm1
000DD 9030 0101 LDS R3,pwm1+1
000DF BC3B OUT 0x2B,R3
000E0 BC2A OUT 0x2A,R2
(0047) OCR1B=pwm2;
FILE: <library>
000E1 BD99 OUT 0x29,R25
000E2 BD88 OUT 0x28,R24
000E3 CFAB RJMP 0x008F
000E4 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -