久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

AVR定時(shí)器0完全資料

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

Atmega16

      

       

 


 

于定時(shí)器0相關(guān)的寄存器有 SREG 全局中斷  bit7   I

TIMSK中斷屏蔽寄存器    bit  0:1   TOIE0  OCIE0

 


TOIE0
中斷溢出允許標(biāo)志位   

OCIE0輸出比較允許標(biāo)志位

TCCR0  timer0控制寄存器 bit0:7

 


FOC0
強(qiáng)制輸出比較;僅在非PWM模式有效

WGM00:WGM01 模式控制位;

COM01:COM00 各PWM模式中 具體設(shè)置位:

 





CS00 CS01 CS02 
時(shí)鐘選擇位   于定時(shí)器2公用

 


TCNT0  
定時(shí)器0寄存器八位放置定時(shí)器初值

OCR0    定時(shí)器0比較匹配寄存器與TCNT0值比較

TIFR   中斷標(biāo)志寄存器 

 


TOV0  
定時(shí)器0溢出中斷標(biāo)志位

OCF0   比較匹配中斷標(biāo)志位

下邊我們編程先從簡(jiǎn)單的定時(shí)器計(jì)數(shù)開始

           程序部分

#include<iom16v.h>
#include"dis.h"     //595驅(qū)動(dòng)顯示頭文件
unsigned  char  i,temp;
void   inittimer0(void)//定時(shí)器0初始化函數(shù)
{
TCCR0|=(1<<CS00)|(1<<CS02);//普通計(jì)數(shù)模式,1024分頻
TCNT0=0X00;                //賦值
SREG=0X80;               //全局中斷打開
TIMSK|=(1<<TOIE0);        //定時(shí)器0溢出中斷使能
}
void   main(void)
{
DDRC|=0X07;       //595控制端口初始化
inittimer0();     //定時(shí)器初始化
dis(0);       //顯示函數(shù)
while(1){ }
}
#pragma interrupt_handler timer0_ovf:10
void  timer0_ovf(void)///定時(shí)器中斷
{ 
  i++;
  if(i>=4)
  {
    i=0;
    temp++;dis(temp);//數(shù)值自加,顯示;
    }
}               仿真部分

 



T0輸入產(chǎn)生中斷程序及仿真

下邊源碼中更改TCCR0的配置可決定那種跳變沿觸發(fā)

下降沿觸發(fā) TCCT0|=(1<<CS02)|(1<<CS01);

上升沿觸發(fā) TCCT0|=(1<<CS02)|(1<<CS01)|(1<<CS00);

注意這里的上升沿是T0口處于低電平狀態(tài),發(fā)生了高電平的跳變,配置不需要改變,上升沿下降沿端口配置是一樣的

//通過T0引腳觸發(fā)中斷
#include<iom16v.h>
void   initTimer0(void)
{
     TCCR0|=(1<<CS02)|(1<<CS01); //下降沿觸發(fā),(1<<CS00)上升沿觸發(fā)
     TCNT0=0XFE;      //賦值通過按鍵將寄存器值填滿產(chǎn)生中斷
     TIMSK|=(1<<TOV0);  //定時(shí)器0溢出中斷
     SREG|=0X80;      //全局中斷
     PORTD|=(1<<PD0);      //初始化T0引腳
     DDRC=0XFF;      //中斷產(chǎn)生動(dòng)作端口初始化
}
void  main(void)
{
initTimer0();
while(1);
}
#pragma interrupt_handler timer0_ovf:10
void timer0_ovf(void)
{
  TCNT0=0XFE;    //寄存器重裝
  PORTC=~PORTC;    //動(dòng)作
} 

 




下邊介紹定時(shí)器0 的PWM功能,通過上邊對(duì)定時(shí)器的了解下邊也會(huì)很簡(jiǎn)單的掌握。選擇相位修正模式,WGM00=1;WGM01=0;無分頻,CS02=0;CS01=0;CS00=1;

比較匹配選擇在升序計(jì)數(shù)發(fā)生比較匹配將清零OC0,降序計(jì)數(shù)發(fā)生時(shí)比較匹配將OC0置位.相應(yīng)控制位COM00=0,COM01=1;TCCR0|=(1<<WGM00)|(1<<COM01)|(1<<CS00);

比較匹配寄存器賦值,比較匹配中斷向量為:20

#include<iom16v.h>           
void  initpwmt0(void)          //編寫人張小強(qiáng)日期13,09,17
{
TCCR0|=(1<<WGM00)|(1<<COM01)|(1<<CS00);//相位修正PWM
TIMSK|=(1<<OCIE0);            //輸出匹配使能
SREG|=0X80;              //全局中斷使能
TCNT0=0X00;              //定時(shí)器寄存器
OCR0=0X80;                //比較匹配寄存器
DDRB|=(1<<DDB3);            //比較匹配輸出引腳初始化
}
void delaymsPWM(unsigned  int  z)
{
unsigned  int  x,y;
for(x=1000;x>0;x--)
  for(y=z;y>0;y--);
}
void  main()
{
initpwmt0();              
while(1)
{   
  OCR0++;delaymsPWM(10);         //定時(shí)自加
}
}                     //比較匹配中斷
#pragma interrupt_handler timer0_comp:20
void timer0_comp(void)
{}





至此定時(shí)器0大體應(yīng)用功能講解完畢,

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 蜜桃五月天 | 99精品在线观看 | 日韩国产在线观看 | 欧美又大粗又爽又黄大片视频 | 日韩精品一区二区三区中文在线 | 久久久久久免费看 | 91精品国产自产在线老师啪 | 精品在线观看入口 | 狠狠骚| 久久69精品久久久久久久电影好 | 国产精品xxxx | 中日韩欧美一级片 | 日韩精品区 | 中文字幕第5页 | 国产成人精品一区二区三区四区 | 中文字幕日韩欧美一区二区三区 | 麻豆一区二区三区精品视频 | 亚洲日本一区二区 | 日韩欧美网 | 国产成人99久久亚洲综合精品 | 成人网在线观看 | 99精品电影 | 午夜爱爱网 | 成人毛片在线观看 | 毛片网站在线观看视频 | 国产日韩欧美一区 | 久久99视频免费观看 | 精品国产一区二区三区日日嗨 | 鲁大师一区影视 | 久久99国产精品 | 一道本不卡视频 | 日本久久久一区二区三区 | 先锋影音资源网站 | 羞羞视频网站免费看 | 视频1区2区 | www.四虎.com| 国产精品久久免费观看 | 欧美v在线 | 日韩人体视频 | av永久免费| 国产一区二区 |