Holtek(合泰)單片機指令介紹_第1頁
Holtek(合泰)單片機指令介紹_第2頁
Holtek(合泰)單片機指令介紹_第3頁
Holtek(合泰)單片機指令介紹_第4頁
Holtek(合泰)單片機指令介紹_第5頁
已閱讀5頁,還剩131頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

HOLTEKMCU軟件指令介紹MCU概述指令系統(tǒng)概述HOLTEK指令系統(tǒng)MCU概述指令系統(tǒng)概述HOLTEK指令系統(tǒng)MCU概述(組成架構(gòu))MCU的基本結(jié)構(gòu)由以下幾個部分組成:PC (Programcounter程序計數(shù)器)

ROM (Programmemory程序存儲器)RAM (Datamemory數(shù)據(jù)存儲器)ACC (Accumulator累加器)ALU (Arithmeticandlogicunit算術(shù)邏 輯單元)

STATUS (Statusregister狀態(tài)寄存器)STACK (Stackregister堆棧寄存器)MCU概述指令系統(tǒng)概述HOLTEK指令系統(tǒng)指令系統(tǒng)概述分類尋址方式指令周期狀態(tài)寄存器指令中的常用符號分類HOLTEK8位系列單片機共有63條功能強大的匯編指令。這些指令按功能可分為以下七類。數(shù)據(jù)傳送指令算術(shù)運算指令邏輯運算指令控制和轉(zhuǎn)移指令位操作指令讀表指令其它指令尋址方式立即尋址:指令中直接給出操作數(shù)(立 即數(shù))

例: MOVA,直接尋址:指令中給出操作數(shù)的地址, 該方式只允許在存儲器之間傳 送數(shù)據(jù)

例:

MOV,A CLR33H[20H][30H]尋址方式間接尋址:用到間接尋址寄存器(R0, R1)進行尋址操作

例:

MOV,A特殊寄存器尋址:針對某一特殊寄存器 作運算

例:

CLR指針尋址:配合查表指令使用

例:

MOV,A

TABRDCACCR0WDTTBLP指令周期一個指令周期包括四個系統(tǒng)時鐘周期。指令的提取和執(zhí)行呈流水線工作。指令周期由于采用了流水線的工作方式,因此多數(shù)指令都能在1個指令周期內(nèi)執(zhí)行完成。查表指令是2周期指令。(若查表所得內(nèi)容的低8位送往PCL,則該指令的執(zhí)行就需要3個指令周期。)凡是使程序非順序執(zhí)行的指令,其執(zhí)行時間需要2個指令周期。(包括:JMP、CALL等,指令MOVPCL,A、以及SZ、SIZ等判斷條件成立時。)狀態(tài)寄存器零標志進位標志半進位標志溢出標志掉電標志W(wǎng)DT溢出標志指令中的常用符號X :8位立即數(shù)M :數(shù)據(jù)存儲器地址A :累加器I :0-7位Addr:程序存儲器地址← :數(shù)據(jù)傳送方向

MCU概述指令系統(tǒng)概述HOLTEK指令系統(tǒng)HOLTEK指令系統(tǒng)數(shù)據(jù)傳送指令(3條)算術(shù)運算指令(15條)邏輯運算指令(19條)控制和轉(zhuǎn)移指令(11條)位運算指令(4條)讀表指令(2條)其它指令(9條)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令是應(yīng)用最頻繁的指令助記符為MOV,其匯編語言指令格式為

MOV[目的字節(jié)],[源字節(jié)]指令功能是將源字節(jié)的內(nèi)容傳送到目的字節(jié),源字節(jié)的內(nèi)容不變。這類指令不影響標志位。MOVA,[m]指令說明:RAMACCMOV[m],A指令說明:

RAMACCMOVA,X指令說明:ROMACCMOVA,[50H]ACC50H51HRAM00H10H20H10H10H55HMOV[51H],AMOVA,55H〈例〉………算術(shù)運算指令算術(shù)運算指令包括加、減、加1、減1等指令。這類指令大都影響標志位。帶進位的加法指令ADCA,[m]指令說明:

影響標志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+CADCMA,[m]指令說明:影響標志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+C〈例〉A(chǔ)CC50H51HRAM55H10H10H66H76HADCA,[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〈例〉A(chǔ)CC60H61HRAM66H5BH22HC1HE3HADDA,[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〈例〉A(chǔ)CC53H54HRAM12H00H00H69HE1HMOVA,69HADDA,78HDAA[53H]1147H1………011010010111100011100001+0100011101100110+帶借位的減法指令SBCA,[m]指令說明:

影響標志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+CSBCMA,[m]指令說明:影響標志:OV,Z,AC,CACCALUShifterSTATUSRAMACC+[m]+C--000000STATUS--TOPDOVZACC〈例〉A(chǔ)CC70H71HRAME1H23H45HBDH78HSBCA,[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〈例〉A(chǔ)CC80H81HRAMBDH12H34HABH77HSUBA,[80H]SUBMA,[81H]11SUBA,56H155H………101010011010101101010100101010101++110010111010101101110110101110111++111011011011110110101010110101011++加1指令I(lǐng)NC[m]指令說明:影響標志:ZALUShifterRAM[m]+1INCA[m]指令說明:

影響標志:ZACCALUShifterRAM[m]+1減1指令DEC[m]指令說明:

影響標志:ZALUShifterRAM[m]-1DECA[m]指令說明:影響標志:ZACCALUShifterRAM[m]-1--000000STATUS--TOPDOVZACC〈例〉A(chǔ)CC90H91HRAM55HFEH20HFFH00HINC[90H]INCA[90H]10DEC[91H]DECA[91H]1FH1EH………邏輯運算指令邏輯運算指令包括與、或、異或、循環(huán)及求反指令。它們在執(zhí)行時大都影響標志位。邏輯與指令ANDA,[m]指令說明:影響標志:ZACCALUShifterRAMACC“AND”[m]ANDMA,[m]指令說明:影響標志:ZACCALUShifterRAMACC“AND”[m]ANDA,X指令說明:影響標志:ZROMALUShifterACCACC“AND”X〈例〉A(chǔ)NDA,[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

……控制和轉(zhuǎn)移指令控制和轉(zhuǎn)移指令包括無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、循環(huán)轉(zhuǎn)移指令及調(diào)用與返回指令。這類指令通過修改PC的內(nèi)容(占用2個指令周期)來控制程序的執(zhí)行過程,可極大的提高程序的效率,實現(xiàn)復雜的功能。它們在執(zhí)行時不影響標志位無條件轉(zhuǎn)移指令JMPaddr指令說明:

影響標志:

noneROMPC將要跳往的目的地地址直接送到程序計數(shù)器內(nèi)。PC←addr〈例〉MOVA,20HJMPDELAY………………DELAY:MOVA,30H……沒有執(zhí)行執(zhí)行條件轉(zhuǎn)移指令SZ[m]指令說明:

影響標志:

noneALUShifterRAMPCPC+2,if[m]=0SZA[m]指令說明:

影響標志:

noneACCALUShifterRAMPCPC+2,if[m]=0〈例〉A(chǔ)CC55H56HRAM57H58H34H00H00H12H78H……SZ[55H]SZ[56H]SZA[57H]SZA[58H]MOVA,00HMOVA,01HMOVA,02HMOVA,03H……00H34H03H………循環(huán)轉(zhuǎn)移指令SDZ[m]指令說明:

影響標志:

noneALUShifterRAMPC[m]←[m]-1,PC+2,if[m]=0SDZA[m]指令說明:

影響標志:

noneACCALUShifterRAMPCPC+2,if([m]-1=0)ACC←[m]-1〈例〉A(chǔ)CC60H61HRAM62H63H00H00H00H05H03H……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〈例〉A(chǔ)CC60H61HRAM62H63H00H00HFEH00H77H……LOOP1:JMPLOOP1LOOP2:JMPLOOP2SIZ[61H]……SIZAACCMOVA,55H……FEHMOVA,F(xiàn)EHFFHFFH00H55H00H………調(diào)用及返回指令CALLaddr指令說明:影響標志:

noneSTACKROMPCPC+1PC←addrRET指令說明:影響標志:

noneSTACKPC〈例〉MOVA,20HCALL0123H…………RETORG0123HMOVA,30H……返回后再執(zhí)行先執(zhí)行PC+1值壓入堆棧返回堆棧中的PC值……RETI指令說明:影響標志:

none該指令使用在中斷程序返回時,它同時將INTC的第0位(中斷使能位)置為1。EMI←1STACKPCRETA,X指令說明:

影響標志:

noneSTACKPCROMACC位操作指令位操作指令包括位邏輯操作指令、位條件轉(zhuǎn)移指令。指令中的操作數(shù)都是1位的。這類指令的執(zhí)行不影響標志位。CLR[m].i指令說明:將存儲器內(nèi)第i位值清零。 [m].i←0影響標志:none〈例〉CLR[20H].3運算前: [20H]=88H 10001000B運算后: [20H]=80H 10000000BSET[m].i指令說明:將存儲器內(nèi)第i位值置為1。 [m].i←1影響標志:none〈例〉SET[20H].3運算前: [20H]=10H 00010000B運算后: [20H]=18H 00011000BSZ[m].i指令說明:判斷存儲器內(nèi)第i位值是否為0, 若為0則跳過下一行指令。 [m].i=0,PC+2影響標志:noneSNZ[m].i指令說明:判斷存儲器內(nèi)第i位值是否為0, 若不為0則程序計數(shù)器加一, 跳過下一行指令。 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位單片機的程序存儲器除了存放程序外,還可以存放一些常數(shù),稱為表格。指令系統(tǒng)提供了2條訪問程序存儲器的指令,我們稱為讀表指令。讀表指令的執(zhí)行需要2個指令周期的時間。這類指令的執(zhí)行不影響標志位。TABRDC[m]指令說明:查ROM當前頁,由TBLP確定頁內(nèi) 地址。將該地址中數(shù)據(jù)的低8位 送到[m],高8位送到TBLH [m]←程序存儲器低位 TBLH←程序存儲器高位頁:一頁的大小為256個字節(jié),即PC低八位 的范圍為00H-FFH影響標志:noneTABRDL[m]指令說明:查ROM最后一頁,由TBLP確定 頁內(nèi)地址。將該地址中數(shù)據(jù) 的低8位送到[m],高8位送到

TBLH [m]←程序存儲器低位 TBLH←程序存儲器高位影響標志:none〈例〉MOVA,70HTABRDC[48H]TABRDL[49H]TBLP48HRAM49H00H00H00H00H70H78H34H………TBLH…12H56HMOVTBLP,A017003701kROM1234H5678H…………最后頁當前頁其它指令HOLTEK8位單片機還提供了其它指令包括空指令、清除/置位數(shù)據(jù)存儲器指令、看門狗清除指令、交換指令及進入HALT模式指令。NOP指令說明:不做任何運算,只將程序計 數(shù)器(PC)加一。

PC←PC+1影響標志:noneCLR[m]指令說明:將存儲器內(nèi)值清零。 [m]←00H影響標志:none〈例〉CLR[20H]運算前: [20H]=88H運算后: [20H]=00HSET[m]指令說明:將存儲器內(nèi)值置為1。 [m]←FFH影響標志:none〈例〉SET[20H]運算前: [20H]=88H運算后: [20H]=FFHCLRWDT指令說明:清除WDT計時器(從0開始重 數(shù))。 WDT計時器←00H影響標志:PD=0,TO=0〈例〉CLRWDT運算前:

WDT計時器=88H運算后:

WDT計時器=00HCLRWDT1

&CLRWDT2指令說明:這兩條指令必須交替使用才 能真正起到清除WDT計時器 的作用。

WDT計時器←00H可能影響標志:PD=0,TO=0當option選擇以兩條指令清看門狗時才使用。可有效的防止程序陷入死循環(huán)〈例〉LOOP:CLRWDT1CLRWDT2SZ[60H]JMPLOOP………………假設(shè)編程失誤,致使LOOP中沒有能讓[60H]變化為0的語句SWAP[m]指令說明:

影響標志:noneALUShifterRAMD7D6D5D4D3D2D1D0MSB LSB76543210D3D2D1D0D7D6D5D476543210SWAPA[m]指令說明:

影響標志:noneACCALUShifterRAMD3D2D1D0D7D6D5D476543210D7D6D5D4D3D2D1D0MSB LSB76543210〈例〉SWAP[20H]運算前: [20H]=5AH運算后: [20H]=A5HHALT指令說明:停止程序執(zhí)行;

關(guān)掉系統(tǒng)頻率;

保留存儲器及寄存器內(nèi)的值; WDT和WDT計數(shù)器被清除;

電源下降位(PD)被設(shè)為1; WDT溢出位(TO)被清為0。影響標志:PD=1,TO=0其他信息MCU的開發(fā)流程及一些常用的副程序等內(nèi)容,另有詳細的介紹。指令部分的內(nèi)容還可參閱各款單片機規(guī)格說明書的附錄部分。指令集摘要

助記符說明影響標志位算術(shù)運算

ADDA,[m]ADDMA,[m]ADDA,XADCA,[m]ADCMA,[m]SUBA,XSUBA,[m]SUBMA,[m]SBCA,[m]SBCMA,[m]DAA[m]INCA[m]INC[m]加數(shù)據(jù)存儲器結(jié)果放入累加器加數(shù)據(jù)存儲器結(jié)果放入數(shù)據(jù)存儲器加立即數(shù)結(jié)果放入累加器帶進位加數(shù)據(jù)存儲器結(jié)果放入累加器帶進位加數(shù)據(jù)存儲器結(jié)果放入數(shù)據(jù)存儲器減立即數(shù)結(jié)果放入累加器減數(shù)據(jù)存儲器結(jié)果放入累加器減數(shù)據(jù)存儲器結(jié)果放入數(shù)據(jù)存儲器帶進位減數(shù)據(jù)存儲器結(jié)果放入累加器帶進位減數(shù)據(jù)存儲器結(jié)果放入數(shù)據(jù)存儲器根據(jù)加法運算結(jié)果以十進制調(diào)整累加器結(jié)果放入數(shù)據(jù)存儲器遞增數(shù)據(jù)存儲器,結(jié)果放入累加器遞增數(shù)據(jù)存儲器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將數(shù)據(jù)存儲器和累加器做與運算,結(jié)果放入累加器將數(shù)據(jù)存儲器和累加器做或運算,結(jié)果放入累加器將數(shù)據(jù)存儲器和累加器做異或運算,結(jié)果放入累加器將數(shù)據(jù)存儲器和累加器做與運算,結(jié)果放入數(shù)據(jù)存儲器將數(shù)據(jù)存儲器和累加器做或運算,結(jié)果放入數(shù)據(jù)存儲器將數(shù)據(jù)存儲器和累加器做異或運算,結(jié)果放入數(shù)據(jù)存儲器將立即數(shù)和累加器做與運算,結(jié)果放入累加器將立即數(shù)和累加器做或運算,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論