版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HOLTEKMCU软件指令介绍MCU概述指令系统概述HOLTEK指令系统MCU概述指令系统概述HOLTEK指令系统MCU概述(组成架构)MCU的基本结构由以下几个部分组成:PC (Programcounter程序计数器)
ROM (Programmemory程序存储器)RAM (Datamemory数据存储器)ACC (Accumulator累加器)ALU (Arithmeticandlogicunit算术逻 辑单元)
STATUS (Statusregister状态寄存器)STACK (Stackregister堆栈寄存器)MCU概述指令系统概述HOLTEK指令系统指令系统概述分类寻址方式指令周期状态寄存器指令中的常用符号分类HOLTEK8位系列单片机共有63条功能强大的汇编指令。这些指令按功能可分为以下七类。数据传送指令算术运算指令逻辑运算指令控制和转移指令位操作指令读表指令其它指令寻址方式立即寻址:指令中直接给出操作数(立 即数)
例: MOVA,直接寻址:指令中给出操作数的地址, 该方式只允许在存储器之间传 送数据
例:
MOV,A CLR33H[20H][30H]寻址方式间接寻址:用到间接寻址寄存器(R0, R1)进行寻址操作
例:
MOV,A特殊寄存器寻址:针对某一特殊寄存器 作运算
例:
CLR指针寻址:配合查表指令使用
例:
MOV,A
TABRDCACCR0WDTTBLP指令周期一个指令周期包括四个系统时钟周期。指令的提取和执行呈流水线工作。指令周期由于采用了流水线的工作方式,因此多数指令都能在1个指令周期内执行完成。查表指令是2周期指令。(若查表所得内容的低8位送往PCL,则该指令的执行就需要3个指令周期。)凡是使程序非顺序执行的指令,其执行时间需要2个指令周期。(包括:JMP、CALL等,指令MOVPCL,A、以及SZ、SIZ等判断条件成立时。)状态寄存器零标志进位标志半进位标志溢出标志掉电标志WDT溢出标志指令中的常用符号X :8位立即数M :数据存储器地址A :累加器I :0-7位Addr:程序存储器地址← :数据传送方向
MCU概述指令系统概述HOLTEK指令系统HOLTEK指令系统数据传送指令(3条)算术运算指令(15条)逻辑运算指令(19条)控制和转移指令(11条)位运算指令(4条)读表指令(2条)其它指令(9条)数据传送指令数据传送指令是应用最频繁的指令助记符为MOV,其汇编语言指令格式为
MOV[目的字节],[源字节]指令功能是将源字节的内容传送到目的字节,源字节的内容不变。这类指令不影响标志位。MOVA,[m]指令说明:RAMACCMOV[m],A指令说明:
RAMACCMOVA,X指令说明:ROMACCMOVA,[50H]ACC50H51HRAM00H10H20H10H10H55HMOV[51H],AMOVA,55H〈例〉………算术运算指令算术运算指令包括加、减、加1、减1等指令。这类指令大都影响标志位。带进位的加法指令ADCA,[m]指令说明:
影响标志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+CADCMA,[m]指令说明:影响标志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+C〈例〉ACC50H51HRAM55H10H10H66H76HADCA,[50H]ADCMA,[51H]STATUS--TOPDOVZACC--00001100………000100000101010101100101101100110++01100110000100000++0111011001110110加法指令ADDA,[m]指令说明:
影响标志:OV,Z,AC,CACCALUShifterRAMACC+[m]ADDMA,[m]指令说明:
影响标志:OV,Z,AC,CACCALUShifterRAMACC+[m]ADDA,X指令说明:
影响标志:
OV,Z,AC,CROMALUShifterACCACC+X--000000STATUS--TOPDOVZACC〈例〉ACC60H61HRAM66H5BH22HC1HE3HADDA,[60H]ADDMA,[61H]11ADDA,51H0012H1………0110011001011011+110000011100000100100010+111000111100000101010001+00010010BCD码修正指令DAA[m]指令说明:影响标志:C若ACC低四位的值大于9或AC=1,則低四位加上6;ACCALUShifterRAM若ACC高四位的值大于9或C=1,則高四位加上6;--000000STATUS--TOPDOVZACC〈例〉ACC53H54HRAM12H00H00H69HE1HMOVA,69HADDA,78HDAA[53H]1147H1………011010010111100011100001+0100011101100110+带借位的减法指令SBCA,[m]指令说明:
影响标志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+CSBCMA,[m]指令说明:影响标志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+C--000000STATUS--TOPDOVZACC〈例〉ACC70H71HRAME1H23H45HBDH78HSBCA,[70H]SBCMA,[71H]111………111000011101110010111101+010111101+101111011011101001110111+101111000+减法指令SUBA,[m]指令说明:影响标志:OV,Z,AC,CACCALUShifterRAMACC+[m]+1SUBMA,[m]指令说明:
影响标志:
OV,Z,AC,CACCALUShifterRAMACC+[m]+1SUBA,X指令说明:影响标志:OV,Z,AC,CROMALUShifterACCACC+X+1--000000STATUS--TOPDOVZACC〈例〉ACC80H81HRAMBDH12H34HABH77HSUBA,[80H]SUBMA,[81H]11SUBA,56H155H………101010011010101101010100101010101++110010111010101101110110101110111++111011011011110110101010110101011++加1指令INC[m]指令说明:影响标志:ZALUShifterRAM[m]+1INCA[m]指令说明:
影响标志:ZACCALUShifterRAM[m]+1减1指令DEC[m]指令说明:
影响标志:ZALUShifterRAM[m]-1DECA[m]指令说明:影响标志:ZACCALUShifterRAM[m]-1--000000STATUS--TOPDOVZACC〈例〉ACC90H91HRAM55HFEH20HFFH00HINC[90H]INCA[90H]10DEC[91H]DECA[91H]1FH1EH………逻辑运算指令逻辑运算指令包括与、或、异或、循环及求反指令。它们在执行时大都影响标志位。逻辑与指令ANDA,[m]指令说明:影响标志:ZACCALUShifterRAMACC“AND”[m]ANDMA,[m]指令说明:影响标志:ZACCALUShifterRAMACC“AND”[m]ANDA,X指令说明:影响标志:ZROMALUShifterACCACC“AND”X〈例〉ANDA,[40H]运算前:
ACC=19H 00011001B [40H]=B8H 10111000B运算后:
ACC=18H 00011000B [40H]=B8H逻辑或指令ORA,[m]指令说明:影响标志:ZACCALUShifterRAMACC“OR”[m]ORMA,[m]指令说明:影响标志:ZACCALUShifterRAMACC“OR”[m]ORA,X指令说明:影响标志:ZROMALUShifterACCACC“OR”X〈例〉ORMA,[41H]运算前:
ACC=12H 00010010B [41H]=11H 00010001B运算后:
ACC=12H 00010011B [41H]=13H逻辑异或指令XORA,[m]指令说明:影响标志:ZACCALUShifterRAMACC“XOR”[m]XORMA,[m]指令说明:影响标志:ZACCALUShifterRAMACC“XOR”[m]XORA,X指令说明:影响标志:ZROMALUShifterACCACC“XOR”X〈例〉XORA,25H运算前:
ACC=33H 00110011B 25H 00100101B运算后:
ACC=16H 00010110B取反指令CPL[m]指令说明:影响标志:ZALUShifterRAM[m]CPLA[m]指令说明:影响标志:ZACCALUShifterRAM[m]〈例〉CPL[42H]运算前: [42H]=11H 00010001B运算后: [42H]=EEH 11101110B移位指令RR[m]指令说明:影响标志:noneALUShifterRAMD7D6D5D4D3D2D1D0MSB LSB76543210D0D7D6D5D4D3D2D176543210RRA[m]指令说明:影响标志:noneACCALUShifterRAMD7D6D5D4D3D2D1D0MSB LSB76543210D0D7D6D5D4D3D2D176543210RRC[m]指令说明:影响标志:CALUShifterSTATUSRAMCCD7D6D5D4D3D2D1D0MSB LSB76543210D0CCD7D6D5D4D3D2D176543210RRCA[m]指令说明:影响标志:CACCALUShifterSTATUSRAMCCD7D6D5D4D3D2D1D0MSB LSB76543210D0CCD7D6D5D4D3D2D176543210〈例〉RR[50H]运算前: [50H]=30H 运算后: [50H]=18H ……00110000B00011000B〈例〉RRCA[51H]运算前:
ACC=01H C [51H]=10H 00010000B 1
运算后:
ACC=88H 10001000B 0 [51H]=10H
……RL[m]指令说明:
影响标志:noneALUShifterRAMD7D6D5D4D3D2D1D0MSB LSB76543210D6D5D4D3D2D1D0D776543210RLA[m]指令说明:影响标志:
noneACCALUShifterRAMD7D6D5D4D3D2D1D0MSB LSB76543210D6D5D4D3D2D1D0D776543210RLC[m]指令说明:
影响标志:
CALUShifterSTATUSRAMCCD7D6D5D4D3D2D1D0MSB LSB76543210D7CD6D5D4D3D2D1D0C76543210RLCA[m]指令说明:
影响标志:
CACCALUShifterSTATUSRAMCCD7D6D5D4D3D2D1D0MSB LSB76543210D7CD6D5D4D3D2D1D0C76543210〈例〉RLA[52H]运算前:
ACC=01H [52H]=10H 00010000B
运算后:
ACC=20H 00100000B
[52H]=10H……〈例〉RLC[20H]运算前: C [20H]=10H 00010000B 1
运算后: [20H]=21H 00100001B 0
……控制和转移指令控制和转移指令包括无条件转移指令、条件转移指令、循环转移指令及调用与返回指令。这类指令通过修改PC的内容(占用2个指令周期)来控制程序的执行过程,可极大的提高程序的效率,实现复杂的功能。它们在执行时不影响标志位无条件转移指令JMPaddr指令说明:
影响标志:
noneROMPC將要跳往的目的地地址直接送到程序計數器內。PC←addr〈例〉MOVA,20HJMPDELAY………………DELAY:MOVA,30H……没有执行执行条件转移指令SZ[m]指令说明:
影响标志:
noneALUShifterRAMPCPC+2,if[m]=0SZA[m]指令说明:
影响标志:
noneACCALUShifterRAMPCPC+2,if[m]=0〈例〉ACC55H56HRAM57H58H34H00H00H12H78H……SZ[55H]SZ[56H]SZA[57H]SZA[58H]MOVA,00HMOVA,01HMOVA,02HMOVA,03H……00H34H03H………循环转移指令SDZ[m]指令说明:
影响标志:
noneALUShifterRAMPC[m]←[m]-1,PC+2,if[m]=0SDZA[m]指令说明:
影响标志:
noneACCALUShifterRAMPCPC+2,if([m]-1=0)ACC←[m]-1〈例〉ACC60H61HRAM62H63H00H00H00H05H03H……LOOP1:JMPLOOP1LOOP2:JMPLOOP2SDZ[60H]……SDZA[62H]MOVA,02H……04H04H04HMOVA,04H03H02H01HMOV[62H],A03H02H01H00H03H02H01H02H00H………SIZ[m]指令说明:
影响标志:
noneALUShifterRAMPC[m]←[m]+1,PC+2,if[m]=0SIZA[m]指令说明:
影响标志:
noneACCALUShifterRAMPCPC+2,if([m]+1=0)ACC←[m]+1〈例〉ACC60H61HRAM62H63H00H00HFEH00H77H……LOOP1:JMPLOOP1LOOP2:JMPLOOP2SIZ[61H]……SIZAACCMOVA,55H……FEHMOVA,FEHFFHFFH00H55H00H………调用及返回指令CALLaddr指令说明:影响标志:
noneSTACKROMPCPC+1PC←addrRET指令说明:影响标志:
noneSTACKPC〈例〉MOVA,20HCALL0123H…………RETORG0123HMOVA,30H……返回后再执行先执行PC+1值压入堆栈返回堆栈中的PC值……RETI指令说明:影响标志:
none该指令使用在中斷程序返回時,它同时将INTC的第0位(中斷使能位)置為1。EMI←1STACKPCRETA,X指令说明:
影响标志:
noneSTACKPCROMACC位操作指令位操作指令包括位逻辑操作指令、位条件转移指令。指令中的操作数都是1位的。这类指令的执行不影响标志位。CLR[m].i指令说明:将存储器内第i位值清零。 [m].i←0影响标志:none〈例〉CLR[20H].3运算前: [20H]=88H 10001000B运算后: [20H]=80H 10000000BSET[m].i指令说明:将存储器内第i位值置为1。 [m].i←1影响标志:none〈例〉SET[20H].3运算前: [20H]=10H 00010000B运算后: [20H]=18H 00011000BSZ[m].i指令说明:判断存储器内第i位值是否为0, 若为0则跳过下一行指令。 [m].i=0,PC+2影响标志:noneSNZ[m].i指令说明:判断存储器内第i位值是否为0, 若不为0则程序计数器加一, 跳过下一行指令。 Skipif[m].i≠0影响标志:none〈例〉SZ[20H].3运算前:
PC=0100H [20H]=18H运算后:
PC=0101H [20H]=18H〈例〉SZ[30H].3运算前:
PC=0100H [30H]=10H运算后:
PC=0102H [30H]=10H〈例〉SNZ[20H].4运算前:
PC=0100H [20H]=28H运算后:
PC=0101H [20H]=28H〈例〉SNZ[30H].4运算前:
PC=0100H [30H]=10H运算后:
PC=0102H [30H]=10H读表指令HOLTEK8位单片机的程序存储器除了存放程序外,还可以存放一些常数,称为表格。指令系统提供了2条访问程序存储器的指令,我们称为读表指令。读表指令的执行需要2个指令周期的时间。这类指令的执行不影响标志位。TABRDC[m]指令说明:查ROM当前页,由TBLP确定页内 地址。将该地址中数据的低8位 送到[m],高8位送到TBLH [m]←程序存储器低位 TBLH←程序存储器高位页:一页的大小为256个字节,即PC低八位 的范围为00H-FFH影响标志:noneTABRDL[m]指令说明:查ROM最后一页,由TBLP确定 页内地址。将该地址中数据 的低8位送到[m],高8位送到
TBLH [m]←程序存储器低位 TBLH←程序存储器高位影响标志:none〈例〉MOVA,70HTABRDC[48H]TABRDL[49H]TBLP48HRAM49H00H00H00H00H70H78H34H………TBLH…12H56HMOVTBLP,A017003701kROM1234H5678H…………最后页当前页其它指令HOLTEK8位单片机还提供了其它指令包括空指令、清除/置位数据存储器指令、看门狗清除指令、交换指令及进入HALT模式指令。NOP指令说明:不做任何运算,只将程序计 数器(PC)加一。
PC←PC+1影响标志:noneCLR[m]指令说明:将存储器内值清零。 [m]←00H影响标志:none〈例〉CLR[20H]运算前: [20H]=88H运算后: [20H]=00HSET[m]指令说明:将存储器内值置为1。 [m]←FFH影响标志:none〈例〉SET[20H]运算前: [20H]=88H运算后: [20H]=FFHCLRWDT指令说明:清除WDT计时器(从0开始重 数)。 WDT计时器←00H影响标志:PD=0,TO=0〈例〉CLRWDT运算前:
WDT计时器=88H运算后:
WDT计时器=00HCLRWDT1
&CLRWDT2指令说明:这两条指令必须交替使用才 能真正起到清除WDT计时器 的作用。
WDT计时器←00H可能影响标志:PD=0,TO=0当option选择以两条指令清看门狗时才使用。可有效的防止程序陷入死循环〈例〉LOOP:CLRWDT1CLRWDT2SZ[60H]JMPLOOP………………假设编程失误,致使LOOP中没有能让[60H]变化为0的语句SWAP[m]指令说明:
影响标志:noneALUShifterRAMD7D6D5D4D3D2D1D0MSB LSB76543210D3D2D1D0D7D6D5D476543210SWAPA[m]指令说明:
影响标志:noneACCALUShifterRAMD3D2D1D0D7D6D5D476543210D7D6D5D4D3D2D1D0MSB LSB76543210〈例〉SWAP[20H]运算前: [20H]=5AH运算后: [20H]=A5HHALT指令说明:停止程序执行;
关掉系统频率;
保留存储器及寄存器内的值; WDT和WDT计数器被清除;
电源下降位(PD)被设为1; WDT溢出位(TO)被清为0。影响标志:PD=1,TO=0其他信息MCU的开发流程及一些常用的副程序等内容,另有详细的介绍。指令部分的内容还可参阅各款单片机规格说明书的附录部分。指令集摘要
助记符说明影响标志位算术运算
ADDA,[m]ADDMA,[m]ADDA,XADCA,[m]ADCMA,[m]SUBA,XSUBA,[m]SUBMA,[m]SBCA,[m]SBCMA,[m]DAA[m]INCA[m]INC[m]加数据存储器结果放入累加器加数据存储器结果放入数据存储器加立即数结果放入累加器带进位加数据存储器结果放入累加器带进位加数据存储器结果放入数据存储器减立即数结果放入累加器减数据存储器结果放入累加器减数据存储器结果放入数据存储器带进位减数据存储器结果放入累加器带进位减数据存储器结果放入数据存储器根据加法运算结果以十进制调整累加器结果放入数据存储器递增数据存储器,结果放入累加器递增数据存储器Z,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVZ,C,AC,OVCZZ助记符说明影响标志位逻辑运算
ANDA,[m]ORA,[m]XORA,[m]ANDMA,[m]ORMA,[m]XORMA,[m]ANDA,XORA,XXORA,X将数据存储器和累加器做与运算,结果放入累加器将数据存储器和累加器做或运算,结果放入累加器将数据存储器和累加器做异或运算,结果放入累加器将数据存储器和累加器做与运算,结果放入数据存储器将数据存储器和累加器做或运算,结果放入数据存储器将数据存储器和累加器做异或运算,结果放入数据存储器将立即数和累加器做与运算,结果放入累加器将立即数和累加器做或运算,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村财务人员培训资料
- 创业家的风险管理与决策能力考核试卷
- 职业生涯规划职业选择
- 健身器材营销策略与品牌建设考核试卷
- 制糖业的市场营销策略考核试卷
- 制糖行业中的员工培训与激励机制研究考核试卷
- 农产品加工技术创新与产业升级考核试卷
- 家政老年人护理培训
- 技术转让协议合同
- 私人部分股份转让合同
- 教育哲学课件第七章-美学与美育
- 我国的社会保障-说课稿
- 焊材库管理规范
- 高海拔项目及项目职业健康安全保障措施方案
- GB∕T 13908-2020 固体矿产地质勘查规范总则
- 教科版科学三年级上册19个实验报告汇(可用于填写实验报告单)
- GSP表格药品养护质量汇总分析季度报表
- 《实干才能成就梦想》(修改)公开课
- 护士业务水平能力提升总结报告5篇
- 《技改方案模板》word版
- 《小熊开店》ppt课件
评论
0/150
提交评论