⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.lst

📁 atmega128串行操作lcd12864
💻 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 + -