标题:
单片机汇编语言常见错误分析
[打印本页]
作者:
cogobuy123
时间:
2012-10-17 15:23
标题:
单片机汇编语言常见错误分析
一、汇编软件汇编失败原因分析:
这里采用
Keil C51
软件包中的宏汇编器
A51
作为编绎器,单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成汇编失败,常见的汇编错误如下:
1.
标号重复:
常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。
2
.标点符号以全角方式输入:
汇编程序要求标点符号为半角方式,否则汇编失败。可以在输入:,
;
时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。
3
.数值#
FFH
前遗漏
0
:
根据要求应该在
a
~
f
前加
0
,写成#
0FFH
4
.字母
O
和数字
0
搞混:
有时候这两个字看上去完全相同,要注意哦~~
5
.标号后边遗漏
"
:
"
6
.标号使用了特殊字符:
标号不能用指令助记符、伪指令、特殊功能寄存器名和
8051
在指令系统中用的
“#”
、
“@”
等,长度以
2~6
字符为宜,第一字母必须是英文字母。比如:
T1
、
T2
、
A
、
B
这些字符有特定的含义,不允许用于标号。
7
.
AJMP
跳转超过
2K
地址:
AJMP
属于短跳转命令,有
2K
地址范围的限制。
8
.超过地址范围:
JB P3.2,EXIT
跳转超过-
128
~
127
个地址范围。这个是最容易出现的错误!你有可能程序刚才还能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把
JB P3.2,EXIT
转换成
JNB P3.2,LD01
AJMP EXIT
LD01: AJMP EXIT
……
9.
字母
I
和数字
1
混淆:
冒失鬼的常见问题。
10.
创造发明不存在的汇编语言指令:
在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不认可。
11.
符号
“
:
”“
;
”
最好用半角书写。
二、程序出错:
1
.寄存器重复调用:
比如主程序中设定了
R4
=
5,
表示主程序循环执行
5
次,而其中的一个延时子程序又用到
R4
,使
R4
的值发生紊乱,造成程序无法正常执行。
2
.硬件不熟悉:
单片机一般采用下拉输出,往往端口输出
0
驱动外设工作,和常见的正逻辑相反,容易搞错。
由
科通芯城(
www.cogobuy.com
)
中国首个
电子元器件网
自营电商
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0