|
/*閑言碎語(yǔ)不要講*/
/*AVR定時(shí)器0的比較匹配功能試驗(yàn), 天津第四項(xiàng)目部宿舍 */
#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)
#pragma interrupt_handler time0ctc_isr:20
void time0ctc_isr()//定時(shí)計(jì)數(shù)器0比較匹配中斷
{
;/*其實(shí)這個(gè)比較匹配就是一個(gè)頻率發(fā)生器,而他的頻率大小由OCR0控制,所以在這中斷離改變OCR0就會(huì)改變下一次的波形頻率,*/
;/*所以這個(gè)就是用頻率變化的場(chǎng)合用的,*/
}
void int_time0ctc()//定時(shí)器0用在比較匹配設(shè)置初始化
{
SREG=0x80;//開啟全局中斷
TCNT0=0;//這里我采用RC震蕩8M時(shí)鐘,1024分頻后周期是128微秒/脈沖,(255-0)*128=3968us=3.968ms的時(shí)鐘信號(hào)出現(xiàn)在OC0引腳
OCR0=255;//這個(gè)OCR0就是說(shuō)TCNT0一直加,加到和OCR0相等時(shí),就發(fā)生所謂的比較匹配,這時(shí)就產(chǎn)生中斷了,只是這里要注意OCR0>TCNT0,否則時(shí)間不準(zhǔn)
TCCR0=0x1D; //工作在CTC比較匹配模式,比較匹配時(shí) 取反(這里看手冊(cè)72頁(yè)里有引腳電平設(shè)置我這里設(shè)置為去取反了) OC0引腳(就是4腳),時(shí)鐘1024分頻,開啟定時(shí)器
TIMSK=0x02;//開啟定時(shí)器輸出比較匹配中斷
}
void main()
{
DDRC=0xff;
PORTC=0x00;
DDRB|=(1<<3);
PORTB|=(1<<3);
int_time0ctc();
while(1);
}
|
|