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

📄 main.asm

📁 61板实验指导书源代码
💻 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.
//=======================================================

//============================================================
//  工程名称: led10_asm.scs
//  功能描述:  用汇编实现A/D采样数据在发光二极管上点亮
//  文件来源:《61板实验教程》"实验十 A/D采样数据在发光二极管上点亮“
//  硬件连接: 61板SPY0029接口选择3.3V,IOB高8位接至SEG接口控制LED的导通
//             IOB6连至DIG7通过ULN2003A控制8个LED的共阴极电平状态
//  IDE环境:  SUNPLUS u'nSPTM  IDE 1.8.0
//
//  涉及的库:
//  组成文件:
//  main.asm
//
//  日期:  2004/8/17
//===============================================

//*****************************************************************************/
// 文件名称: main.asm
// 实现功能: 用汇编实现A/D采样数据在发光二极管上点亮
//            通过改变LINE_IN端口的模拟电压来改变IOB口输出的数据,
//            采用自动方式执行ADC转换,可以通过发光
//            二极管的点亮了解转换的数据值。
// 日期: 2004/8/17
//*****************************************************************************/

		.define		P_IOB_DATA  	   	0x7005 
		.define		P_IOB_DIR   	    0x7007 
		.define		P_IOB_ATTRI			0x7008 
		.define		P_INT_Ctrl			0x7010 
		.define		P_INT_CLEAR			0x7011 
		.define		P_ADC_Ctrl		    0x7015 
		.define		P_ADC_MUX_Ctrl		0x702b 
		.define		P_ADC_MUX_DATA		0x702C
		.define		P_DAC_Ctrl		    0x702A 
        .define		P_Watchdog_Clear    0x7012
        
        .ram 
        .var   R_DelayCounter = 0
            
		.code
		.public _main
//============================================================= 
// 函数名称:  _main
// 功能描述: 通过改变LINE_IN端口的模拟电压来改变IOB口输出的数据,
//           采用自动方式即定时器A溢出执行ADC转换,可以通过IOB高8位控制发光
//           二极管的点亮了解转换的数据值。
// 语法格式:  _main
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=================================================================
_main:         
		r1 = 0xff40 
		[P_IOB_ATTRI] = r1             //IOB8-IOB15,IOB6口设置为同向输出口
		[P_IOB_DIR] = r1 
		r1 = 0x0040
		[P_IOB_DATA] = r1
		r1 = 0x0001                   //选择通道LINE_IN为IOA0
		[P_ADC_MUX_Ctrl] = r1		 	
		r1 = 0x0001	                  //允许A/D转换
		[P_ADC_Ctrl] = r1 		 
 Loop_AD:    
		r1 = [P_ADC_MUX_Ctrl]         //读寄存器[P_ADC_MUX_Ctrl]的B15  
		test r1,0x8000				  //判断是否转换完毕
		jz Loop_AD                 	  //否,继续转换
		r1 = [P_ADC_MUX_DATA]    	  //是,则读出[P_ADC_MUX_DATA]转换结果
                                      //同时触发A/D重新转换
		r1 = r1 lsl 2				  //保留A/D值的最低8位
		r1 |= 0x0040				  //保证IOB6为高,LED阴极共地
		[P_IOB_DATA] = r1
		r1 = 0x0000                   //延时初值设定
        [R_DelayCounter] = r1
L_DelayLoop:	                      //延时并清看门狗
		r1 = 0x0001                   //清看门狗
		[P_Watchdog_Clear] = r1
		r1 = [R_DelayCounter]	  
		r1 += 1		 				  //延时计数加1
		[R_DelayCounter] = r1
		cmp r1,0x100                  //延时时间到了吗?
		jne  L_DelayLoop 				
		jmp Loop_AD;
		
//============================================================= 
//main.asm 结束
//=============================================================

⌨️ 快捷键说明

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