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

📄 test20.asm

📁 试验仪自检程序
💻 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.
//========================================================

//============================================================
//  工程名称:test20.spj
//  功能描述: 数码管动态显示0123.
//        A0-A7输出控制数码管的段显示,B2-B5输出控制数码管的位显示,均为高电平有效
//  文件来源:《实验仪实验指导书》 "实验二十四  4位8段LED数码管显示"  第88页

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

//============================================================
// 文件名称:test20.asm  
// 实现功能: 数码管动态显示0123.
//        A0-A7输出控制数码管的段显示,B2-B5输出控制数码管的位显示,均为高电平有效
//============================================================

		.define P_IOA_Data			0x7000
		.define P_IOA_Dir			0x7002
		.define P_IOA_Attr			0x7003
		.define P_IOB_Data			0x7005
		.define P_IOB_Dir			0x7007
		.define P_IOB_Attr			0x7008
        .define P_Watchdog_Clear	0x7012
		.ram
DisplayBuff:	.DW 4 DUP(0)				//定义一个4存储单元的显示缓冲区,存入显示内容

		.data
//显示段码存放区
DispTbl:	.DW 0x003F,0x0006,0x005B,0x004F,0x0066				//0,1,2,3,4
			.DW 0x006D,0x007D,0x0007,0x007F,0x006F				//5,6,7,8,9
			.DW 0x00FF									//全亮

		.code
		.public _main;
//============================================================= 
// 函数名称:    _main
// 功能描述:    数码管动态显示0123.	
// 语法格式:    无
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=============================================================
_main:
		r1=0x00FF;						//初始化IOA0~IOA7为低电平输出口
		[P_IOA_Dir]= r1;
		[P_IOA_Attr]= r1;
		r1=0x0000;
		[P_IOA_Data]= r1;
		r1=0x003C;						//初始化IOB2~IOB5为低电平输出口
		[P_IOB_Dir]= r1;
		[P_IOB_Attr]= r1;
		r1=0x0000;
		[P_IOB_Data]= r1;
		BP=DisplayBuff;					//设置显示缓冲区
		r1=0x0001;
		[BP++]= r1;
		r1=0x0002;
		[BP++]= r1;
		r1=0x0003;
		[BP++]= r1;
		r1=0x0004
		[BP++]= r1;
Loop1:
		r3=0x0000;						//初始化计数初值
		r2=DisplayBuff;					//r2指向显示缓冲区
		r4=0x0004;						//显示位码
Loop2:
		r1=0x0001                    	//清看门狗
		[P_Watchdog_Clear] = r1
		r1=0x0000						//暂时关闭所有的数码管
		[P_IOB_Data]= r1
		BP=DispTbl;						//BP指向段码表
		r1=[r2++];						//从显示缓冲区内取显示内容(即偏移量)
		BP+=r1;							//段码表首地址加上偏移量
		r1=[BP];							//从段码表中取出段码
		[P_IOA_Data]= r1;					//送出段码
		[P_IOB_Data]= r4;					//送出位码
		r4= r4 LSL 1;						//修改位码,以便下一位显示
		r3+=0x0001;						//计数器加1
		CMP r3,0x0004						//4位数据显示完否
		JB Loop2							//未显示完
		JMP Loop1

⌨️ 快捷键说明

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