EM78系列单片机的开发工具及编程器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章EM78系列单片机的开发工具及编程器
EM78单片机的开发工具一般包括:(1)宏汇编(交叉汇编)(2)仿真器(3)程序烧写器。单片机的开发过程如下:
1)用编辑软件(如:EDIT、PE2等)输入源程序(扩展名DT)
2)用宏汇编(ASM456/ASM447)对源程序(*。DT)进行汇编。
3)使用仿真器(ICE456/447)进行程序调试。仿真调试正确转向下一步,
不正确则修改源程序再转向“2”开始。
4)将调试完毕的目标码(*.CDS)用烧写器烧入EM78单片机中。
5)将烧好的单片机插入实际电路中检查,若正确则开发完毕,否则修改
程序转向“2”开始。
下面分别介绍上述三种开发工具。
6.1.宏汇编(交叉汇编)与汇编语言格式
6.1.1.宏汇编程序
ASM456是EM78154/156/256/456的汇编程序。
ASM447是EM78247/447的汇编程序。
ASM456/447是台湾义隆电子公司设计的针对EM78单片机的汇编软件,该软件也包含在仿真器(E8-ICE)的集成调试软件中,也可以直接在仿真器软件中汇编,也可以单独使用。对源程序汇编后会产生如下文件:*.dt:源程序
*.std:提供给程序设计者参考的标准文件
*.cds:即一般所谓的目标文件(object文件)
.ice:提供给仿真器(E8-ICE)显示使用
*.lin 及*.adr:提供给仿真器(E8-ICE)的数据库使用
注:*.ice 及*.std为可读的文本文件,其余为不可读。
若汇编失败,将产生一个*.err文件,内为错误信息,以便设计者排错用。
6.1.2.汇编语言格式
以下就该编译器的語法,作一詳盡介紹。
(1)键入格式
本编译器並不对字之大写或小写作区別,如 "MOV", "Mov", "mOV",和 "MoV" 在解释上是不做区別的。
(2)在常数之前请加小鼠标"@",其它如寄存器(r)
及位(b)之前則不加"@"。例如
MOV A, @0x55 ;add"@" before constant 0x55
BC 0x7, 0x4 ;no"@" before both register
;7 and bit4
SUB 0x10,A ;no"@" before register 0x10
(3)数字格式
a、十六进位制之前先加"0x",例如
0xA、 0x55、 0x11。PS 只处理二位。
b、十进位制之前不加辨识字元。
(4)";" 请置于备忘陈述或註解之前。例如
;**********************************
;This is an example of how to write
;an EMC 8_bit program
;Date of programming: March 12, 1996
;**********************************
(5)"ORG" 定义起始位址。其語法为
"ORG ADDR"。例如
ORG 0x000 ;address begins from 0x000
NOP
NOP
:
ORG 0x600 ;another address starts from 0x600
NOP
NOP
:
(6)"==" 定义一代号值。其語法为“SYMBOL == K”,例如
TCC ==0x01
PC ==0x02
BUFFER == 0x20
COUNTER == 0x21
※ a、代号字串長度不得大于11个字母。
b、定义代号不一定在程序一开始,只要在使用之前定义即可。
(7)面向寄存器型指令的語法可分为以下三类:
a、直接对寄存器做运算。其語法为"INST REG"。例如
IOW 0x05
INC 0x10
DJZ 0x10
RRC 0x10
b、与 "A" 做运算,結果存入 "A" 中。其語法为"INST A, REG"。例如
MOV A, 0x15
AND A, 0x15
SUB A, 0x15
c、与 "A" 做运算,結果存入寄存器中。其語法为"INST REG, A"。例如
MOV 0x15, A
AND 0x15, A
SUB 0x15, A
(8)位处理型指令的語法为"INST REG, BIT"。例如
BC 0x05, 0x1
BS 0x05, 0x1
JBC 0x05, 0x1
JBS 0x05, 0x1
(9)标号的用法
a、标号字串長度不得大于11个字母。
b、标号字串之后要加一个冒号“:”。冒号之后要換行。
6.1.3.錯誤信息说明:
信息1:16 characters at most for a name/label。
说明:当定义代号或标号名大于16 個字母時。
信息2: out of range, it must be from 0x5 to 0x7。
说明:在試图定义一不存在的输出输入口(I/O PORT )時
信息3:unknown instruction, or syntax。
说明:在编译某一行之陳述(statement )時,发現指令以外之字元,或語法不符規定。信息4:out of range, it must be from 0 to 0xFF。
说明:在設定一常数值時,其值大于上限255。
信息5:digits only。
说明:以数字开头的字(word),会被解釋成十进位的語法。
信息6:out of range, it must be from 0 to 0x400。
说明:在"EOP" 之前,或"EOP" 两之间程序長度大于1K(1024 )。
信息7:out of range, it must be from 0 to 0x3F。
说明:当企图使用寄存器的位置超过63。
信息8:reserved word or comma ',',required。
说明:使用之代号名称或标号明是指令保留字。如com,tbl...等等。
信息9:argument does not assign a value。
说明:在编译某一行之陳述(statement )時,发現代号名称之值並未事先以予設定。
信息10:name/label duplicates。
说明:代号名称或标号名重複使用。
信息11:name can not match with label。
说明:某一代号名称与某一标号名雷同。
信息12:out of range, it must be less than 0x1FFF。
说明:程序長度大于該一系列可编程的地址上限。
信息13:too many pages。
说明:使用过多之"EOP"。
信息14:the current page is overlapping with the last page。
说明:在"EOP" 之前,或"EOP" 两之间程序長度大于1K(1024 )。
信息15:the ORG overlaps with the address before it。
说明:目前"ORG" 所定义之起始位址小于其上一行指令之位址。
6.1.4.编译結果说明:
(1)当编译失敗時,会產生一個".ERR"檔,內容記載如上所述之錯誤信息。其格式如下:Compiling:dir\fname.dt
Error ln_no instruction statement:error message