;;;;;;;;;;;;;;;;;;用查寻方式来实现p1.0口输出方波;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;时钟频率为6MHz;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV TMOD,#10H;使用C/T1 设为16位定时器
SETB P1.0;首先输出高电平
SETB TR1;启动定时器
LOOP: MOV TL1,#00H
MOV TH1,#00H;设置高电平时间
JNB TF1,$;等待定时完成
CLR TF1
CPL P1.0;时间到,输出低电平
MOV TL1,#00H
MOV TH1,#00H;设置低电平时间
JNB TF1,$;等待低电平时间
CLR TF1
CPL P1.0
SJMP LOOP
END
这是我在keil上写的代码
为什么会*** WARNING L5: CODE SPACE MEMORY OVERLAP
FROM: 0000H
TO: 001CH
这样的警告
我在网上搜了一下
说是这是重新定义了定时器,
可我把低电平输出改为T0还是有这样的警告,
这是为啥
把工程里的那个STARUP.A51去掉,估计你没去掉,那个文件是为C语言工程生成的。
出现WARNING L5: CODE SPACE MEMORY OVERLAP之类的警告,大部分是因为:地址重叠越界了,比如绝对寻址的地址重叠,中断入口地址重叠等等。
我编译调试了一下你的程序,没有问题也没出现警告。。。
还有你如果想产生方波的话,用中断方式会更容易。。。
ORG 00H
JMP MAIN
ORG 1BH
CPL P1.0
RETI
MAIN:MOV TMOD,#10H
MOV TH1,#00H
MOV TL1,#00H
SETB EA
SETB ET1
SETB TR1
SJMP $
END
我编译调试了一下你的程序,没有问题也没出现警告。。。
还有你如果想产生方波的话,用中断方式会更容易。。。
ORG 00H
JMP MAIN
ORG 1BH
CPL P1.0
RETI
MAIN:MOV TMOD,#10H
MOV TH1,#00H
MOV TL1,#00H
SETB EA
SETB ET1
SETB TR1
SJMP $
END
嗯 对 还有就是你那个开头都没有定义起始地址什么的,ORG 之类的都没有用,memory 地址随机分配可能出现这种警告,不过我运行你那个居然连警告都没有,挺正常的。。。。。
引用: 引用 4 楼 chutianya 的回复:
我编译调试了一下你的程序,没有问题也没出现警告。。。
还有你如果想产生方波的话,用中断方式会更容易。。。
ORG 00H
JMP MAIN
ORG 1BH
CPL P1.0
RETI
MAIN:MOV TMOD,#10H
MOV TH1,#00H
MOV TL1,#00H
SET……
额.. 我知道用中断更好.. 可是这是我们的作业.. 老师指定要用查寻的方式来写..