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 + -
显示快捷键?