ATMEGA16的定時/計數器
T/C1定時器A/B比較匹配中斷和溢出中斷實現LED亮度自動調節。
這里沒有什么要注意的,只要理解并會控制T/C1的兩個比較匹配中斷A/B和溢出中斷。
然后就是仿真圖片~
//------------------------------------------------------------------------------
//通過比較匹配中斷和定時器溢出中斷(T1)來控制LED亮度的自動變化
//定時器T1的定時長度設置為32.768ms,定時器T1的比較匹配寄存器設置為10位快速PWM模式
//在定時器T1發生溢出中斷之前,首先比較中斷觸發,點亮LED燈;定時器T1繼續運行直到溢出,
//將LED關閉。主程序不斷改變著比較匹配值(從接近最小值0到接近最大值1023),因此輸出的脈寬
//(既LED的亮度)會自動變化。
//由于定時器T1具有2個比較匹配寄存器(OCR1A、OCR1B),既可實現2個LED燈的自動變化
#include“ioavr.h”
#include“intrinsics.h”
#include“Delay.h”
typedef unsigned char uchar;
typedef unsigned intuint;
#define CPL_BIT(x,y)(x^=(1《#define CLR_BIT(x,y)(x&=~(1《#define SET_BIT(x,y)(x|=(1《#define GET_BIT(x,y)(x&(1《ucharflag_a=1,flag_b=0;
//------------------------------------------------------------------------------
//端口定時函數
voidport_init()
{
DDRB=0XFF;
PORTB=0XFF;
}
//------------------------------------------------------------------------------
//T1的初始化函數
voidtimer1_init()
{
OCR1B=0X00;//stop
TCNT1H=0X00;//定時器初值為0
TCNT1L=0X00;
OCR1AH=0X03;//由于工作在10位快速PWM模式計數上線值TOP為0X3FF(這個我不知道到底需不需要設置,是不是體統自己就設置好了~~~)還有就是它如果溢出呢?大于0X03FF?會怎么樣?
OCR1AL=0XFF;
OCR1BH=0X03;
OCR1BL=0XFF;
TCCR1A=0X03;//設置A/B端口為普通端口操作,10位快速PWM模式,T/C1的時鐘源為來自預分頻器的256分頻
TCCR1B=0X0C;
}
//------------------------------------------------------------------------------
//芯片初始化函數
voiddevice_init()
{
__disable_interrupt();//disable all interrupts
port_init();
timer1_init();
TIMSK=0X1C;//T/C1輸出比較A/B匹配中斷使能以及溢出中斷使能
__enable_interrupt();
}
//------------------------------------------------------------------------------
//main
voidmain()
{
device_init();
while(1)
{
delay_s(1);//延時,有益處~~~!最大延時我還不知道~~~
//--------------------------------------------------------------------------
//flag_a=1的時候OCR1A+=20,如果OCR1A》1000,清零flag_a
if(GET_BIT(flag_a,0)==1)
OCR1A+=20;
if(OCR1A》1000)
CLR_BIT(flag_a,0);
//--------------------------------------------------------------------------
//flag_a=0的情況
if(GET_BIT(flag_a,0)==0)
OCR1A-=20;
if(OCR1A《20)
SET_BIT(flag_a,0);
//--------------------------------------------------------------------------
//flag_b=1的情況
if(GET_BIT(flag_b,0)==1)
OCR1B+=10;
if(OCR1A》1000)
CLR_BIT(flag_b,0);
//--------------------------------------------------------------------------
//flag_b=1的情況
if(GET_BIT(flag_b,0)==0)
OCR1B-=10;
if(OCR1B《10)
SET_BIT(flag_b,0);
}
}
//------------------------------------------------------------------------------
//TIMER1_COMPA
#pragma vector=TIMER1_COMPA_vect
__interrupt voidTImer1_compa()
{
CLR_BIT(PORTB,0);
}
//------------------------------------------------------------------------------
//TIMER1_COMPB
#pragma vector=TIMER1_COMPB_vect
__interrupt voidtimer1_compb()
{
CLR_BIT(PORTB,7);
}
//------------------------------------------------------------------------------
//TIMER1_OVF
#pragma vector=TIMER1_OVF_vect
__interrupt voidtimer1_ovf()
{
SET_BIT(PORTB,0);
SET_BIT(PORTB,7);
}
上一篇:以AVR為控制電路核心的全自動太陽能工程熱水器控制器設計
下一篇:淺談ATmega 16單片機的T/C0控制寄存器和T/C1控制寄存器
推薦閱讀
史海拾趣
由于Circuit Assembly公司的發展故事涉及具體的公司案例和數據,而這些信息往往涉及公司的內部運營、市場策略等敏感內容,且不同公司的發展經歷也各有差異,因此我無法直接為您提供5個具體的電子行業里面Circuit Assembly公司的發展起來的相關故事。但我可以根據您提供的背景和要求,給出一些可能的發展趨勢和挑戰,幫助您理解該行業的整體狀況。
在電子行業中,Circuit Assembly公司的發展通常與幾個關鍵因素密切相關,包括技術創新、市場需求、供應鏈管理以及國際合作等。隨著5G、物聯網、智能制造等技術的快速發展,Circuit Assembly公司面臨著前所未有的機遇和挑戰。
一方面,新技術的出現推動了電子產品的小型化、集成化和智能化,對Circuit Assembly公司的工藝水平和生產能力提出了更高的要求。那些能夠緊跟技術潮流,不斷提升自身技術水平和創新能力的公司,往往能夠在市場中脫穎而出,實現快速發展。
另一方面,隨著全球市場競爭的加劇,Circuit Assembly公司需要更加注重成本控制和供應鏈管理。通過建立穩定可靠的供應鏈體系,優化生產流程和管理,降低生產成本,提高產品質量,這些公司能夠更好地滿足客戶需求,提升市場競爭力。
此外,國際合作也是Circuit Assembly公司發展的重要推動力。通過與國內外同行企業的交流與合作,可以引進先進的技術和管理經驗,共同推動行業發展。同時,通過參與國際市場競爭,也能夠拓寬公司的業務領域,提高公司的國際影響力。
綜上所述,電子行業中的Circuit Assembly公司面臨著多方面的機遇和挑戰。那些能夠抓住機遇、應對挑戰的公司,有望在市場中取得更大的成功。但具體的公司發展故事需要根據不同的公司背景和實際情況來具體分析和描述。建議您查閱相關行業報告、公司年報或新聞報道,以獲取更具體的信息。
品質是Excelsys公司的生命線。公司始終堅持嚴格的品質控制標準,從原材料采購到生產制造的每一個環節,都經過嚴格的質量檢測。這種對品質的執著追求,讓Excelsys的產品在市場上贏得了良好的口碑。同時,公司還建立了完善的售后服務體系,為客戶提供及時、專業的技術支持,進一步提升了品牌的信譽度。
在市場拓展方面,Excelsys公司采取了多元化的戰略。除了深耕國內市場外,公司還積極開拓國際市場,與全球多家知名企業建立了長期穩定的合作關系。這些合作伙伴不僅為Excelsys提供了廣闊的市場空間,還帶來了先進的技術和管理經驗,推動了公司的快速發展。
隨著市場競爭的加劇和客戶需求的不斷提高,Etco Inc公司意識到品質管理對于企業發展的重要性。為此,公司投入大量資源加強品質管理體系建設,引進先進的生產設備和檢測儀器,確保產品質量的穩定性和可靠性。同時,Etco還加強了員工培訓和技能提升,提高了員工的品質意識和操作技能。這些舉措使Etco的產品質量得到了顯著提升,贏得了客戶的廣泛贊譽。
隨著市場競爭的加劇和客戶需求的不斷提高,Etco Inc公司意識到品質管理對于企業發展的重要性。為此,公司投入大量資源加強品質管理體系建設,引進先進的生產設備和檢測儀器,確保產品質量的穩定性和可靠性。同時,Etco還加強了員工培訓和技能提升,提高了員工的品質意識和操作技能。這些舉措使Etco的產品質量得到了顯著提升,贏得了客戶的廣泛贊譽。
隨著市場的不斷變化和客戶需求的日益多樣化,兵字公司意識到,要想在市場中保持領先地位,就必須不斷進行技術創新。于是,公司投入大量研發資源,成功研發出了小型精密互感器。這一創新產品不僅填補了市場空白,還為公司帶來了可觀的收益。同時,兵字公司也憑借這一技術突破,進一步鞏固了在電子元器件領域的領先地位。
IAR5.3(評估版)編譯老是提示如下的錯誤,是怎么一回事啊 Error[Lp021]: the destination for compressed initializer batch "P2 mid-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using packbits compression. Consider using "initialize b ...… 查看全部問答∨ |
|
我用的是2450,問一下LCD橫屏轉豎屏,驅動程序里除了在頭文件處修改分辨率外,還要修改什么地方呢? 我只修改了頭文件處定義的分辨率的情況下,屏幕變窄了(部分屏幕黑色沒圖象),豎直方向靠下的部分沒被顯示出來。 不知道在哪(幾)個文件里的函 ...… 查看全部問答∨ |
下了個WINCE6.0用的GPS軟件,為什么EXE文件運行的時候要讓我顯示打開方式呢? rt 我用的是OMAP3530開發板,內置GPS模塊,WINCE6.0環境已經建立,網上下了個GPS軟件,EXE格式的用U盤考進去板子里打不開,出現類似于WINDOWS下的讓你選擇打開方式的窗口,不是EXE是可執行文件嗎?而且下的是WINCE6.0可用的版本,謝謝各位了!… 查看全部問答∨ |
這兩天,下了個ucos在STM32F103ZE-SK開發板上移植的官方例程(uCOSII-ST-STM32F103ZE-SK),這其中有兩個文件夾,u ...… 查看全部問答∨ |
|
本帖最后由 paulhyde 于 2014-9-15 09:04 編輯 電壓比較器LM393 用正負12V 供電, 其輸出的高電平、和低電平分別為多少呀? 我測試的高為12V, 低為-0.8V, 不知對否? 希望大家能給出自己的測試結果。 &nb ...… 查看全部問答∨ |
操作簡單 2100操作簡單直觀,開箱即可使用。前面板易于理解和操作。其KI-Tool和KI-Link軟件允許用戶通過GPIB(如果安裝了)或USB快速控制儀器,記錄測量,以及顯示數據的時間序列圖。其LabView®和IVI驅動則給高級客戶開放 ...… 查看全部問答∨ |
我用STC12LE5A32S2做了個東西。 用定時器0產生定時時間。 定時器是這樣的: void Time0(void) interrupt 1 { ET0 = 0; //定時器0中斷關 TH0=0xE5;//(65536-n*FOSC/12/1000)/256;//n=10ms 這里采用8M晶振計算的 TL0=0xF5;// ...… 查看全部問答∨ |
成功申請到TI的CC1200樣片,下面讓我來分享下申請過程: 首先點了活動鏈接來到活動介紹界面,申請必須為指定樣片才行,大概瀏覽了活動指定的8個芯片后,選取了CC1200。理由:公司做的是工控產品,以前一直用的有線控制 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 有獎直播 | 德州儀器基于 Arm 的 AM62 處理器簡介
- 最后一周:免費獲取Pasternack《RF產品選型指南》2018 印刷版!
- 有獎直播|如何借助Mentor Xpedition AMS對汽車CAN總線進行仿真優化分析?
- 如何用3個關鍵步驟,來確保下一代設計安全性,深入解讀嵌入式設備DeepCover加密控制器,看視頻答題贏好禮!
- 好書共讀:《硬件設計指南:從器件認知到手機基帶設計》
- 【預約有禮】全球測量圈大咖直播:驗證5G核心網,確保最佳性能
- 中秋“國宴“ :拍攝板卡上的國產元器件,抽開心小禮品
- Keysight教你如何提高測試精度,答對問題還有禮品相送,速速參與!
- TI 培訓推薦有禮活動
- 【分享成長,10月有獎】EEWORLD優秀主題/回復第15期活動開始啦!!!