?? main.asm
字號:
//======================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//=======================================================================
//=======================================================================
// 工程名稱: ex08_asm_SYSTEM_CLOCK
// 功能描述: 《實驗儀實驗指導書》基礎應用實驗
// 系統時鐘
// 延時采用指令延時的方法,通過改變系統時鐘,改變延時的長短,用
// IOA口的低8位接的LED的閃爍顯示出來
// IDE環境: SUNPLUS u'nSPTM IDE 2.0.0(or later)
// 涉及的庫: CMacro1016.lib
// 組成文件: main.asm
// 硬件連接: 將LED_SEG接口的IOA0~7分別與a~h相連;
// LED_DIG接口的IOB6與DIG5相連
// 維護記錄: 2005-09-12 v1.0
//
//=========================================================================
//=========================================================================
// 文件名稱: main.asm
// 功能描述: 延時采用指令延時的方法,通過改變系統時鐘,改變延時的長短,用
// IOA口的低8位接的LED的閃爍顯示出來
// 維護記錄: 2005-09-12 v1.0
//=========================================================================
.DEFINE C_Fosc 0x0000
.DEFINE C_Fosc_Div_2 0x0001
.DEFINE C_Fosc_Div_4 0x0002
.DEFINE C_Fosc_Div_8 0x0003
.DEFINE C_Fosc_Div_16 0x0004
.DEFINE C_Fosc_Div_32 0x0005
.DEFINE C_Fosc_Div_64 0x0006
.DEFINE C_Sleep 0x0007
.DEFINE C_PLL_24 0x0000
.DEFINE C_PLL_20 0x0020
.DEFINE C_PLL_32 0x0040
.DEFINE C_PLL_40 0x0060
.DEFINE C_PLL_49 0x0080
.DEFINE P_IOA_Data 0x7000
.DEFINE P_IOA_Dir 0x7002
.DEFINE P_IOA_Attrib 0x7003
.DEFINE P_IOB_Data 0x7005
.DEFINE P_IOB_Dir 0x7007
.DEFINE P_IOB_Attrib 0x7008
.DEFINE P_Watchdog_Clear 0x7012
.DEFINE P_SystemClock 0x7013
.RAM
.VAR Sum
.CODE
//===========================================================================
// 匯編格式: _main
// C格式: int main(void);
// 實現功能: 延時采用指令延時的方法,通過改變系統時鐘,改變延時的長短,用
// IOA口的低8位接的LED的閃爍顯示出來
// 入口參數: 無
// 出口參數: 無
// 破壞寄存器:r1,r2
//===========================================================================
.PUBLIC _main
_main:
r1 = 0x0040 //初始化IOB6為高電平輸出
[P_IOB_Dir] = r1
[P_IOB_Attrib] = r1
[P_IOB_Data] = r1
r1 = 0x00ff //初始化IOA低八位口為輸出口
[P_IOA_Dir] = r1
r1 = 0x00ff
[P_IOA_Attrib] = r1
r1 = 0x0000 //初始化IOA低八位口輸出為低電平
[P_IOA_Data] = r1
// r1 = C_Fosc | C_PLL_49
// r1 = C_Fosc | C_PLL_49 //選擇系統時鐘49MHz,1分頻
// r1 = C_Fosc_Div_2 | C_PLL_49 //選擇系統時鐘49MHz,2分頻
// r1 = C_Fosc_Div_4 | C_PLL_49 //選擇系統時鐘49MHz,4分頻
// r1 = C_Fosc_Div_8 | C_PLL_49 //選擇系統時鐘49MHz,8分頻
r1 = C_Fosc_Div_16 | C_PLL_49 //選擇系統時鐘49MHz,16分頻
// r1 = C_Fosc_Div_32 | C_PLL_49 //選擇系統時鐘49MHz,32分頻
// r1 = C_Fosc_Div_64 | C_PLL_49 //選擇系統時鐘49MHz,64分頻
// r1 = C_Sleep | C_PLL_49 //選擇系統時鐘49MHz,睡眠
// r1 = C_Fosc | C_PLL_20 //選擇系統時鐘20.48MHz,1分頻
// r1 = C_Fosc | C_PLL_24 //選擇系統時鐘24.576MHz,1分頻
// r1 = C_Fosc | C_PLL_32 //選擇系統時鐘32.768MHz,1分頻
// r1 = C_Fosc | C_PLL_40 //選擇系統時鐘40.96MHz,1分頻
// r1 = C_Fosc | C_PLL_49 //選擇系統時鐘49.152MHz,1分頻
[P_SystemClock] = r1
?Loop:
r1 = 0x00ff
[P_IOA_Data] = r1 //IOA口低八位輸出,當其中某些位輸出高電平時,與其連接的LED點亮
call F_Delay //延時
r1 = 0x0000
[P_IOA_Data] = r1 //與IOA低八位連接的8個LED熄滅
call F_Delay //延時
jmp ?Loop
//==============================================================================
// 匯編格式: F_Delay
// C格式: 無
// 實現功能: 延時
// 入口參數: 無
// 出口參數: 無
// 破壞寄存器:r1,r3,r4
//==============================================================================
.PUBLIC F_Delay
F_Delay:
r4 = 0x0004
?LoopOut:
r3 = 0xffff
?LoopIn:
r1 = 0x0001
[P_Watchdog_Clear] = r1 //清看門狗
r3 -= 1
jnz ?LoopIn
r4 -= 1
jnz ?LoopOut
retf
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -