?? main._c
字號(hào):
/*
實(shí)驗(yàn)三:
驅(qū)動(dòng)無(wú)源蜂鳴器實(shí)驗(yàn)。
1、定時(shí)器實(shí)驗(yàn),用定時(shí)器的CTC模式驅(qū)動(dòng)無(wú)源蜂鳴器,是否輸出由按鍵0控制。
2、內(nèi)部1 M晶振,程序采用單任務(wù)方式,軟件延時(shí),驅(qū)動(dòng)無(wú)源蜂鳴器由定時(shí)器硬件完成。
3、進(jìn)行此實(shí)驗(yàn)請(qǐng)插上BUZ短路塊。
4、此實(shí)驗(yàn)讓大家了解定時(shí)器里面的CTC功能,從而可以利用它來(lái)產(chǎn)生頻率信號(hào)。
AVR mega128學(xué)習(xí)板
www.iccavr.com 阿發(fā)
23:03 2007-10-09
*/
#include "iom128v.h"
/*延時(shí)函數(shù)*/
void delay_ms(unsigned char i) {
unsigned char a, b;
for (a = 1; a < i; a++) {
for (b = 1; b; b++) {
;
}
}
}
/*IO口初始化函數(shù)*/
void io_init(void) {
DDRA = 0x00; /*方向輸入*/
PORTA = 0xFF; /*打開(kāi)上拉*/
DDRB = 0x00; /*方向輸入*/
PORTB = 0xFF; /*高電平*/
DDRC = 0x00; /*不用的IO口建議設(shè)置為輸入帶上拉*/
PORTC = 0xFF;
DDRD = 0x00;
PORTD = 0xFF;
DDRE = 0x08; /*設(shè)置蜂鳴器對(duì)應(yīng)腳為輸出*/
PORTE = 0xF7; /*蜂鳴器腳輸出低電平*/
DDRF = 0x00;
PORTF = 0xFF;
DDRG = 0x00;
PORTG = 0xFF;
}
void main(void) {
io_init();
while (1) {
if (!(PINE & (1 << PE0))) { /*判斷是否有按鍵按下*/
TCCR3A = 0x40; /*設(shè)置定時(shí)器工作在CTC模式*/
TCCR3B = 0x09;
OCR3A = 1000;
delay_ms(200); /*延時(shí)一段時(shí)間,保證蜂鳴器的最短工作時(shí)間*/
while (!(PINE & (1 << PE0))); /*等待按鍵松開(kāi)*/
TCCR3A = 0x00; /*關(guān)閉定時(shí)器*/
PORTE &= ~(1 << PE3); /*人為將蜂鳴器控制腳置低*/
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -