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

📄 main.asm

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 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.
//======================================================================

//======================================================================
//	工程名称:	ex20_asm_SRAM
//	功能描述:	《实验箱实验指导书》基础应用实验
//              片内2K SRAM读写
//				将数组中的数据写到0x0100~0x010a单元,并作检查
//				如果成功写入4个LED点亮,如果失败点亮所有的LED
//  IDE环境:   SUNPLUS u'nSPTM  IDE 2.0.0(or later)
//	涉及的库:	CMacro1016.lib
//	组成文件:	main.asm
//	硬件连接:	IOA口低8位连接1*8LED
//	维护记录:	2005-09-12	v1.0
//
//======================================================================

//======================================================================
//	文件名称:	main.asm
//	功能描述:	将数组中的数据写到0x0100~0x010a单元,并作检查
//				如果成功写入4个LED点亮,如果失败点亮所有的LED
//	维护记录:	2005-09-12	v1.0
//======================================================================

.DEFINE	P_IOA_Data			0x7000
.DEFINE P_IOA_Dir			0x7002
.DEFINE P_IOA_Attrib		0x7003

.DEFINE P_Watchdog_Clear	0x7012

.CODE
ARRAY: .DW 0x5a5a,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007,0x0008,0x0009
//=======================================================================
//	汇编格式:	_main
//	C格式:		int main(void);
//	实现功能:	将数组中的数据写到0x0100~0x010a单元,并作检查
//				如果成功写入4个LED点亮,如果失败点亮所有的LED
//	入口参数:	无
//	出口参数:	无
//	破坏寄存器:r1,r2
//=======================================================================

.PUBLIC	_main
_main:
	r1 = 0xffff						//初始化IOA端口为同相输出口
	[P_IOA_Dir] = r1
	r1 = 0xffff
	[P_IOA_Attrib] = r1
	r1 = 0x0000						//初始化IOA口输出为低电平
	[P_IOA_Data] = r1
	
	call Write_SRAM					//调用数据写入子程序
	call Read_SRAM					//调用数据读出子程序
?Loop:
	r1 = 0x0001
	[P_Watchdog_Clear] = r1         //清看门狗
	jmp ?Loop
//=========================================================================
//	汇编格式:	Write_SRAM
//	C格式:		无
//	实现功能:	数据写入子程序
//	入口参数:	无
//	出口参数:	无
//	破坏寄存器:r1,r2,bp
//==========================================================================
.PUBLIC Write_SRAM
Write_SRAM:
	bp = ARRAY						//待写入的数据当前存放首地址
	r1 = 0x0100						//要写入数据的地址SRAM当中的地址	
?Write:	
	r2 = [bp]                       //读出当前地址数据
	[r1] = r2                       //写数据
	bp += 1                         //改变地址
	r1 += 1                         //数据加1
	cmp r1,0x010a					//是否写完?
	jne ?Write          
	retf
//===========================================================================
//	汇编格式:	Read_SRAM
//	C格式:		无
//	实现功能:	数据读出子程序
//	入口参数:	无
//	出口参数:	无
//	破坏寄存器:r1,r2,r3,r4,bp
//===========================================================================
.PUBLIC Read_SRAM
Read_SRAM:
	bp = ARRAY
	r1 = 0x0100
?Read:
	r2 = [bp]                       //读数据
	r3 = [r1]                       //取r1寄存器数据
	cmp r2,r3                       //判断读出数据是否正确
	jne ?Dis                        //不正确转向?Dis
	r4 = 0x000f						//正常结束到这时的,表示读出数据都没有问题
	[P_IOA_Data] = r4				//IOA0~3输出高电平	
	bp += 1
	r1 += 1
	cmp r1,0x010a                   //判断是否读完
	jne ?Read                       //没有读完继续执行读操作
	jmp ?Read_SRAM_Exit
?Dis:
	r1 = 0x00ff						//读出数据有误,IOA0~IOA7输出高电平
	[P_IOA_Data] = r1
?Read_SRAM_Exit:	
	retf

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -