|
这段程序很简单,实际编译在目标板上运行没有问题。 #include "msp430x14x.h" ;自己第一次写的程序 ; NAME main;模块名称定义 PUBLIC main;全局符号声明 ORG 0FFFEH;中断向量表复位向量地址 DC16 init;存放用户程序入口地址,复位后开始执行 RSEG DATA16_C ;在ROM中存放LED的显示值 LEDdata:DC8 01H,02H,04H,08H,10H,20H,40H,80H RSEG CSTACK ;定义堆栈段 DS 0 RSEG CODE ;定义代码段 DS 0 init: MOV #SFE(CSTACK),SP;初始化堆栈指针 main: NOP;用户主程序开始 MOV #WDTPW+WDTHOLD,&WDTCTL;关闭看门狗定时器 MOV.b #0,&P4SEL;定义P4口为基本I/O口 MOV.b #0FFH,&P4DIR;设置P4口为输出端口 MOV.b #0,&P4OUT;使8个灯都为熄灭状态 again: MOV #LEDdata,R4;取输出表格首地址 MOV #8,R5;循环控制次数 next: MOV.b @R4+,&P4OUT;取表格的某一状态输出 CALL #delay;延时 DEC R5; JNZ next; JMP again; delay: PUSH SR; MOV #0FFFFH,R6; wait: DEC R6; JNZ wait; POP SR; RET END
随便修改了一下,问题就出来了: #include "msp430x14x.h"
;自己第一次写的MSP430汇编程序
;
NAME main;模块名称定义
PUBLIC main;全局符号声明
ORG 0FFFEH;中断向量表复位向量地址
DC16 init;存放用户程序入口地址,复位后开始执行
RSEG CSTACK ;定义堆栈段
DS 0
RSEG CODE ;定义代码段
DS 0
init: MOV #SFE(CSTACK),SP;初始化堆栈指针
main: NOP;用户主程序开始
MOV #WDTPW+WDTHOLD,&WDTCTL;关闭看门狗定时器
MOV.b #0,&P4SEL;定义P4口为基本I/O口
MOV.b #0FFH,&P4DIR;设置P4口为输出端口
MOV.b #0,&P4OUT;使8个灯都为熄灭状态
CALL #delay;延时,这是出第二个问题的地方。
MOV.b #80H,&P4OUT;
CALL #delay;延时
MOV.b #0,&P4OUT;
CALL #delay;延时
MOV.b #40H,&P4OUT;
CALL #delay;延时
MOV.b #0,&P4OUT;
end: NOP;这是第一个问题出的地方
JMP end;
delay: PUSH SR;
MOV #0FFFFH,R6;
wait: DEC R6;
JNZ wait;
POP SR;
RET
END
结果是:
for_user.asm
Error[0]: Invalid syntax E:\我的文档\for_user.asm 27
Error[50]: Undefined symbol:'delay' E:\我的文档\for_user.asm 19
Done. 2 error(s), 0 warning(s)
请大家指教
[ 本帖最后由 ywb888 于 2012-1-13 12:50 编辑 ]
|
|