ABOV單片機Bit定時器實現講解及示例代碼-[MC96F6332D]

一、準備工作

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獨立且不能停止,系統默認打開;


因爲小編自己能力水平有限,文中難免有錯誤或表達失誤的信息,還望廣大閱讀者留言批評指正,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章