單片機(jī)寄存器配置問題
這是我初始化程序中的一段代碼節(jié)選:
void init_timer0(void)
{
...
TIMSK=0X01;//使能溢出中斷,大概16ms一次
}
void init_timer2(void)
{
...
TIMSK=0x40;//關(guān)閉比較中斷打開溢出中斷
}
void adc_init(void)
{
...
}
注意到定時(shí)機(jī)器0和1的中斷設(shè)置位在同一個(gè)寄存器TIMSK中的不同位中,上面的代碼如果在初始化完定時(shí)器0后在器初始化點(diǎn)時(shí)期1時(shí)則定時(shí)器0的中斷服務(wù)函數(shù)無(wú)法執(zhí)行,十一代碼修改如下:
void init_timer0(void)
{
...
TIMSK |= 0X01;//使能溢出中斷,大概16ms一次
}
void init_timer2(void)
{
...
TIMSK |= 0x40;//關(guān)閉比較中斷打開溢出中斷
}
void adc_init(void)
{
...
}
程序正常運(yùn)行
總結(jié):以后在寄存器(還樣還要注意寄存器在復(fù)位的初始值)的設(shè)置上找采用 “|” 和 “&” 來置位和清零寄存器的某一位,這樣就不會(huì)在不注意的情況下影響到其他外設(shè)的正常工作了
評(píng)論