一、準備工作
1、KEIL C51編譯環境
2、CodeGen8 代碼生成器
3、MC96F6332D 開發板
4、USB-OCD II仿真器
二、生成BIT定時器的代碼
1、在CodeGen8 代碼生成器的外設窗口中選擇內部RC時鐘作爲時鐘源,設置時鐘源的頻率爲8MHz,配置Basic Interval Timer
;具體配置如下圖①所示;
在窗口中可以看到CodeGen8 已經根據選擇自動生成了代碼,自動生成的代碼段如上圖②所示。
2、點擊CodeGen8 中的 C 圖標,自動打開KEIL C51軟件;下一步進行代碼的修改、編譯和程序下載;
1)、在代碼中刪除LCD驅動代碼,本實驗暫時用不到LCD部分;
2)、增加代碼程序,實現printf函數輸出字符串【可參考我的另外一篇博客:ABOV單片機UART串口通訊中Printf函數實現講解及示例代碼-[MC96F6332D]】
3)、在BIT的中斷函數中增加代碼;因爲8MHz的時鐘下,Bit的週期最大爲131ms,中斷8次後大概是1秒的時間;中斷代碼程序編寫如下:
/* Private define ------------------------------------------------------------*/
unsigned char Bit_ENABLE = 0; //中斷8次後,此中斷標誌置爲1;
unsigned char Bit_Number = 0; //中斷次數計數變量
//======================================================
// interrupt routines
//======================================================
void INT_BIT() interrupt 22
{
// BIT interrupt code
Bit_Number++;
if(8 == Bit_Number)
Bit_ENABLE = 1; //中斷標誌位 // 8次中斷後時間大約在 1s 左右,即131.072000mS *8 = 1048.576mS
}
3、進行工程的配置和編譯,可以看到編譯的結果無錯誤、無警告。
4、代碼解析:通過MC96F6332D的user‘s Manual手冊中Basic Interval Timer章節,可以看出生成的代碼含義
5、開啓BIT的中斷
6、根據Bit的框圖,結合剛剛的寄存器配置可以簡單看出定時器的工作流程
7、點擊編譯器的下載按鈕,對代碼進行單片機的下載。
三、實驗現象(具體內容可以參考工程中的Readme.txt文件)
1、主函數中每隔1秒輸出調試信息,提示MCU在不斷的運行;
2、在配置內部時鐘最大爲1MHz的情況下,即可以滿足1秒中斷一次的需求;
3、具體的代碼可以訪問鏈接:https://share.weiyun.com/5HuMiUm;進行免費下載。
注意:BIT獨立且不能停止,系統默認打開;
因爲小編自己能力水平有限,文中難免有錯誤或表達失誤的信息,還望廣大閱讀者留言批評指正,謝謝。