<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          ATmega128(PWM—time 0)

          作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
          //atmega128的定時(shí)器實(shí)現(xiàn)快速PWM輸出示例程序,定時(shí)器0溢出中斷的方式

          //輸出PWM波形驅(qū)動(dòng)發(fā)光二極管,亮度由暗到滅,呈閃爍狀態(tài)
          //樣值采取正弦波公式,示例如下
          //正弦波采樣值計(jì)算公式
          // f(x)=128+127*sin(2*3.1415*x/127) x=[0....127]
          //PWM輸出也可通過(guò)控制LED發(fā)光來(lái)直觀的看到效果,亮度持續(xù)的變化
          //可以通過(guò)選跳線(xiàn)帽選擇是通過(guò)LED直接查看還是通過(guò)濾波器查看實(shí)際波形
          //編譯環(huán)境 AVR Studio 4.17/AVR GCC
          //系統(tǒng)時(shí)鐘7.3728MHZ,設(shè)置熔絲位為外部高頻石英晶體振蕩,啟動(dòng)時(shí)間4.1ms
          //***********************************************************************
          //包含文件
          //***********************************************************************

          本文引用地址:http://www.ex-cimer.com/article/201611/317437.htm

          #include
          #include
          #define F_CPU7372800// 單片機(jī)主頻為7.3728MHz,用于延時(shí)子程序
          #include
          #include
          #include
          #include //中斷信號(hào)頭文件

          //***********************************************************************
          //定義變量區(qū)
          //***********************************************************************
          #define f_count 254 //0CR0寄存器初始值
          #define timer_clk 0x07
          #define delay_us(x) _delay_us(x) //AVR GCC延時(shí)函數(shù) x(us)
          #define delay_ms(x) _delay_ms(x) //AVR GCC延時(shí)函數(shù) x(ms)

          #define uchar unsigned char
          #define uint unsigned int
          #define ulong unsigned long


          uchar auc_SinParam[128] = {
          128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213,
          218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254,
          254,254,253,252,251,250,248,246,244,241,238,235,232,228,224,220,
          215,211,206,201,196,191,185,179,174,168,162,156,150,144,137,131,
          125,119,112,106,100,94,88,82,77,71,65,60,55,50,45,41,
          36,32,28,24,21,18,15,12,10,8,6,5,4,3,2,2,
          2,2,3,4,5,7,9,11,14,16,19,23,26,30,34,38,
          43,48,52,57,63,68,74,79,85,91,97,103,109,116,122,128}; // 128點(diǎn)正弦波樣本值

          uchar x_SW = 8,X_LUT = 0;


          //*************************************************************************
          //初始化子程序
          //*************************************************************************
          void system_init() //IO口初始化
          {

          PORTB=0xff; //PB設(shè)置為輸出
          DDRB=0xff; //上拉電阻無(wú)效
          }

          void timer0_init() //定時(shí)器初始化
          {
          TCCR0=0x68|timer_clk; //快讀PWM模式,OC0輸出,分頻
          OCR0=128; //OCR0比較匹配寄存器值
          TIFR=0x01; //清中斷標(biāo)志位
          TIMSK=0x01; //使能定時(shí)器0溢出中斷
          }


          //*************************************************************************
          //定時(shí)器0中斷服務(wù)子程序
          //*************************************************************************

          ISR(TIMER0_OVF_vect) //中斷服務(wù)程序
          {
          X_LUT += x_SW; // 新樣點(diǎn)指針
          if (X_LUT > 127) X_LUT -= 128; // 樣點(diǎn)指針調(diào)整
          OCR0 =auc_SinParam[X_LUT]; // 取樣點(diǎn)指針到比較匹配寄存器
          }

          //*************************************************************************
          //主程序
          //*************************************************************************

          int main(void)
          {
          system_init(); //系統(tǒng)初始化.PB3輸出PWM波形
          timer0_init(); //定時(shí)器0初始化,完成PWM相關(guān)配置
          SREG|=0x80; //開(kāi)啟全局中斷
          while(1)
          {
          }
          }



          關(guān)鍵詞: ATmega128PWMtim

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();