test18.asm

来自「试验仪自检程序」· 汇编 代码 · 共 110 行

ASM
110
字号
//======================================================
//  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.
//========================================================

//============================================================
//  工程名称:test18.spj
//  功能描述:  低电压检测.
//        A口低8位接键盘列线,键盘行线接VDDIO;B口高8位接LED
//        按K1键    低电压为2.4v  
//        按K2键    低电压2.8v
//        按K3键    低电压3.2v
//        按K4键    低电压为3.6v
//  注意:做此实验时,需外接可调稳压源,通过改变稳压源的电压,看实验现象
//  文件来源:《实验仪实验指导书》 "实验二十二 低电压检测实验"  第80页

//  IDE环境:   SUNPLUS u'nSPTM  IDE 1.8.4
//
//  涉及的库:
//  组成文件:           	      
//          test18.asm
//============================================================

//============================================================
// 文件名称:test18.asm  
// 实现功能:低电压检测      
//============================================================

		.include hardware.inc

		.public _main
		.code
//============================================================= 
// 函数名称:  _main
// 功能描述:  低电压检测        
// 语法格式:  _ main
// 注意事项:  仅为用户模型
//=================================================================
_main:
		r1=0x0000 ;                			//初始化A口为带下拉电阻的输入口
		[P_IOA_Dir]=r1;
		[P_IOA_Attrib]=r1;
		[P_IOA_Data]=r1;                      				  
		r1=0xffff ;                    		//设B8-B15口为同相低电平输出口
		[P_IOB_Dir]=r1;
		[P_IOB_Attrib]=r1;
		r1=0x0040;
		[P_IOB_Data]=r1;
keydown:                      		    	//扫描键盘    
		r1 = [P_IOA_Data];  
		r1 &= 0x00ff;              			//屏蔽高8位
		cmp  r1,0x0000;
		jz keydown;
		r2 = r1;                  			//保存键值
keyup:
		r1 = [P_IOA_Data];        			//判断按下松开与否
		cmp r1,0x0000;
		jnz keyup;
    
key1:                         		    	//是否为1键
		r1 = 0x0080;
		cmp r2,r1;
		jne key2;
		r3 = 0x0000; 
		[P_LVD_Ctrl] = r3;      			//LVD电压设置为2.4v                    
		jmp delay
key2:                        			  	//是否为2键
		r1 = 0x0040;
		cmp r2,r1;
		jne key3;
		r3 = 0x0001;
		[P_LVD_Ctrl] = r3 ;      			// LVD电压设置为2.8v
		jmp delay
key3:                        			  	//是否为3键
		r1 = 0x0020;
		cmp r2,r1;
		jne key4;
		r3 = 0x0002;
		[P_LVD_Ctrl] = r3;       			//LVD电压设置为3.2v
		jmp delay
key4:                        			  	//是否为4键
		r1 = 0x0010;
		cmp r2,r1;
		jne keydown;
		r3 = 0x0003;
		[P_LVD_Ctrl] = r3;      			//LVD电压设置为3.6v
delay:
		r1=0xff40;
		[P_IOB_Data]=r1;          			//点亮LED
		r4 = 0x0000							//延时
wait:
		r4 -= 1;
		cmp r4, 0x0000;
		jne wait
check_lvd:
		r1=0x0001                    		//清看门狗
		[P_Watchdog_Clear]=r1
		r1 = [P_LVD_Ctrl];       			//监测电压
		r3 = 0x8000;
		r1 &= r3;
		cmp r1,0x0000;
		jz check_lvd; 
		r2=0x0040      
		[P_IOB_Data] = r2;        			//熄灭LED
		jmp keydown;  

⌨️ 快捷键说明

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