单片机程序编译有一个错误,请帮忙解决
发布网友
发布时间:2023-12-24 20:44
我来回答
共4个回答
热心网友
时间:2024-08-05 15:22
编译错误有两条,都是缺少逗号,下面已经补上了:
Main: MOV R0, #0A0H;
MOV R2, #08H;
热心网友
时间:2024-08-05 15:23
ORG 0000H ;开始要从0000H初开始
LJMP MAIN
ORG 1000H ;此处可以自定义
Main :MOV R0,#0A0H; R0后少了个逗号
MOV R2,#08H; R2后少了个逗号
SETB IT1;
SETB EA;
SETB EX1;
MOV DPTR,#7FF8H
MOVX @DPTR,A
HERE:SJMP HERE;
MOVX A,@DPTR;
MOV @R0,A;
MOV P1,@R0;
INC DPTR;
INC R0;
DJNZ R2,DONE
RETI
DONE:MOVX @DPTR,A
RETI
END ; 最后要有end结束标志
热心网友
时间:2024-08-05 15:23
还有中断的使用问题也很大,反正我没看出来,这个DONE是响应哪个中断的。
使用中断在程序开始还要说明中断入口地址。
另外,定时器1的初始化也没有完成...
热心网友
时间:2024-08-05 15:22
你给出的程序问题很大,像楼上说的,ORG伪指令
ORG 0000H
JMP MAIN
ORG 0003H
JMP EX0_INTERRUPT
;ORG 000BH
;......
在程序的开始,就要写主程序的入口地址,以及中断程序的入口地址。
MAIN:程序结尾的END不能忘掉,
MOV R0 #0A0H
MOV R2 #08H
这是你程序错误的原因。像含有多个操作数的指令,中间都会有分号存在。
MOV R0,#0A0H
MOV R2,#08H
注意,分号是英文的,不是中文的。
还有一点啊,你不是写C语言的,不是每句话结束都要用分号的,在汇编中分号只是注释符号。。。
ORG 0000H
JMP MAIN
ORG 0013H
JMP EX1_INTERRUPT ;有中断来了,就跳
MAIN:
MOV R0,#0A0H
MOV R2,#008H
SETB IT1
SETB EA
SETB EX1
MOV DPTR,#7FF8H
MOVX @DPTR,A
HERE:SJMP HERE ;此处应是等待中断,中断完成还是跳回此处。
;下面是中断程序
EX0_INTERRUPT: ;我是从0013H地址跳过来的
MOVX A,@DPTR
MOV @R0,A
MOV P1,@R0
INC DPTR
INC R0
DJNZ R2,DONE
RETI ;中断子程序结束
DONE:MOVX @DPTR,A
RETI ;中断子程序结束
RET ;这个程序结束的END不能丢
恩,就这样了,祝楼主学习顺利。
楼上的iie2010:
SETB IT1
SETB EA
SETB EX1
这三句话只说明中断时外部中断1,下降沿触发。
呵呵。。