⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 电压控制程序,符合各种设备需要,核心程序,IBm专属
💻 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 + -