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

📄 system.asm

📁 由SPCE061A控制SPLC501液晶的贪吃蛇游戏,很有意思
💻 ASM
字号:
.include resource.inc				//包含文件
.include hardware.inc				//包含文件
.define  P_INT_Ctrl_New 0x702d		//定义关键字
.public  _K_code					//全局变量,用于存储键值
.public  _flag						//标志
.oram
.var     _K_code					//全局变量,用于存储键值
.var     _dd						//用于延时
.var     _flag						//标志
.code
//*-----------------------------------------------------------------------*/
//函数名称:_System_ServiceLoop
//功能描述:扫描键盘函数
//语法格式:.public _System_ServiceLoop
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/	
.public _System_ServiceLoop
_System_ServiceLoop:.proc                  
	push r5 to [sp]					//保护寄存器
 	r1 = [P_IOA_Attrib]				//设置IOA口低8位为下拉电阻输入口
 	r1 &= 0xff00
 	[P_IOA_Attrib] = r1
 	r1 = [P_IOA_Dir]
 	r1 &= 0xff00
 	[P_IOA_Dir] = r1
 	r1=[P_IOA_Data]
 	r1 &= 0xff00
 	[P_IOA_Data] = r1
 	nop
 	nop
 	nop
	r1=[P_IOA_Data]				   //读键值
	r1 &= 0x00ff
	cmp r1,0x0000
	je exit
	call _delay					   //去抖
	r1=[P_IOA_Data]
	r1 &= 0x00ff
	[_K_code]=r1				   //保存键值
exit:
	pop r5 from [sp]	
	R1=0x0001                    	 
	[P_Watchdog_Clear]=R1          //清看门狗	
    retf
    .endp
//*-----------------------------------------------------------------------*/
//函数名称:_Clear_WatchDog
//功能描述:清看门狗函数
//语法格式:.public _Clear_WatchDog
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/	    
.public _Clear_WatchDog
_Clear_WatchDog:.proc
		R1=0x0001                      	
		[P_Watchdog_Clear]=R1      		
		retf
		.endp
//*-----------------------------------------------------------------------*/
//函数名称:_delay
//功能描述:延时函数
//语法格式:.public _delay
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/		
.public _delay
_delay:.proc
	r1=0x00ff
tt:	r1-=1
	r2=0x0001
	[P_Watchdog_Clear]=r2
	cmp r1,0x0000
	je ff
	jmp tt	 
ff: nop
	retf
	.endp
//*-----------------------------------------------------------------------*/
//函数名称:_Reset_Int
//功能描述:重新设置中断函数
//语法格式:.public _Reset_Int
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/	
.public _Reset_Int
_Reset_Int:
	r1 = [P_INT_Ctrl_New]
	r1|=0x0014
	[P_INT_Ctrl]=r1
	int irq,fiq				//开中断
	retf
//*-----------------------------------------------------------------------*/
//函数名称:_Set_Int
//功能描述:设置中断函数
//语法格式:.public _Set_Int
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/			
.public _Set_Int
_Set_Int:
	int off
	r1=0x0080
	[_dd]=r1
	r1 = [P_INT_Ctrl_New]
	r1|=0x0014
	[P_INT_Ctrl]=r1
	int irq,fiq
	retf
//*-----------------------------------------------------------------------*/
//函数名称:_Set_TimerA
//功能描述:开定时器函数
//语法格式:.public _Set_TimerA
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/	
.public _Set_TimerB
_Set_TimerB:.proc
	r1 = [P_INT_Ctrl_New]
	r1 = 0x0204
	[P_TimerB_Ctrl] = r1
	r1 = 0x0000
	[P_TimerB_Data] = r1
	retf
	.endp
//*-----------------------------------------------------------------------*/
//函数名称:_IRQ4
//功能描述:中断服务延时函数
//语法格式:.public _IRQ4
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/		
.text
.public _IRQ4
_IRQ4:
	push r1,r5 to [sp]
	r1=0x0010
	test r1,[P_INT_Ctrl]
	jnz L_Irq4_1k
	r1=0x0020
	test r1,[P_INT_Ctrl]
	jnz L_Irq4_2k;
L_Irq4_4k:
	r1=0x0040
	jmp L_Exit_Int
L_Irq4_2k:
	r1=0x0020
	jmp L_Exit_Int
L_Irq4_1k:
	r1 =[_dd]
	r1-=1
	[_dd]=r1
	cmp r1,0x0000
	je change
	r1=0x0010
	jmp L_Exit_Int
change:
	r1=1
	[_flag]=r1
	r1=0x0080	
	[_dd]=r1
	int off
	r1=0x0010
L_Exit_Int:
	[P_INT_Clear]=r1
	pop r1,r5 from [sp]
	reti
//*-----------------------------------------------------------------------*/
//函数名称:_IRQ5
//功能描述:中断服务清看门狗函数
//语法格式:.public _IRQ5
//入口参数;无
//出口参数:无
//注意事项:仅为用户模型
//*-----------------------------------------------------------------------*/	
.public _IRQ5
_IRQ5:
	push r1,r5 to [sp]
	r1=0x0001
	[P_Watchdog_Clear]=r1
	r1=0x0004
	[P_INT_Clear]=r1
	pop r1,r5 from [sp]
	reti

⌨️ 快捷键说明

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