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

📄 pwm.lst

📁 16个单片机c语言实验程序
💻 LST
字号:
__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:\实验程序\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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -