專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

PIC16F877A和AVR的單片機(jī)的PWM輸出程序

作者:huqin   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時間:2014年03月26日   【字體:

 //在PICC編譯器主,調(diào)試通過,PIC16F877A的PWM信號輸出

#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x1832);

void delay()
{
 uint k;
 for(k=0;k<5000;k++);
}

void main()
{
 uchar k;
 T2CON=0X04;  //開定時器2
 CCPR1L=0X0F; //PWM匹配初值
 CCP1CON=0X3C;    //設(shè)置CCP1 模塊為PWM 工作方式,且其工作循環(huán)
 PR2=0XFF;       //設(shè)置PWM 的工作周期
 TRISC=0XFB;      //設(shè)置CCP1 引腳為輸出方式
 while(1)
 {
  k++;
  CCPR1L=k;
  delay();
  if(k>253)k=1;
 }
}

 

////////////////////////////////////////////////////////////////////////////////////////////

下面的是AVR單片機(jī)ATMEGA16的PWM信號輸出程序GCC編譯通過

#include <avr/io.h>
#define uchar unsigned char
#define uint unsigned int

void delay(uint ms)
{
        uint i,j;
 for(i=0;i<ms;i++)
    {
    for(j=0;j<1000;j++);
       }
}

void main()
{
    uint i;
    DDRD|=0Xf0;
 PORTD=0x0f;
 TCCR1A=0X63;
 TCCR1B=0X13;
 
 OCR1A=124;
 OCR1B=31;
 
 while(1)
 {
 
  i++;
  OCR1B=i;
  delay(20);
  if(i>123)i=1;

  }

}

關(guān)閉窗口

相關(guān)文章