瑞薩單片機學習筆記(2)中斷的使用
WDTE = 0xac;
本文引用地址:http://2s4d.com/article/201611/318631.htm這個賦值操作就是喂狗,至今我也不知道option_byte的復位值是多少,從官網(wǎng)下載的數(shù)據(jù)手冊也沒有說明。其實可以通過一些方法來驗證,即不設(shè)置option_byte,不喂狗,看程序是否會不停復位。廢話說完,言歸正傳,我們用定時器來實現(xiàn)定時喂狗。
這里用到的是78K0/FY-2系列單片機,使用TM51作為定時器,需要配置的寄存器有:
TCL51——選擇定時器時鐘頻率,是在外部硬件時鐘頻率的基礎(chǔ)上進行分頻。
TMC51——此寄存只有最高位TCEN51,開啟/關(guān)閉定時器。
CR51——計數(shù)比較寄存器,當計數(shù)寄存器TM51的值等于CR51時,會置位對應(yīng)中斷標識位。此處的值不同于STC定時器的裝置值。
TMMK51——TM51中斷屏蔽寄存器位
TMPR51——TM51中斷優(yōu)先級寄存器位
本人喜歡將某個部件的初始化代碼編寫為一個函數(shù)
void init_TM51(void)
{
TCL51 = 0x05; //基于20MHz分頻為312.5KHz ,定時間隔為3.2us
TMC51 = 0x80; //打開定時器
CR51 = 0xfa; //0.8ms會產(chǎn)生中斷
TMMK51 = 0; //使能中斷
TMPR51 =0; //設(shè)置為高優(yōu)先級中斷
EI(); //還記得前面添加的#pragma EI 嗎?總中斷使能,剛開始摸索的時候就是忘記添加此行代碼
}
中斷函數(shù):
#pragma interrupt INTTM51 inter_TM51 rb1
__interrupt void inter_TM51(void)
{
//添加自己的代碼
}
評論