微型嵌入式自編程控制器MEAPC
第三章 MEAPC指令表
MEAPC的指令系統(tǒng)由43條指令組成?赏瓿桑何贿\(yùn)算、數(shù)值運(yùn)算、邏輯運(yùn)算、移位、跳轉(zhuǎn)等功能。有一個(gè)“布爾處理器 P0”,通過(guò)它可以處理大量的位數(shù)據(jù)信息,在工控中非常有用。同時(shí)還有一些特殊功能的“宏指令”。只需少量的代碼就可方便地完成各種復(fù)雜的智能電路的設(shè)計(jì)。用它取代一些傳統(tǒng)的繼電器控制電路易如反掌!MEAPC的指令系統(tǒng)(見(jiàn)表3-1)。
自編程控制器MEAPC-C1指令表 表:3-1
序號(hào) |
指令 |
助記符 |
字節(jié) |
說(shuō)明 |
位處理指令 |
||||
1 |
0x |
CLR Px |
1 |
Px=0 ;x0~FH |
2 |
1x |
SET Px |
1 |
Px=1 |
3 |
2x |
IN Px |
1 |
P0=Px |
4 |
3x |
OUT Px |
1 |
Px=P0 |
5 |
4x |
AND Px |
1 |
Px與P0,結(jié)果在P0 |
6 |
5x |
OR Px |
1 |
Px或P0,結(jié)果在P0 |
7 |
6x |
NOT Px |
1 |
Px取反,結(jié)果在Px |
寄存器處理指令 |
||||
8 |
7x |
INC Rx |
1 |
Rx=Rx+1 |
9 |
8x |
DEC Rx |
1 |
Rx=Rx-1 |
10 |
9x |
CHE Rx |
1 |
交換R0,Rx中的內(nèi)容 |
11 |
Ax |
ADC Rx |
1 |
帶P0位加法: R0=R0+Rx+P0 |
12 |
Bx |
Bx |
1 |
指定標(biāo)號(hào):x=0~F |
13 |
Cx |
JMP x |
1 |
跳轉(zhuǎn)到指定標(biāo)號(hào):x=0~F |
14 |
Ex |
MRx,#d |
2 |
賦值:Rx=#d ;d=0~255 |
宏處理指令 |
||||
15 |
F0 |
JP0 |
1 |
P0=0,跳過(guò)一行 |
16 |
F1 |
JR0 |
1 |
R0=0,跳過(guò)一行 |
17 |
F2 |
LRP |
1 |
R0帶P0位左循環(huán)移1位 |
18 |
F3 |
MRP |
1 |
R0中的內(nèi)容并行送到P1~P8口 |
19 |
F4 |
10mS |
1 |
延時(shí) 10毫秒 |
20 |
F5 |
100mS |
1 |
延時(shí) 100毫秒 |
21 |
F6 |
1S |
1 |
延時(shí) 1秒 |
22 |
F7 |
ST0 |
1 |
將R0R1中的值送入T0計(jì)數(shù)器后,啟動(dòng)T0計(jì)數(shù)器 |
23 |
F8 |
RT0 |
1 |
讀出T0計(jì)數(shù)器的值,存入R0R1中,P15溢出標(biāo)志。 |
24 |
F9 |
CT0 |
1 |
關(guān)閉T0計(jì)數(shù)器,并讀出T0計(jì)數(shù)器的值,存入R0R1 |
25 |
FA |
BCD |
1 |
R0R1中16位二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼,存入R0R1R2R3R4 |
26 |
FB |
SEG |
1 |
用R0中的序號(hào),讀取相應(yīng)的字符段碼,存入R0 |
27 |
FC |
SPI |
1 |
當(dāng)P0=0時(shí):R0中的值從低位開(kāi)始,串行輸出到P1口,P2輸出8個(gè)移位負(fù)脈沖;當(dāng)P0=1時(shí):將P1口的數(shù)據(jù)串行輸入到R0中,P2輸出8個(gè)移位負(fù)脈沖。 |
28 |
FD |
WRE |
1 |
將R0中的值寫(xiě)入R1指定的E224單元。(范圍:0~255) |
29 |
FE |
RDE |
1 |
讀取R1指定的E224單元的值,存入R0。(范圍:0~255) |
30 |
FF |
PWN |
1 |
進(jìn)入掉電狀態(tài)。 |
31 |
D0 |
REP |
1 |
返回到程序的開(kāi)始行 |
32 |
D1 |
AND |
1 |
R0與R1,結(jié)果在R0 |
33 |
D2 |
OR |
1 |
R0或R1,結(jié)果在R0 |
34 |
D3 |
NOT |
1 |
R0取反,結(jié)果在R0 |
35 |
D4 |
JMP R14 |
1 |
上跳R14中指定的行數(shù),范圍(0~255) |
36 |
D5 |
JMP R15 |
1 |
下跳R15中指定的行數(shù),范圍(0~255) |
偽指令 |
||||
37 |
D9 |
SEE |
查看程序的長(zhǎng)度,并寫(xiě)入E224中,地址:200H,201H |
|
38 |
DA |
COPYM |
控制板上E224中的值復(fù)制到編程板上E224中 編程板上E224中的值復(fù)制到控制板上E224中 編程指針倒退3行 編程指針回到第1行 編程指針回到中間行 編程指針回到最后1行 |
|
39 |
DB |
COPYS |
||
40 |
DC |
BACK |
||
41 |
DD |
START |
||
42 |
DE |
MID |
||
43 |
DF |
END |
||
說(shuō)明:
|
第四章 指令系統(tǒng)使用詳解
本章以指令的序號(hào)順序,敘述每條指令的功能并舉例。除了指令:MRx是2字節(jié)外,其余均是單字節(jié)指令。使用時(shí)請(qǐng)注意以下幾點(diǎn):
1、D9~DF指令是偽指令,不會(huì)寫(xiě)入EE24中。
2、P代表:位。
3、R代表:8位寄存器。
4、只有指令:ADC Rx 影響P0位。
5、Bx指令為程序提供了16個(gè)標(biāo)號(hào),便于編程。如果不夠用,可以使用:JMPR14、JMPR15指令完成間接跳轉(zhuǎn)(詳見(jiàn)MEAPC-C1指令表3-1)。
6、輸入數(shù)據(jù)必須采用16進(jìn)制。16進(jìn)制表示:xxH ;10進(jìn)制:xx ;2制:xxB。編寫(xiě)程序時(shí)為了便于閱讀,助記符的數(shù)字一般采用10進(jìn)制書(shū)寫(xiě)。
數(shù)字:0~15的十進(jìn)制、二進(jìn)制、十六進(jìn)制之間轉(zhuǎn)換關(guān)系見(jiàn)表4-1
十進(jìn)制、二進(jìn)制、十六進(jìn)制之間轉(zhuǎn)換關(guān)系 表:4-1
十進(jìn)制 |
二進(jìn)制 |
十六進(jìn)制 |
十進(jìn)制 |
二進(jìn)制 |
十六進(jìn)制 |
|
0 |
00000000B |
00H |
8 |
00001000B |
08H |
|
1 |
00000001B |
01H |
9 |
00001001B |
09H |
|
2 |
00000010B |
02H |
10 |
00001010B |
0AH |
|
3 |
00000011B |
03H |
11 |
00001011B |
0BH |
|
4 |
00000100B |
04H |
12 |
00001100B |
0CH |
|
5 |
00000101B |
05H |
13 |
00001101B |
0DH |
|
6 |
00000110B |
06H |
14 |
00001110B |
0EH |
|
7 |
00000111B |
07H |
15 |
00001111B |
0FH |
§ 4-1 位操作指令
1: 0x CLR Px ;x=0~F
例: 已知:P0=1 執(zhí)行:
00 CLR P0 ;P0位清零
結(jié)果:P0=0
2: 1x SET Px ;
例: 已知:P15=0 執(zhí)行:
1F SET P15 ;P15位置1
結(jié)果:P15=1
3: 2x IN Px ;x=0~F
例: 已知:P7=1 ;P0=0 執(zhí)行:
27 IN P7 ;讀入P7位的數(shù)據(jù)到P0位
結(jié)果:P0=1
4: 3x OUT Px ;
例: 已知:P8=0 ;P0=1 執(zhí)行:
38 OUT P8 ;P0位的數(shù)據(jù)送到P8位
結(jié)果:P8=1
5: 4x AND Px ;x=0~F
例: 已知:P10=0 ;P0=1 執(zhí)行:
4A AND P10 ;P10位邏輯與P0位,結(jié)果送P0位。
結(jié)果:P0=0
6: 5x OR Px ;
例: 已知:P11=0 ;P0=1 執(zhí)行:
5B OR P11 ;P11位邏輯或P0位,結(jié)果送P0位。
結(jié)果:P0=1
7: 6x NOT Px ;x=0~F
例: 已知:P12=0 執(zhí)行:
6C NOT P12 ;P12位取反,結(jié)果送P12位
結(jié)果:P12=1
§ 4-2 寄存器指令
8: 7x INC Rx ;x=0~F
例: 已知:R2=3 執(zhí)行:
70 INC R2 ;R2寄存器加1,不影響P0位
結(jié)果:R2=4
9: 8x DEC Rx ;x=0~F
例: 已知:R1=8 執(zhí)行:
81 DEC R1 ;R1數(shù)據(jù)減1
結(jié)果:R1=7
10: 9x CHE Rx
例: 已知:R0=8;R10=15 執(zhí)行:
9A CHE R10 ;R10和P0的數(shù)據(jù)交換
結(jié)果:R0=15;R10=8
11: Ax ADC Rx ;
例: 已知:R0=5;P0=1;R10=20 執(zhí)行:
AA ADC R10 ;R10加P0位加R0,結(jié)果送R0
結(jié)果:R0=26
12: Bx Bx ;產(chǎn)生標(biāo)號(hào)
例: 00 CLR P0
11 SET P1
B0 B0:B0
02 CLR P2
63 NOT P3
70 INC R0
C0 JMP B0
13: Cx JMP x ;見(jiàn)Bx指令
14: Ex MRx ,#d ;(2字節(jié))
例: 已知:R5=8; 執(zhí)行:
E5 C8 MR5,#200 ;200送入R5寄存器
結(jié)果:R5=200
§ 4-3 轉(zhuǎn)移指令
15: F0 JP0
如果 P0位=0 ,則跳過(guò)一行 ,否則 順序執(zhí)行
例:(采用間接跳轉(zhuǎn)指令:JMP R14)
EE 02 MR14 ,#2 ;設(shè)置上跳轉(zhuǎn)的行數(shù)
。。。
L0: ;標(biāo)號(hào)
00 P0=0 ;P0=0
F0 JP0 ;跳行
D4 JMP R14 ;上跳2行 (見(jiàn)指令表)
L1: ;繼續(xù)執(zhí)行
。。。
程序?qū)⑦M(jìn)入L1標(biāo)號(hào)繼續(xù)執(zhí)行,如果令P0=1,則程序進(jìn)入L0標(biāo)號(hào)執(zhí)行。
例:(采用標(biāo)號(hào)指令:Bx)
。。。
B0:B0 B0
00 CLR P0
F0 JP0 ;跳行
C0 JMP B0 ;跳到B0行
;繼續(xù)執(zhí)行
。。。。
16: F1 JR0 ;當(dāng)R0=0 則跳行 (見(jiàn)JP0指令)
17: F2 LRP ;
例: 已知:R0=5;(00000101B);P0=0 執(zhí)行:
F2 LRP ;R0代P0位循環(huán)左移1位,結(jié)果送R0
結(jié)果:R0=0A0 (00001010B)
18: F3 MRP ;R0的值8位并行送到P1~P8位,P1對(duì)應(yīng)低位。
例: 已知: R0=0FFH ;P1~P8=0
E0 FF MR0,#0FFH
F3 MRP
結(jié)果: R0=0FF ;P1~P8=1
19~21: F4,F5,F6 ;延時(shí)不同時(shí)間 (見(jiàn)指令表)
例4-1: 延時(shí)3S程序
程序1:
EE 03 MR14 ,#3 ;設(shè)定上跳的行數(shù)
E0 32 MR0 ,#3 ;賦值R0=3
L0:
F6 1S ;延時(shí)1S
80 DEC R0 ;R0=R0-1
F1 JR0 ;R0=0 跳行到L1執(zhí)行
D4 JMP R14 ;上跳3行
L1:
。。。。
程序2:
F6 1S
F6 1S
F6 1S
程序進(jìn)入延時(shí)后,計(jì)數(shù)器不影響工作。
22~24: 控制計(jì)數(shù)器T0的指令,要求外部脈沖是下降沿。
F7 ST0 ;將R0R1中的值送入T0計(jì)數(shù)器,啟動(dòng)T0計(jì)數(shù)器
F8 RT0 ;讀出T0計(jì)數(shù)器的值,存入R0R1中,P15溢出標(biāo)志。
F9 CT0 ;關(guān)閉T0計(jì)數(shù)器,并讀出T0計(jì)數(shù)器的值,存入R0R1中
說(shuō)明: RT0 指令采用了“飛讀”方法,不會(huì)產(chǎn)生錯(cuò)相。
例4-2: 記錄外部5個(gè)脈沖后,停止計(jì)數(shù)并使P1=1
(采用比較法實(shí)現(xiàn))
E0 05 MR0 ,#05 ;設(shè)置5個(gè)脈沖
DB NOT ;求R0的補(bǔ)碼
70 INC R0 ;+1
92 CHE R2 ;R2=FBH (05的補(bǔ)碼)
E0 00 MR0 ,#0 ;R0清 0
E1 00 MR1 ,#0 ;R1清0
EE 04 MR14 ,#04 ;上跳4行
F7 ST0 ; 啟動(dòng)T0計(jì)數(shù)
L0:
F8 RT0 ;讀T0 放入R0R1(16位2進(jìn)制,R0是高位)
91 CHE R1 ;交換R0,R1
A2 ADC R2 ;R0=R0+R2
F1 JR0 ;等于5個(gè)脈沖,跳行
D4 JMP R14
L1:
F9 CT0 ;停止T0計(jì)數(shù)
11 SET P1 ;P1=1
。。。
例4-3: (采用T0溢出法實(shí)現(xiàn)。)
01 CLR P1
E0 FF MR0 ,#0FFH ;R0R1=FFFB+5=10000 溢出
E1 FB MR1 ,#0FBH ;
0F CLR P15 ;清標(biāo)志
EE 02 MR14 ,#02 ;上跳2行
F7 ST0 ; 啟動(dòng)T0計(jì)數(shù),T0=0FFFBH
L0:
2F IN P15 ;P0=P15
F0 JP0 ;等待溢出,跳1行
D4 JMP R14
L1:
F9 CT0 ;停止T0計(jì)數(shù)
11 SET P1 ;P1=1
。。。
25: FA BCD ;2進(jìn)制轉(zhuǎn)換成10進(jìn)制
例4-4: 把:16進(jìn)制數(shù):033FFH 轉(zhuǎn)換成10進(jìn)制數(shù)
E0 33 MR0 ,#33H
E1 FF MR1 ,#0FFH ;設(shè)置數(shù)據(jù):033FFH
FA BCD ;轉(zhuǎn)換
結(jié)果: R0=01(萬(wàn));R1=3(千);R2=3(百);R3=1(十);R4=1(個(gè))
033FFH=13311
26: FB SEG ;提取相應(yīng)數(shù)字的字符碼 (見(jiàn)字符碼表4-1) 例4-5: 已知:R0=9
FB SEG
結(jié)果: R0=01111111B ;“9”的字符碼按ABCDEFGH從高到低排列。
例4-6: 顯示“9。”
E0 09 MR0,#09 ;R0=9
E1 20 MR1,#32 ;間隔系數(shù)32
00 CLR P0 ;清P0
A1 ADC R1 ;指向“9!
FB SEG
結(jié)果: R0=1111111111111B;“9!钡淖址a
字符碼 表:4-2
序號(hào) |
字符 |
字符碼 |
序號(hào) |
字符 |
字符碼 |
|
0 |
“0” |
11111100B |
21 |
“o” |
00111010B |
|
1 |
“1” |
01100000B |
22 |
“P” |
11001110B |
|
2 |
“2” |
11011010B |
23 |
“q” |
11100110B |
|
3 |
“3” |
11110010B |
24 |
“r” |
00001010B |
|
4 |
“4” |
01100110B |
25 |
“S” |
10110110B |
|
5 |
“5” |
10110110B |
26 |
“U” |
01111100B |
|
6 |
“6” |
10111110B |
27 |
“u” |
00111000B |
|
7 |
“7” |
11100000B |
28 |
“ ” |
00000000B |
|
8 |
“8” |
11111110B |
29 |
“8.” |
11111111B |
|
9 |
“9” |
11110110B |
30 |
“-” |
00000010b |
|
10 |
“A” |
11101110B |
31 |
“t” |
00011110b |
|
11 |
“b” |
00111110B |
32 |
“0.” |
11111101B |
|
12 |
“C” |
10011100B |
33 |
“1.” |
01100001B |
|
13 |
“d” |
01111010B |
34 |
“2.” |
11011011B |
|
14 |
“E” |
10011110B |
35 |
“3.” |
11110011B |
|
15 |
“F” |
10001110B |
36 |
“4.” |
01100111B |
|
16 |
“H” |
01101110B |
37 |
“5.” |
10110111B |
|
17 |
“L” |
00011100B |
38 |
“6.” |
10111111B |
|
18 |
“N” |
11101100B |
39 |
“7.” |
11100001B |
|
19 |
“n” |
00101010B |
40 |
“8.” |
11111111B |
|
20 |
“O” |
11111100B |
41 |
“9.” |
11110111B |
|
說(shuō)明 |
字符碼的排列順序:a b c d e f g h= D7 D6 D5 D4D D3D D2D D1D 0 |
27: FC SPI ;建立SPI接口,P1:數(shù)據(jù),P2:時(shí)鐘
說(shuō)明:當(dāng)P0=0時(shí):輸出數(shù)據(jù),P2腳輸出8個(gè)脈沖。
當(dāng)P0=1時(shí):輸入數(shù)據(jù),P2腳輸出8個(gè)脈沖。
見(jiàn)波形圖4-1:
D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7
P1
P2
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
P0=0:寫(xiě)時(shí)序 P0=1:讀時(shí)序
28: FD WRE ;寫(xiě)數(shù)據(jù)到E224單元
例3: 把數(shù)據(jù)28H 寫(xiě)入E224的30H單元。
E1 30 MR1,#30H ;設(shè)置E224的地址
E0 28 MR0,#28H ;數(shù)據(jù)28H放入R0
FD WRE ;寫(xiě)入
29: FE RDE ;從E224單元讀數(shù)據(jù)
例3: 把E224的30H單元的數(shù)據(jù)讀出。
E1 30 MR1,#30H ;設(shè)置E224的地址
FE RDE ;讀出
結(jié)果: R0=28H
30: FF PWN ;停機(jī)并進(jìn)入掉電狀態(tài)
程序結(jié)束后,進(jìn)入掉電狀態(tài),降低功耗。
31: D0 REP ;程序返回首行繼續(xù)執(zhí)行
例: 在P1腳產(chǎn)生寬度約:800uS的脈沖串
61 NOT P1
D0 REP ;返回
32~34: D1 AND ;R0邏輯“與”R1,結(jié)果在R0
D2 OR ;R0邏輯“或”R1,結(jié)果在R0
D3 NOT ;R0取反,結(jié)果在R0
例: R0=0FFH ;R1=01 ;求 R0“與”R1
E0 FF MR0 ,#0FFH
E1 01 MR1 ,#01
D1 AND
結(jié)果: R0=01H ;R1=01H
例: R0=0FFH ;R1=01 ;求 R0“或”R1
E0 FF MR0 ,#0FFH
E1 01 MR1 ,#01
D2 OR
結(jié)果: R0=0FFH ;R1=01H
例:
R0=0FFH ;R1=01
;求 R0“反”
E0
FF MR0 ,#0FFH
D3 NOT
結(jié)果: R0=00H
35: F4 JMP R14 ;上跳1~255行(見(jiàn)例4-1)
36: F5 JMP R15 ;下跳1~255行(同 JMP R14)
當(dāng)R14、R15=0時(shí),進(jìn)入死循環(huán),要避免!
§ 4-4 轉(zhuǎn)移指令
37: D9 SEE
說(shuō)明:程序輸入完畢后,請(qǐng)輸入(D9),LED數(shù)碼管分兩次顯示程序的長(zhǎng)度,先顯示地位字節(jié),再顯示高位字節(jié)。
38: DA COPYM
說(shuō)明:程序輸入完畢后,請(qǐng)輸入(DA),MEAPC-C主控板內(nèi)的程序,將拷貝到MEAPC-P編程板上,LED數(shù)碼管顯示正在拷貝的地址。
39: DB COPYS
說(shuō)明:程序輸入完畢后,請(qǐng)輸入(DB),MEAPC-P編程板內(nèi)的程序,將拷貝到MEAPC-C主控板上,LED數(shù)碼管顯示正在拷貝的地址。
40: DC BACK
說(shuō)明:程序輸入時(shí),輸入(DC),將退回一行。
41~43: DD START
DE MID
DF END
說(shuō)明:程序輸入時(shí),控制編程指針的位置。
§ 4-5 MEAPC應(yīng)編程技巧 程序1段 JMP R15 (到程序2段) |
空指令 |
程序2段 JMP R15 (到程序3段) |
空指令 |
程序3段 JMP R15 |
MR0,#08;移位8次
B0: B0CHE R1 ;R0=R1
LRP ;R0代P0位左移1位
OUT P5
CLR P6
SET P6 ;P6腳輸出正脈沖
CHE R1 ;恢復(fù)R0值
DEC R0 ;指針減一
JR0
JMP B0
;輸出完畢!
。。。
4:用P1~P8口并行輸出字符碼,驅(qū)動(dòng)LED數(shù)碼管(當(dāng)程序執(zhí)行周期>20mS時(shí),不宜采用!) 例:將R2、R3中存放的BCD碼轉(zhuǎn)換成字符碼輸出 CHE R2 ;取R2數(shù)據(jù)到R0 SEG ;轉(zhuǎn)換成字符碼 MRP ;并行輸出 CLR P9 ;點(diǎn)亮LED1數(shù)碼管 CHE R3 ;取R3數(shù)據(jù)到R0 SET P9 ;關(guān)閉LED1數(shù)碼管 SEG ;轉(zhuǎn)換成字符碼 MRP ;并行輸出 CLR P10 ;點(diǎn)亮LED2數(shù)碼管 D6 ;空指令,延時(shí)400uSSET P9 ;關(guān)閉LED2數(shù)碼管
點(diǎn)擊進(jìn)入:MEAPC介紹資料3
相關(guān)鍵連:AT89C2051的智能時(shí)鐘
微型嵌入式自編程控制器MEAPC 缺貨中
銀行帳號(hào)及郵購(gòu)需知 立即進(jìn)入訂貨系統(tǒng)! 查看全部郵購(gòu)清單
郵局匯款地址:郵編226200 江蘇省啟東市江海中路511號(hào)水晶苑 A1 謝剛 收
電話/傳真:0513-83342087 小靈通:0513-83082087 聯(lián)系人:謝剛
電子信箱: