久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機寄存器配置問題

單片機寄存器配置問題

作者: 時間:2016-11-24 來源:網絡 收藏
在寫單片機是對寄存器的設置要注意,有很多外設可能用這一個寄存器,在外設初始化的時候或對寄存器修改是可能會影響到其他外設的正常工作,今天就遇到這樣一個蛋疼的問題,
這是我初始化程序中的一段代碼節選:
void init_timer0(void)
{
...
TIMSK=0X01;//使能溢出中斷,大概16ms一次
}
void init_timer2(void)
{
...
TIMSK=0x40;//關閉比較中斷打開溢出中斷
}
void adc_init(void)
{
...
}
注意到定時機器0和1的中斷設置位在同一個寄存器TIMSK中的不同位中,上面的代碼如果在初始化完定時器0后在器初始化點時期1時則定時器0的中斷服務函數無法執行,十一代碼修改如下:
void init_timer0(void)
{
...
TIMSK |= 0X01;//使能溢出中斷,大概16ms一次
}
void init_timer2(void)
{
...
TIMSK |= 0x40;//關閉比較中斷打開溢出中斷
}
void adc_init(void)
{
...
}
程序正常運行
總結:以后在寄存器(還樣還要注意寄存器在復位的初始值)的設置上找采用 “|” 和 “&” 來置位和清零寄存器的某一位,這樣就不會在不注意的情況下影響到其他外設的正常工作了


評論


技術專區

關閉