test21.asm

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

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

//============================================================
//  工程名称: test21.spj
//  功能描述:  利用串口总线与PC机通讯,PC机端软件使用”串口调试工具“
//  文件来源:《实验仪实验指导书》,,"实验十六	UART/USB实验" 第55页
//  IDE环境:   SUNPLUS u'nSPTM  IDE 1.8.4
//
//  涉及的库:
//  组成文件:
//    	      test21.asm
//===============================================

//============================================================
// 文件名称:test21.asm
// 实现功能:利用串口总线与PC机通讯,PC机端软件使用”串口调试工具“
//============================================================

		.include hardware.inc

		.ram 
		.var recFlag;                  			 	//接收数据标识,0 未接收数据 1 接收数据

		.code
		.public _main;
//============================================================= 
// 函数名称:  _main
// 功能描述: 利用串口总线与PC机通讯,PC机端软件使用”串口调试工具“
// 语法格式:  _main
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=================================================================
_main:
_UART_INIT:		
F_UART_INIT:
		INT OFF;
		r1 = 0x0000;
		[recFlag] = r1;
		r1 = 0x0000;						//未使能任何中断
		[P_INT_Ctrl] = r1;
		r1 = 0x0480;	       				//设置IOB7为输入IOB10为输出
		[P_IOB_Attrib] = r1;
		r1 = 0x0400;
		[P_IOB_Dir] = r1;
		r1 = 0x0000;	
		[P_IOB_Data] = r1;
		r1 = 0x006b;	     				//设置波特率为115.2Kbps
		[P_UART_BaudScalarLow] = r1;
		r1 = 0x0000;
		[P_UART_BaudScalarHigh] = r1;
		r1 = 0x0000;
		r4 = 0x00C0;		    				//输入和输出使能设置
		[P_UART_Command1] = r1;
		[P_UART_Command2] = R4;
L_ResendData:
        r3=0x0001                    	//清看门狗
		[P_Watchdog_Clear] = r3
L_Check_TxRDY:
		r2 = [P_UART_Command2];
		r2 &= 0x0040;			      		//检测输出是否READY
		JZ L_Check_RxRDY;
//发送8位十六进制数cc
		r1 = [recFlag];      
		cmp r1,0x0000;                 		//是否接收过数据
		jz  L_Check_RxRDY;
		[P_UART_Data] = r4;		     		//发送数据
		r1 = 0x0000;
		[recFlag] = r1;
L_Check_RxRDY:
		r2 = [P_UART_Command2];		    	//检测是否有数据接收
		r2 &= 0x0080;
		JZ L_Check_RxRDY;	
		r4 = [P_UART_Data];					//接收数据
		r1 = 0x0001; 
		[recFlag] = r1;             			//设置接收标识符
		goto L_ResendData;

⌨️ 快捷键说明

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