国产中文在线观看_国产成人精品午夜二三区桃子视频_一级免费毛片久久_芊芊视频国产专区_免费国产97人人超碰CAO蜜芽PR_成人日韩欧美电影_熟少妇性饥渴在线观看_国产极品熟女沙发内射av_香蕉视频app黄色下载_美女爽到喷水视频免费

新聞資訊
模擬比較器實(shí)驗(yàn) AVR ATmega8515
2010-11-06


所謂模擬比較器就是模擬電平之間的比較,單片機(jī)的內(nèi)部的比較器一般都很簡(jiǎn)單,沒(méi)有分立元件組成的比較器精準(zhǔn)度高,但是小東東也有大用途,可以用他來(lái)檢測(cè)單片機(jī)的電壓跌落,也可以比較從傳感器采集過(guò)的模擬信號(hào)……正好ATmega8515內(nèi)部有模擬比較器,所以懶貓決定來(lái)試一下這個(gè)功能。Analog Comparator

關(guān)于ATmega8515內(nèi)部比較器由PB2(AIN0)與PB3(AIN1)口輸入,模擬比較器對(duì)正極 AIN0 的值與負(fù)極 AIN1 的值進(jìn)行比較。當(dāng) AIN0 上的電壓比負(fù)極 AIN1上的電壓要高時(shí),模擬比較器的輸出 ACO 即置位。比較器的輸出可用來(lái)觸發(fā)定時(shí)器/計(jì)數(shù)器 1 的輸入捕捉功能。此外,比較器還可觸發(fā)自己專(zhuān)有的、獨(dú)立的中斷。我們也可以自己選擇比較器是以上升沿、下降沿還是交替變化的邊沿來(lái)觸發(fā)中斷。關(guān)于這些可以參看寄存器ACSR.

下面給出程序:

[code="CPP"]
/************************************************

//文件名稱:Analog_Comparator.c

//功 能:學(xué)習(xí)使用單片機(jī)內(nèi)部的模擬比較器

//作 者:懶貓愛(ài)飛

//建立日期:2010.11.02

//備 注:MCU-ATmega8515 開(kāi)發(fā)環(huán)境-winavr100110

************************************************/

#include <avr/io.h>

#include <inttypes.h> //關(guān)于數(shù)據(jù)類(lèi)型的一些定義

#include <stdint.h> //同樣是一些數(shù)據(jù)類(lèi)型的定義

#include <avr/interrupt.h>

#include <util/delay.h>



#define LED_ON(N) PORTC &= ~_BV(N) /*第N個(gè)LED燈亮*/

#define LED_OFF(N) PORTC |= _BV(N) /*第N個(gè)LED燈滅*/



/************************************************

//函數(shù)名稱:void port_init(void)

//功 能:端口初始化

//入口參數(shù):NULL

//出口參數(shù):NULL

//備 注:NULL

************************************************/

void port_init(void)

{

PORTA = 0x00;

DDRD = 0x00;



PORTB = 0x00; //關(guān)閉弱上拉,

DDRB = 0x00; //PB2,PB3(AIN0/AIN1)設(shè)置為輸入

//PB3 AIN1 (Analog Comparator Negative Input)

//PB2 AIN0 (Analog Comparator Positive Input)

PORTC = 0xff;

DDRC = 0xff; //LED燈l輸出端口



}

/************************************************

//函數(shù)名稱:int main(void)

//功 能:主程序

//入口參數(shù):NULL

//出口參數(shù):0

//備 注:NULL

************************************************/

int main(void)

{

port_init();



SFIOR |= _BV(PUD); //禁止內(nèi)部上拉

ACSR |= _BV(ACIE); //允許模擬比較器是斷



sei();



while(1);



return 0;

}

/************************************************

//函數(shù)名稱:ISR(ANA_COMP_vect)

//功 能:模擬比較中斷處理程序

//入口參數(shù):中斷向量入口地址 ANA_COMP_vect

//出口參數(shù):NULL

//備 注:NULL

************************************************/

ISR(ANA_COMP_vect)

{

if(ACSR & _BV(ACO)) //檢測(cè)AC0位,判斷AN0電壓是否大于AN1電壓

{

LED_ON(0);

LED_OFF(1);

}

else

{

LED_ON(1);

LED_OFF(0);

}

}

[/code]

其測(cè)試電路圖如下:

仿真說(shuō)明:當(dāng)AIN1低于AIN0時(shí)L1(綠燈亮),當(dāng)AIN1高于AIN0時(shí)L2亮(黃燈亮)。


關(guān)注有人微信公眾號(hào)
了解更多信息