📄 main.asm
字号:
//============================================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//============================================================================
// 工程名称: 插入节点 Struct.spj
// 功能描述: 程序3.5 INCLUDE、DEFINE、IF、ENDIF、MACRO以及PROC等伪指令的使用
// 文件来源: 《SPCE061单片机原理及应用技术》 第三章 指令系统
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: (a) C-Lib: (CMacro.lib);
// 硬件连接: A口的IOA0-I0A7接LED(低电平点亮LED)
// 组成文件:
// main.asm
// Resource.asm/Resource.inc/Struct.h
// 日期: 2003-5-22(建立)
// 2003-7-16(添加版本说明及版权声明并做代码标准化)
//===============================================================
.include Hardware.inc; //将Hardware.inc文件包含进来
.define FoscCLK 0x00; //Fosc=24.576MHz 为FoscCLK赋值
.if FoscCLK==0x20; //条件汇编
.define CPUCLK 0x00; //CPUClk选Fosc
.else
.define CPUCLK 0x02; //CPUClk选Fosc/4
.endif //结束条件汇编
Delay: .MACRO TIM //宏定义,有一个宏参数TIM
R3=TIM;
DelayLoop1#:
//隐含标号,程序编译时会将宏展开,为了避免标号重复定义,必须使用隐含标号
R4=0xFFFF;
DelayLoop2#: //隐含标号
R4-=1;
JNZ DelayLoop2#;
R3-=1;
JNZ DelayLoop1#;
.ENDM //结束宏定义
.CODE
.public _main
_main:
CALL Init_IO; //调用过程
R1=FoscCLK; //Fosc
R1|=CPUCLK; //CPUClk
[P_SystemClock]=R1; //系统时钟选择设置
MainLoop:
R1=0x00FF; //LED灭(输出低电平亮)
[P_IOA_Data]=R1;
Delay 5; //宏调用,用实参5代替宏定义中的TIM
R1=0x00; //LED亮
[P_IOA_Data]=R1;
Delay 18; //宏调用,用实参18代替宏定义中的TIM
r1=0x0001;
[P_Watchdog_Clear]=r1;
JMP MainLoop;
Init_IO: .PROC //过程定义
R1=0x00FF;
[P_IOA_Dir]=R1; //设置IOA0-IOA7为同相低电平输出
[P_IOA_Attrib]=R1;
r1=0;
[P_IOA_Data]=R1;
RETF;
.ENDP //结束过程定义
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -