找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5943|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AVR單片機定時器1 CTC模式A實驗程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:26188 發(fā)表于 2015-6-23 15:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*AVR定時器1CTC模式A實驗      天津第四項目部宿舍  */

#include <iom16v.h>
#define uchar unsigned char
#define uint unsigned int
#define set_bit(a,b)  a|=(1<<b)
#define clr_bit(a,b)  a&=(1<<b)
#define get_bit(a,b)  a&(1<<b)
uint i;
#pragma interrupt_handler time1ctc_a_isr:7
void time1ctc_a_isr()//定時計數(shù)器1CTC中斷A通道
{

PORTC^=0x20;//輸出方波T=8*2=16毫秒
     

}
#pragma interrupt_handler time1ctc_b_isr:8
void time1ctc_b_isr()//定時計數(shù)器1CTC中斷B通道
{

PORTC^=0x04;//輸出方波T=8*2=16毫秒

}
void int_time1ctc_a_b()//定時器1設(shè)置初始化
{
   SREG=0x80;//開啟全局中斷
   
   
    TCNT1=0;//這里我采用RC震蕩8M時鐘,1024分頻,一個數(shù)是7.8125微秒

  TCCR1A=0x40;//工作在CTC模式,開啟A通道,關(guān)閉B通道,在外部引腳OC1A/OC1B體現(xiàn)為取反事件,
  TCCR1B=0x0D;//CTC模式,內(nèi)部8M1024分頻,
  OCR1A=6000;//CTC精度A通道
  /*在這里一定要注意A通道和B通道不能同時開啟,否則有兩種情況,第一OCR1A>OCR1B時出現(xiàn)很不正常的現(xiàn)象,兩個中斷好像都發(fā)生了*/
  /*怎么可能呢,當TCNT1=OCR1A時就會吧TCNT1清零,也就是說OCR1B永遠不會觸發(fā)中斷,但是他的引腳確實是動了,而且與A通道的正好相反,*/
  /*是什么原因?我分析過,但是無果,所以要注意AB通道同時開啟的后果是不可知的,還有一種情況就是OCR1A<OCR1B,這種情況就和我分析的*/
  /*一樣了,OCR1A中的中斷永遠不會執(zhí)行,只會執(zhí)行OCR1B的中斷,因為他要比前者小,還有幾次輸出為高電平,所以我認為在同時開啟AB通道時是不穩(wěn)定的,*/
  /*第一種原因真是令人費解。。。。!20110418  */
   TIMSK=0x10;//開啟定時器比較匹配輸出A通道中斷
  
}
void main()
{
DDRD=0xff;
DDRC=0xff;
PORTC=0;
int_time1ctc_a_b();
while(1);


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表