第三章 MCS-51系列單片_第1頁(yè)
第三章 MCS-51系列單片_第2頁(yè)
第三章 MCS-51系列單片_第3頁(yè)
第三章 MCS-51系列單片_第4頁(yè)
第三章 MCS-51系列單片_第5頁(yè)
已閱讀5頁(yè),還剩110頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一節(jié) 匯編語(yǔ)言與指令系統(tǒng)一 、匯編語(yǔ)言程序設(shè)計(jì)的重要性 對(duì)于要求反應(yīng)靈敏性高的實(shí)時(shí)控制系統(tǒng)以及要求體積小系統(tǒng)小的許多“電腦化”產(chǎn)品,應(yīng)用匯編語(yǔ)言特別好。二、MCS51系統(tǒng)單片機(jī)的指令系統(tǒng) 通常用符號(hào)指令(即匯編語(yǔ)言)來(lái)描述計(jì)算機(jī)的指令系統(tǒng)。MCS51的指令系統(tǒng)有42種操作碼助記符,用來(lái)描述33種操作功能(因?yàn)橛械牟僮鞴δ芸捎枚喾N助記符)共有111條指令。1、指令分類、指令分類 按字節(jié)數(shù)分:按字節(jié)數(shù)分: 49條 單字節(jié)指令 操作碼 45條 雙字節(jié)指令 操作碼 數(shù)據(jù)或?qū)ぶ贩绞?17條 三字節(jié)指令 操作碼 數(shù)據(jù)或?qū)ぶ贩绞?數(shù)據(jù)或?qū)ぶ贩绞?按指令執(zhí)行時(shí)間分:按指令執(zhí)行時(shí)間分: 64條 單周期指令 1

2、2T 45條 雙周期指令 24T 2條 四周期指令(乘除) 48T 按功能分:按功能分: 數(shù)據(jù)傳送類 27條 1 算術(shù)運(yùn)算類 24條 SWAP 邏輯運(yùn)算類 24條 + 1 控制轉(zhuǎn)移類 17條 + 5 判位轉(zhuǎn)移指令 布爾處理類 17條 52、常用的縮寫(xiě)符號(hào)、常用的縮寫(xiě)符號(hào) 在描述MCS51指令系統(tǒng)的功能時(shí),我門(mén)經(jīng)常使用下面的縮寫(xiě)符號(hào),其意義如下: A 累加器ACC * 乘 AB 累加器ACC和寄存器B組成的寄存器 / 除 direct 直接地址 與#data 立即數(shù),表示一 個(gè)常數(shù) 或 間接尋址 異或 大于 不等于 傳送 寄存器 ( ) 寄存器內(nèi)容() 由寄存器尋址的存儲(chǔ)器單元內(nèi)容( ) 寄存器

3、的內(nèi)容取反 r r r 指令編碼中r r r三位值由工作寄存器Rn確定, R0R7對(duì)應(yīng)的r r r為000111。$ 指本條指令起始地址(指令地址)rel 相對(duì)偏移量,其值為128 +127 第二節(jié)第二節(jié) 尋址方式尋址方式 指令給出參與運(yùn)算的數(shù)據(jù)的形式稱為尋址方式。MCS51的指令系統(tǒng)包含了以下6種指令尋址方式。 一一 、立即尋址、立即尋址 指令字節(jié)中包含了 操作數(shù),該操作數(shù)便被 稱為立即數(shù)。 例如 MOV A, #70H 其指令執(zhí)行過(guò)程見(jiàn)左圖二、寄存器尋址二、寄存器尋址 由指令指出某一寄存器(R0R7 、 A 、 B 、 CY 、 AB 、 DPTR)的內(nèi)容作為操作數(shù)。 例如 INC R0;

4、 (R0)+ 1 R0 其指令執(zhí)行過(guò)程見(jiàn)下圖:三、寄存器間接尋址三、寄存器間接尋址 由指令指出某一寄存器(R0 、R1 、 DPTR)的內(nèi) 容作為操作數(shù)的地址。訪問(wèn)的存儲(chǔ)空間:內(nèi)部RAM(00H0FFH),外部RAM。 如 ANL A,R0;(A)(R0) A 其指令執(zhí)行過(guò)程見(jiàn)下圖: 四四 、直接尋址、直接尋址 指令中含有操作數(shù)的直接地址,該地址表達(dá)參與傳送或運(yùn)算的數(shù)據(jù)所在的字節(jié)單元或位單元的地址。此方式可訪問(wèn)以下四種存儲(chǔ)空間: 特殊功能寄存器SFR(只能用直接尋址) 內(nèi)部數(shù)據(jù)RAM 低 128B(00H7FH) 位地址空間 程序存儲(chǔ)器(0000H0FFFFH) 如 ANL 70H,#48H;

5、(78H)48H 70H 其指令執(zhí)行過(guò)程見(jiàn)下圖:五、基寄存器加變址寄存器間接尋址五、基寄存器加變址寄存器間接尋址 即以PC或DPTR為基寄存器,以A作為變址寄存器,二者間內(nèi)容相加形成16位的地址,該地址即為操作數(shù)的地址。訪問(wèn)空間是程序存儲(chǔ)器。 例 MOVC A,A+PC; (A)+(PC) A MOVC A,A+DPTR;(A)+(DPTR) A六、相對(duì)尋址六、相對(duì)尋址 (PC)+指令中的偏移量rel(128+127) 轉(zhuǎn)移地址。 例 JC 80H;C=1時(shí)執(zhí)行過(guò)程如下圖所示: 七、七、MCS51不同存儲(chǔ)空間與所用指令及其尋址方式的不同存儲(chǔ)空間與所用指令及其尋址方式的對(duì)應(yīng)關(guān)系對(duì)應(yīng)關(guān)系 見(jiàn)表2-

6、5八、數(shù)據(jù)操作八、數(shù)據(jù)操作 MCS51系列單片機(jī)能對(duì)位、半字節(jié)、字節(jié)和雙字節(jié)數(shù)據(jù)進(jìn)行各種操作。為保存數(shù)據(jù)操作的結(jié)果標(biāo)志, MCS51系列單片機(jī)在特殊功能寄存器中包含一個(gè)狀態(tài)字寄存器PSW,其格式和功能如下:進(jìn)位標(biāo)志或位處理機(jī)的累加器C輔助進(jìn)位標(biāo)志用戶標(biāo)志位工作寄存器選擇高 位工作寄存器選擇低 位溢出標(biāo)志用戶標(biāo)志位進(jìn)位標(biāo)志第三節(jié)第三節(jié) 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送類指令有29條,是指令系統(tǒng)中量最多、使 用也最多的指令。其數(shù)據(jù)傳送操作如下圖所示:direct (直接尋址)Ri(間接尋址)Rn寄存器data立即數(shù)累加器A一一 、以累加器、以累加器A為目的操作數(shù)的指令(為目的操作數(shù)的指令(4

7、條)條) 機(jī)器碼MOV A , Rn ; 1110 1r r r (Rn)(A)MOV A , direct ; 1110 0101 (direct)(A) directMOV A , Ri ; 1110 011i (Ri)(A)MOV A , #data ; 1111 0100 #datd(A) #data 其中 r r r R0R7 000 R0 001 R1 010 R2 011 R3 100 R4 101 R5 110 R6 111 R7 i=0 時(shí) R0 R0 i=1 時(shí) R1 R1 二、二、以以Rn為目的操作數(shù)的指令(為目的操作數(shù)的指令(3條)條) MOV Rn , A ; (A)

8、 (Rn ) MOV Rn , direct ; (direct ) (Rn) MOV Rn , #data ; #data (Rn) 三、以直接尋址的單元為目的操作數(shù)的指令(三、以直接尋址的單元為目的操作數(shù)的指令(5條)條) MOV direct , A ; (A) (direct) MOV direct , Rn ; (Rn) (direct) MOV direct , direct; 85H 源地址 目的地址 MOV direct , Ri ; (Ri) (direct) MOV direct , #data ; #data (direct)四、以寄存器間接尋址的單元為目的操作數(shù)的指令四

9、、以寄存器間接尋址的單元為目的操作數(shù)的指令 (3條)條) MOV Ri , A; (A) (Ri) MOV Ri , direct; (direct) (Ri) MOV Ri , #data ; #data (Ri) 若direct(直接地址)是P0口P3口,則表明是對(duì)口 進(jìn)行操作 例 MOV P1 , A ; (A) (P1口)若不寫(xiě)P1口, 指令可寫(xiě)成 MOV 90H , A 以上指令中,累加器A特別重要。因?yàn)镃PU對(duì)它具有寄存器所沒(méi)有的操作指令五、五、16位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令 MOV DPTR ,#data16; 90H 高8位 低8位 即 高8位DPH 低8位DPL 例 設(shè)(7

10、0H)=60H,(60H)=20H,P1口為輸入口,當(dāng)前(P1)=0B7H,執(zhí)行下面程序的結(jié)果是什么? MOV R0,#70H;70H R0 R0 MOV A , R0;(R0)=(70H)=60H A MOV R1,A ; (A)=60H R1 R1 MOV B , R1;(R1)=(60H)=20H B MOV R0,P1 ;(P1)=0B7H (R0)= (70H)=0B7H (70H)=0B7H (60H)=20H (B)=20H (A)=60H (R1)=60H (R0)=70H 執(zhí)行前: 內(nèi)部 RAM : 60H 20H : 70H 60H : 執(zhí)行后: 內(nèi)部 RAM : 60H

11、20H : 70H B7H :六、棧操作指令六、棧操作指令 1 、進(jìn)棧指令 PUSH direct;(SP)+1 (SP),(direct) (sp)例 設(shè) (SP)=60H (ACC)=30H (B)=70H執(zhí)行下述指令 PUSH ACC ;(SP)+1 (SP) 即61H (SP), (ACC)=30H (SP)=(61H) PUSH B ;(SP)+1 (SP) 即62H (SP), (B)=70H (SP)=(62H) 結(jié)果 (61H)=30H (62H)=70H (SP)=6 棧及堆棧指針的變化見(jiàn)下圖: SP+162H 70HSP+161H 30H SP60H SP62H 70HSP

12、161H 30HSP160H 2 、退棧指令 POP direct; (SP) (direct) , (SP)1 (SP) 例 設(shè) (SP)=62H (62H)=70H (61H)=30H 執(zhí)行下述指令 POP DPH ; (SP)=(62H )=70H (DPH ) , (SP) 1 (SP) 即61H (SP ) POP DPL ; (SP)=(61H )=30H (DPL ) , (SP) 1 (SP) 即60H (SP ) 結(jié)果 (SP)=60H (DPTR)=7030H 棧及堆棧指針的變化見(jiàn)上圖。 七、字節(jié)交換指令七、字節(jié)交換指令 XCH A,Rn; (A)(Rn) XCH A,di

13、rect; (A)(direct) XCH A,Ri ; (A)(Ri) ) 八、半字節(jié)交換指令八、半字節(jié)交換指令 XCHD A,Ri ; (A)03(Ri) )03 SWAP A ; (A)03(A )47 例 (A)=15H (R0)=30H (30H)=34H XCHD A,R0 結(jié)果 (A)=14H (30H)=35H 九、累加器九、累加器A與外部數(shù)據(jù)存儲(chǔ)器傳送指令與外部數(shù)據(jù)存儲(chǔ)器傳送指令 MOVX A,DPTR;(DPTR) (A)MOVX A,Ri ;(P2)(Ri) (A) MOVX DPTR,A ;(A) (DPTR)MOVX Ri ,A ;( A )( (P2)(Ri) 十、

14、查表指令十、查表指令 1 、 MOVC A,A+PC (A)+(PC) (A) 例 (A)=30H 指令 1000H 83H MOVC A,A+PC執(zhí)行后的結(jié)果 (PC)+(A)=(1001H+30H) =(1031H) (A) 顯然PC與該查表指令的地址有關(guān), (A)=00H0FFH(256),因此所查的表格只能存放在該查表指令以下的 256單元內(nèi),表格的大小也受到此限制。 例 ORG 8000H 8000H E430 MOV A ,#30H 8002H 83 MOVC A,A+PC : : ORG 8030H DB 41H,42H,43H, 44H,45H DB 46H,47H,48H,

15、49H,4AH : : (PC)=8003H (A)=30H (PC)+(A)=(8003H+30H)=(8033H)=44H 44H (A) 即 (A)=44H 2 、 MOVC A,A+DPTR;(A)+(DPTR) (A) 顯然上述指令與指令存放地址無(wú)關(guān),因此所查的表格的大小及位置可在程序存儲(chǔ)器中的任意位置。十一、數(shù)據(jù)傳送類指令匯總一覽表十一、數(shù)據(jù)傳送類指令匯總一覽表 見(jiàn)表3-1第四節(jié)第四節(jié) 算術(shù)操作指令算術(shù)操作指令 算術(shù)操作類指令有24條。 一、加法指令一、加法指令 1 、不帶進(jìn)位的加法指令 ADD A,Rn ;(Rn)+(A) (A)ADD A,direct ;(direct)+(A

16、) (A) ADD A,Ri ;(Ri)+(A) (A)ADD A,#data ;#data+(A) (A) 對(duì)標(biāo)志位的影響: 指令執(zhí)行后 累加器中 A7 有進(jìn)位,則 Cy=1 否則 Cy=0 A3 有進(jìn)位,則 AC=1 否則 AC=0 當(dāng) A6 有進(jìn)位A7 無(wú)進(jìn)位或 A7有進(jìn)位A6無(wú)進(jìn)位時(shí), 則 OV=1 否則 OV=0 當(dāng)ACC中有奇?zhèn)€“1”時(shí),P=1;有偶個(gè)“1”時(shí),P=0 例 (A)=53H (R0)=0FCH 執(zhí)行指令 ADD A, R0 后 0101 0011 + 1111 1100 1 0100 1111 Cy OV=0 AC=0 P=1 (A)=4FH 2、帶進(jìn)位的加法指令 A

17、DDC A,Rn ; Cy+ (Rn)+(A) (A)ADDC A,direct ; Cy+ (direct)+(A) (A) ADDC A,Ri ; Cy+ (Ri)+(A) (A)ADDC A,#data ; Cy+ #data+(A) (A) 影響標(biāo)志位:( Cy 、OV 、AC 、P)同不帶進(jìn)位的加法指令。 二、減法指令(只有帶進(jìn)位的減法指令)二、減法指令(只有帶進(jìn)位的減法指令) SUBB A,Rn ; ( A)(Rn)-Cy (A)SUBB A,direct ; ( A)(direct)-Cy (A) SUBB A,Ri ;( A)(Ri)-Cy (A) SUBB A,#data ;

18、( A)#dataCy (A) 影響標(biāo)志位: Cy :A7 有借位,則 Cy=1 否則 Cy=0 AC: A3 有借位,則 AC=1 否則 AC=0 OV: A6 有借位A7 無(wú)借位或 A7有借位A6 無(wú)借位時(shí),則 OV=1 否則 OV=0 P: ACC中有奇?zhèn)€“1”時(shí),P=1; 有偶個(gè)“1”時(shí),P=0 三、加三、加 1指令指令 INC A ;(A)+1 (A) INC Rn ;(Rn)+1 (Rn) INC direct ;(direct)+1 (direct) INC Ri ;(Ri)+1 (Ri) INC DPTR ;(DPTR)+1 (DPTR) 注意:若原數(shù)為0FFH,則+1后變成

19、00H。 此類運(yùn)算不影響任何標(biāo)志位(除 INC A 對(duì) P 有影響外)。當(dāng)修改輸出口Pi時(shí), 原來(lái)口數(shù)據(jù)的值將從口鎖存器讀入,而不是讀引腳. 四、減四、減 1指令指令 DEC A ;(A)-1 (A) DEC Rn ;(Rn)-1 (Rn) DEC direct ;(direct)-1 (direct) DEC Ri ;(Ri)-1 (Ri) 注意:若原數(shù)為00H,則-1后變成 0FFH。 此類運(yùn)算不影響任何標(biāo)志位(除 INC A 對(duì) P 有影響外)。當(dāng)修改輸出口Pi時(shí),原來(lái)口數(shù)據(jù)的值將從口鎖存器讀入,而不是讀引腳。 五、其他算術(shù)操作指令五、其他算術(shù)操作指令 1 、累加器內(nèi)容十進(jìn)制調(diào)整指令 D

20、A A ;不影響溢出標(biāo)志 該指令對(duì)A的上一條加法指令所得的結(jié)果進(jìn)行調(diào)整,使它調(diào)整為壓縮BCD碼。 操作過(guò)程是: 若(A)309(AC)=1,則 (A)+06H (A) 若(A)749(Cy)=1,則 (A)+60H (A) 注意: 不能用DA A 對(duì)十進(jìn)制減法操作的結(jié)果調(diào)整。 借助Cy可實(shí)現(xiàn)多位BCD數(shù)相加(ADDC)。 2 、乘法指令 MUL AB;積的高8位 B,積的低8位 A若積大于255 OV=1 否則 OV=0; Cy0 3 、除法指令 DIV AB;A/B 商 A,余數(shù) B 若 B=0 則 OV=1 否則 OV=0; Cy0 六、算術(shù)操作類指令匯總一覽表六、算術(shù)操作類指令匯總一覽表

21、 見(jiàn)表3-2第五節(jié)第五節(jié) 邏輯操作類指令邏輯操作類指令 邏輯操作類指令有24條。 一、與指令一、與指令 ANL A,Rn ;(A)(Rn) (A) ANL A,direct ;(A)(direct ) (A) ANL A,Ri ;(A)(Ri) ) (A) ANL A,#data ;(A) #data (A) ANL direct , A ; ( direct)(A ) ( direct )ANL direct,#data;(direct ) #data ( direct ) 二、或指令二、或指令 ORL A,Rn ;(A)(Rn) (A) ORL A,direct ;(A)(direct )

22、 (A) ORL A,Ri ;(A)(Ri) ) (A)ORL A,#data ;(A) #data (A) ORL direct , A ; ( direct)(A ) ( direct )ORL direct,#data;(direct ) #data ( direct) 三、異或指令三、異或指令 XRL A,Rn ;(A)(Rn) (A) XRL A,direct ;(A) (direct ) (A)XRL A,Ri ;(A) (Ri) ) (A)XRL A,#data ;(A) #data (A) XRL direct , A ; ( direct) (A ) ( direct )XR

23、L direct,#data;(direct ) #data ( direct ) 上述三組指令(ANL、ORL 、 XRL)中,若以輸出口Pi作 為目的操作數(shù)時(shí),讀入原始數(shù)據(jù)來(lái)自口鎖存器,而非引腳。四、四、A操作指令操作指令 1 、取反指令 CPL A 2 、清零指令 CLR A 3 、左循環(huán)指令 RL A 4 、右循環(huán)指令 RR A 5 、帶進(jìn)位左循環(huán)指令 RLC A 6 、帶進(jìn)位右循環(huán)指令 RRC A 第36條操作指令功能見(jiàn)圖3-1。 五、邏輯操作類指令匯總一覽表五、邏輯操作類指令匯總一覽表 見(jiàn)表3-4第六節(jié)第六節(jié) 程序轉(zhuǎn)移類指令程序轉(zhuǎn)移類指令 歸入本類指令有17條(也可22條,此時(shí)位轉(zhuǎn)

24、移指令可歸入此類)。 一、無(wú)條件轉(zhuǎn)移指令一、無(wú)條件轉(zhuǎn)移指令 1 、絕對(duì)轉(zhuǎn)移(短跳轉(zhuǎn))指令、絕對(duì)轉(zhuǎn)移(短跳轉(zhuǎn))指令 AJMP addr11(標(biāo)號(hào));(PC)+2 (PC), 指令中的a10a0 (PC)100 目的地址范圍:AJMP指令后面一條指令的同一個(gè) 2KB區(qū)域的程序存儲(chǔ)器中。 PC AJMPa10a8 a7a0PC+2 H 2KB 2 、 長(zhǎng)轉(zhuǎn)移(長(zhǎng)跳轉(zhuǎn))指令長(zhǎng)轉(zhuǎn)移(長(zhǎng)跳轉(zhuǎn))指令 LJMP addr16(標(biāo)號(hào));指令中的a15a0 (PC) 目的地址范圍:64KB區(qū)域的程序存儲(chǔ)器內(nèi)任意單元。 3 、 相對(duì)短轉(zhuǎn)移(相對(duì)跳轉(zhuǎn))指令相對(duì)短轉(zhuǎn)移(相對(duì)跳轉(zhuǎn))指令 SJMP rel(標(biāo)號(hào));(PC)

25、+2 (PC), (PC)+ rel (PC) 注: rel是有符號(hào)數(shù),其范圍為-128 rel+127 目的地址=源地址+2+ rel例 KRD: SJMP PKRD 若 KRD=0100H PKRD=0123H 則 0123H=0100H+2+rel rel=21H 若 KRD=0100H PKRD=00F0H 則 0123H=0100H+2+rel rel=0FFEEH rel=0EEH P C S JM P re lP C + 2 H -126+129-128+127轉(zhuǎn)移地址范圍4 、相對(duì)長(zhǎng)轉(zhuǎn)移(散轉(zhuǎn))指令、相對(duì)長(zhǎng)轉(zhuǎn)移(散轉(zhuǎn))指令 JMP A+DPTR;(DPTR)+(A) (PC)

26、利用此指令能實(shí)現(xiàn)程序在64KB程序存儲(chǔ)器內(nèi)的散轉(zhuǎn)。 例 (A)0,2,4,6,8,TAB=1800H,請(qǐng) 分析執(zhí)行下列指令后PC的變化情況 MOV DPTR,#TAB;(DPTR)=1800H JMP A+DPTR;(1800H+(A) (PC) : : 1800H TAB:AJMP 100H ; 指令中的a10a0 (PC)100, (PC)1511不變 AJMP 200H AJMP 300H AJMP 400H AJMP 500H 該段程序執(zhí)行后,若(A)=0,程序?qū)⑥D(zhuǎn)移到1800H ,執(zhí)行完 AJMP 100H 后, (PC)1511 =0001 1B,(PC)100 = 100 000

27、0 0000 B (PC)=0001 1100 0000 0000B=1900H二、無(wú)條件轉(zhuǎn)移指令二、無(wú)條件轉(zhuǎn)移指令 1 、測(cè)試條件符合轉(zhuǎn)移指令、測(cè)試條件符合轉(zhuǎn)移指令 轉(zhuǎn)移條件 JZ rel ; (A)=0 JNZ rel ; (A)0 JC rel ; Cy =1 JNC rel ; Cy =0 轉(zhuǎn)移條件 JB bit,rel ; (bit)=1 JNB bit,rel ; (bit)=0 JBC bit,rel ; (bit)=1, 執(zhí)行后 0 (bit) 條件滿足轉(zhuǎn)移否則順序執(zhí)行 2 、比較不相等轉(zhuǎn)移指令、比較不相等轉(zhuǎn)移指令 CJNE A ,direct,rel CJNE A ,#dat

28、a ,rel CJNE Rn ,#data ,rel CJNE Ri,#data ,rel 判Cy:當(dāng)?shù)谝徊僮鲾?shù)第二操作數(shù)時(shí), Cy =1 否則 Cy=0 例: CJNE A ,#60H,NEQ ;(A)60H 轉(zhuǎn)至 NEQ : ;(A)= 60H 處理程序 : NEQ:JC LOW ;(A) 60H 處理程序 : LOW: ; (A) 60H 處理程序 : : 3 、減、減1不為不為 0轉(zhuǎn)移指令轉(zhuǎn)移指令 DJNZ Rn ,rel;(Rn)-1 (Rn) 若 (Rn) =0 則 (PC)+2 (PC) ; (Rn) 0 則 (PC)+2+rel (PC) DJNZ direct ,rel;(d

29、irect)-1 (direct) 若 (direct) =0 則 (PC)+3 (PC) ; (direct) 0 則 (PC)+3+rel (PC) 例 延時(shí)程序START: SETB P1.0 ;1 P1.0 DL: MOV 30H,#30H DL0: MOV 31H,#0F0H DL1: DJNZ 31H,DL1 DJNZ 30H,DL0 CPL P1.0 ;0 P1.0 AJMP DL P1.0輸出波形見(jiàn)圖3-2。三、調(diào)子指令三、調(diào)子指令 1 、絕對(duì)調(diào)子(短調(diào)用)指令、絕對(duì)調(diào)子(短調(diào)用)指令 ACALL addr11; (PC)+2 (PC) , (SP)+1 (SP) , (PC7

30、0) (SP) ; (SP)+1 (SP) , (PC158) (SP) ;指令中的2KB區(qū)域地址 a100 ( PC100) 2 、長(zhǎng)調(diào)子(長(zhǎng)調(diào)用)指令、長(zhǎng)調(diào)子(長(zhǎng)調(diào)用)指令 LCALL addr16; (PC)+3 (PC) , (SP)+1 (SP) , (PC70) (SP) ; (SP)+1 (SP) , (PC158) (SP) ; 指令中地址 a150 ( PC)3 、返主(返回)指令 RET ; (SP) (PC158) , (SP)1 (SP) , (SP) (PC70) , (SP)-1 (SP) 不影響任何標(biāo)志,一般與ACALL,LCALL指令相連。 4 、中斷返主(返回

31、)指令 RETI ;除RET指令的功能外,還清除內(nèi)部相應(yīng) 的中斷狀態(tài)寄存器。 四、空操作指令四、空操作指令 NOP ; (PC)+1 (PC) , 不影響狀態(tài)。五、程序轉(zhuǎn)移類指令匯總一覽表五、程序轉(zhuǎn)移類指令匯總一覽表 見(jiàn)表3-7第七節(jié)第七節(jié) 位操作類指令位操作類指令 Cy作為布爾處理機(jī)的累加器以RAM和SFR的位尋址區(qū)的位單元作為操作數(shù)。 一、位傳送指令一、位傳送指令 MOV C ,bit ;(bit) (C) MOV bit,C ; (C) (bit) 二、位邏輯操作指令二、位邏輯操作指令 1、位變量修改指令 CLR C ; 0 (C) CLR bit ; 0 ( bit ) CPL C ;

32、 (C) (C) CPL bit ; ( bit ) ( bit ) SETB C ; 1 (C) SETB bit ; 1 ( bit ) 2、邏輯操作指令 ANL C ,bit ;(C)(bit) (C) ANL C ,/bit ;(C)(bit) (C) ORL C ,bit ;(C)(bit) (C) ORL C ,/bit ;(C)(bit) (C) 三、位條件轉(zhuǎn)移指令三、位條件轉(zhuǎn)移指令 見(jiàn)測(cè)試條件符合轉(zhuǎn)移指令 四、位操作類指令匯總一覽表四、位操作類指令匯總一覽表 見(jiàn)表3-8。 再次重申一下:把輸出口Pi作為目的操作數(shù)的指令中,原 來(lái)口數(shù)據(jù)的值將從口鎖存器讀入,而不是從引腳讀入。這些

33、 指令是:ANL;ORL;XRL;JBC;CPL;INC; DEC;DJNZ;MOV Px.y , C; CLR Px.y 和 SETB Px.y 。第八節(jié)第八節(jié) 匯編語(yǔ)言源程序的格式和偽指令匯編語(yǔ)言源程序的格式和偽指令 一、匯編語(yǔ)言源程序的格式匯編語(yǔ)言源程序的格式 1、指令格式、指令格式: 操作碼 操作數(shù)1, 操作數(shù)2, 操作數(shù)3 指令操作碼助記符 2、標(biāo)號(hào)和注釋、標(biāo)號(hào)和注釋 標(biāo)號(hào)加在指令以前,它必須以字母開(kāi)始,后跟18個(gè) 字母或數(shù)字,并以冒號(hào)“:”結(jié)尾。標(biāo)號(hào)不能與匯編保留 符號(hào)重復(fù),標(biāo)號(hào)的值是它后面的指令存儲(chǔ)地址。 注釋是對(duì)某一條指令或某一段程序的功能說(shuō)明,它必 須以分號(hào)“;”開(kāi)始,如果一

34、行寫(xiě)不下,可以另起一行, 但都必須以分號(hào)“;”開(kāi)始,下面為含有標(biāo)號(hào)和注釋的程 序行: 標(biāo)號(hào):操作碼 操作數(shù)1, 操作數(shù)2, 操作數(shù)3;注釋 二、偽指令二、偽指令 偽指令也稱匯編指令,大多數(shù)偽指令在匯編時(shí)不產(chǎn)生機(jī)器語(yǔ)言指令,它僅提供匯編控制信息。以下是幾種常用的偽指令。 1、ORG 指令指令 格式: ORG m 十進(jìn)制或十六進(jìn)制數(shù) 它是定位偽指令,表明(匯編地址)生成的機(jī)器指令起始存儲(chǔ)器地址為m。 2、END 指令指令 格式: END 或 END 標(biāo)號(hào) 它是結(jié)束匯編偽指令,表明匯編到此結(jié)束。 3、DB 指令指令 格式: 標(biāo)號(hào) DB X1, X2 , X3 , , Xn 它是定義字節(jié)偽指令, Xi

35、為單字節(jié)數(shù)據(jù)可用十進(jìn)制或十六進(jìn)制數(shù)、 表達(dá)式或單引號(hào)“ ”所括起來(lái)的一個(gè)字符串表示。 例如 ORG 1000H DB ASCII 1000H A S C I I程序存儲(chǔ)器 4、DW 指令指令 格式: 標(biāo)號(hào) DW Y1, Y2 , Y3 , , Yn 它是定義字偽指令, Yi為雙字節(jié)數(shù)據(jù),其表達(dá)方式同DB中的Xi ,每個(gè)字的低8位先放, 高8位后放 5、DS 指令指令 格式: 標(biāo)號(hào): DS X 數(shù)字 它是定義保留字節(jié)數(shù)偽指令, 它表明應(yīng)保留X個(gè)單元的字節(jié)數(shù)。 6、bit 指令指令 格式: 標(biāo)號(hào) DS 項(xiàng) 它是定義某特定位標(biāo)號(hào)的偽指令, 項(xiàng)是所定義的位,經(jīng)定義后可用標(biāo)號(hào)來(lái)代替項(xiàng)所定義的位。第九節(jié)第

36、九節(jié) 算術(shù)邏輯處理程序算術(shù)邏輯處理程序 例3-2 多字節(jié)無(wú)符號(hào)數(shù)相加。設(shè)被加數(shù)與加數(shù)已分別在以ADR1與ADR2為初址的片內(nèi)數(shù)據(jù)存儲(chǔ)器區(qū)域中,自低字節(jié)起,由低到高依次存放;它們的字節(jié)數(shù)為L(zhǎng);要求加得的和放回原放被加數(shù)的單元。 程序的流程框圖見(jiàn)圖3-5 相應(yīng)的程序如下: MOV R0,#ADR1 | MOV R0,A MOV R1,#ADR2 | INC R0 MOV R2,#L | INC R1 CLR C | DJNZ R2,LOOPLOOP:MOV A,R0 | DONE: ADDC A,R1設(shè) ADR1=30H,ADR2=40H,L=03H,則程序執(zhí)行過(guò)程為: (R0)=30H (R1)

37、=40H (R2)=03H CY=“0” (R0)A,即(30H)A(R1)+(A) A 即 (40H)+(30H)A A (R0)= (30H) (R0)+1 (R0)即30H+1=31H,31H (R0) (R1)+1 (R1)即40H+1=41H,41H (R1) R21 R2 即 3 1 =2 R2 判R2=0? (R2)=02H0轉(zhuǎn)至LOOP即 (R2)=01H0轉(zhuǎn)至LOOP即 (R2)=0DONE R030H R140H 第十節(jié)第十節(jié) 數(shù)制轉(zhuǎn)換程序數(shù)制轉(zhuǎn)換程序 例 3-11 CJNE A,#09H,NEQ SJMP LOW NEQ: JC LOW ADD A,#37H SJMP D

38、ONE LOW: ADD A,#30H DONE: 子程序設(shè)計(jì)中參數(shù)傳遞的方法用下面例子說(shuō)明一、用工作寄存器或累加器來(lái)傳遞參數(shù)一、用工作寄存器或累加器來(lái)傳遞參數(shù) 例 3-13 將某BCD碼數(shù)據(jù)轉(zhuǎn)換為ASCII碼的子程序。 TRANS1: MOV DPTR,#TAB MOVC A,A+DPTR RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H TRANS2: INC A MOVC A ,A+PC RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H 二、用指針寄存器來(lái)傳遞參數(shù)二、用

39、指針寄存器來(lái)傳遞參數(shù) MOV R0,#ADR1 MOV R1,#ADR2 MOV R2,#L CLR C LOOP:MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP RET三、用堆棧來(lái)傳遞參數(shù)三、用堆棧來(lái)傳遞參數(shù) 主程序:進(jìn)棧 PUSH 子程序:出棧 POP TRANS3:MOV R0,SP DEC R0 DEC R0 XCH A ,R0 MOV DPTR,#TAB MOVC A, A+DPTR XCH A ,R0 RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H, 38H,39H 例:把內(nèi)

40、部單元的RAM中50H壓縮BCD碼轉(zhuǎn)換成2位ASCII碼,轉(zhuǎn)換結(jié)果存放于R1指向的2個(gè)內(nèi)部RAM的單元中。 BASC: MOV A,50H SWAP A ANL A,#0FH PUSH ACC ACALL TRANS3 POP ACC MOV R1,A INC R1 MOV A,50H ANL A,#0FH PUSH ACC ACALL TRANS3 POP ACC MOV R1,A DONE: 第十一節(jié)第十一節(jié) 多分支轉(zhuǎn)移(散轉(zhuǎn))程序多分支轉(zhuǎn)移(散轉(zhuǎn))程序 單片機(jī)可方便的實(shí)現(xiàn)很多分支出口的轉(zhuǎn)移,也稱散轉(zhuǎn),在多種程序中用得很多,其示意圖見(jiàn)圖 3-7 例 3-15 設(shè)計(jì)有256路分支出口的轉(zhuǎn)移地

41、址,要轉(zhuǎn)移到某分支的信息存放在R2中。 MOV DPTR,#TAB MOV A,R2 CLR C RLC A JNC LOW INC DPH LOW: MOV R3,A MOVC A ,A+DPTR PUSH A MOV A,R3 INC A MOVC A ,A+DPTR RETTAB: DW ADDR 00,ADDR 01,ADDR 02, ADDR 0FFH例如 轉(zhuǎn)移分支為第81H路,則DPTR、SP指針變化如下: SP Addr81H815 Addr81H07 SP 程序ROM內(nèi)部RAM第十二節(jié)第十二節(jié) 延時(shí)程序延時(shí)程序 例 3-16 設(shè)計(jì)一延時(shí)程序,延時(shí)時(shí)間為1ms。 (設(shè)晶振為12M

42、HZ) DELAY1:MOV R1,#0AH;1 DL2:MOV R2,#18H ;1 DL1:NOP ;1 NOP ;1 DJNZ R2,DL1 ; 2 DJNZ R1,DL2 ;2 RET 延時(shí)時(shí)間= 1+ 1+(1+1+2)24+2 10+2 1s = 993 s =0.993ms第十三節(jié)第十三節(jié) 定時(shí)器定時(shí)器 / 計(jì)數(shù)器應(yīng)用程序計(jì)數(shù)器應(yīng)用程序例 3-18 要求利用單片機(jī)內(nèi)部的定時(shí)器 / 計(jì)數(shù)器,達(dá)到 1min 延時(shí)。程序準(zhǔn)備工作: 1min 延時(shí),顯然用一個(gè)定時(shí)器 / 計(jì)數(shù)器 不行,因用T0作定時(shí)不發(fā)生中斷(定時(shí) 1ms ), T1計(jì)數(shù)6000次 (600001ms=1min)發(fā)生中斷

43、,因此要 對(duì)T0 、T1相應(yīng)的SFR進(jìn)行設(shè)置。 1、方式控制字(TMOD) T0不用門(mén)控,方式1定時(shí),則(TMOD)03=0001B T1不用門(mén)控,方式1計(jì)數(shù),則(TMOD)47=0101B即(TMOD)=01010001B2、16位計(jì)數(shù)器的初值確定位計(jì)數(shù)器的初值確定T0 :1ms=65536X 03E8H=10000HX X=0FC18H TH0=0FCH TL0=18H T1 :60000=65536X 0EA60H=10000HX X=15A0H TH1=15H TL1=0A0Ht = (216x)s 12 fosc = (655366x)s 12 fosc 晶振頻率計(jì)數(shù)初值3、確定控制

44、寄存器、確定控制寄存器TCON及中斷允許控制寄存器及中斷允許控制寄存器IE EA=1 ET1=1 即 IE=88H TR0=1 TR1=1 中斷入口地址:001BH D7 D6 D5 D4 D3 D2 D1 D0 IE EA / ET2 ES ET1 EX1 ET0 EX0 D7 D6 D5 D4 D3 D2 D1 D0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 4、程序框圖、程序框圖 主程序框圖T0 、T1 初始化T1 引腳清零允許T0 、T1工作程序工作1ms定時(shí)到?NY1ms定時(shí)到?T1 計(jì)數(shù)值+1重置TH0、TL0初值 繼續(xù) N中斷子程序框圖置位1min

45、時(shí)間到的位標(biāo)志中斷返回 5、程序清單 見(jiàn) P126127第十三節(jié)第十三節(jié) 外部中斷應(yīng)用程序外部中斷應(yīng)用程序 例 3-20 某工業(yè)監(jiān)控系統(tǒng),具有溫度、壓力、PH值等多路監(jiān)控功能。在PH7時(shí)將向CPU申請(qǐng)中斷,CPU相應(yīng)后令P3.0引腳輸出高電平,經(jīng)驅(qū)動(dòng),使加堿管道電磁閥接通1 s,以調(diào)整PH值。(0003H是 INT0的中斷入口地址)溫度1超限?壓力超限?PH超限?溫度2超限?中斷返回中斷子程序散轉(zhuǎn)框圖轉(zhuǎn)溫超1服務(wù)程序轉(zhuǎn)溫超2服務(wù)程序轉(zhuǎn)壓超服務(wù)程序轉(zhuǎn)PH超服務(wù)程序PH超限服務(wù)程序框圖保護(hù)現(xiàn)場(chǎng)中斷返回加減1 s撤除中斷恢復(fù)現(xiàn)場(chǎng)習(xí)題 1 、多字節(jié)無(wú)符號(hào)壓縮BCD碼數(shù)相加。設(shè)被加數(shù)與 加數(shù)已分別在以A

46、DR1與 ADR2為初址的片內(nèi)數(shù)據(jù) 存儲(chǔ)器區(qū)域中,自高字節(jié)起,由高到低要依次存放;它們的字節(jié)數(shù)為L(zhǎng);求加得的和放 回原放被加數(shù)的單元。 2 、請(qǐng)寫(xiě)出例3-3的程序流程框圖,并簡(jiǎn)述程序執(zhí)行 過(guò)程。 3 、試改用CJNE指令重編例3-7的程序。第一節(jié)第一節(jié) 最小系統(tǒng)與程序存儲(chǔ)器的擴(kuò)展最小系統(tǒng)與程序存儲(chǔ)器的擴(kuò)展 MCS5151單片機(jī)在擴(kuò)展時(shí),其引腳構(gòu)成三總線結(jié)構(gòu):地址總線AB(P2、P0口)、數(shù)據(jù)總線DB(P0口分時(shí)復(fù)用)和控制總線CB(P3口及P1口部分引腳)。 各種擴(kuò)展電路的外接芯片都通過(guò)該三總線與單片機(jī)連接。從圖4-1中可看出P0分時(shí)復(fù)用地址總線和數(shù)據(jù)總線,ALE連接至地址鎖存器的使能端。當(dāng)A

47、LE為高時(shí),鎖存器內(nèi)容更新;當(dāng)ALE 時(shí),實(shí)現(xiàn)鎖存。因而可看出當(dāng)ALE為高時(shí),P0口輸出地址線A0A7,當(dāng)ALE 時(shí), 鎖存在地址鎖存器的輸出端,從而達(dá)到分時(shí)復(fù)用的目的。 當(dāng)外接芯片過(guò)多超過(guò)總線的驅(qū)動(dòng)能力時(shí),系統(tǒng)將不能可靠工作,此時(shí)因加用總線驅(qū)動(dòng)器。常用的單向驅(qū)動(dòng)器有74LS244、74LS240(帶反向輸出)、 74LS241;雙向總線驅(qū)動(dòng)器有74LS245圖4-2列出了74LS244、 74LS245兩種芯片的引腳圖。從圖中可看出: 74LS244: xAx輸入、xYx輸出,且是三態(tài)驅(qū)動(dòng),并分成二組分別 由1G、2G 控制。 74LS245:雙向驅(qū)動(dòng) A B 當(dāng)G=“0”且DIR=“1”時(shí)

48、,AB(輸出允許), 當(dāng)G=“0”且DIR=“0”時(shí),BA(輸入允許)。 圖4-3是74LS244、74LS245用于MCS51總線驅(qū)動(dòng)器時(shí)的具體連接圖。 從圖中可看出:P0口分時(shí)復(fù)用數(shù)據(jù)總線(有輸入、輸出),因此要用雙向驅(qū)動(dòng)器74LS245。 故當(dāng)PSENRD=“0”即DIR=“0”時(shí),BA 即A/D P0口, 當(dāng)PSENRD=“1”即DIR=“1”時(shí),AB 即P0口A/D (數(shù)據(jù)/地址)。 P2口只要加用74LS244且1G=2G=“0”,保證任何時(shí)候P2口A。 一、最小系統(tǒng)一、最小系統(tǒng) 圖4-4示出了8031的最小系統(tǒng)。由于8031片內(nèi)無(wú)ROM,因此我們要用片外程序存儲(chǔ)器來(lái)存放程序。圖中

49、2716用作片外程序存儲(chǔ)器、74LS373用作地址鎖存器,這樣系統(tǒng)就要用到地址和數(shù)據(jù)總線。下面我們將按照地址總線、數(shù)據(jù)總線、控制總線的具體連接方式來(lái)說(shuō)明8031是如何和片外芯片相連接的,在說(shuō)明圖4-4之前,讓我們先了解一下常用的EPROM芯片和地址鎖存器以及8031的工作時(shí)序。1、EPROM芯片芯片 常用EPROM芯片有2716(2k8bit)、 2732(4k8bit)、 2764(8k8bit)、27128(16k8bit)、 27256(32k8bit)、 27512(64k8bit)等,圖4-6所示的是常用EPROM芯片的引腳圖。其引腳說(shuō)明與工作方式為: 引腳說(shuō)明 A0A15:地址線。

50、其中2716為A0A10 、 2732為 A0A11 、2764為A0A12 、 27128為A0A13、 27256為A0A14、 27512為A0A15 。 O0O7 :輸出數(shù)據(jù)線。 CE :片選信號(hào),低電平有效。 VPP :編程電源端。 PGM:編程控制信號(hào)。 VCC :電源端。+5V GND:接地端。 工作方式 見(jiàn)表4-1 2、地址鎖存器、地址鎖存器 常用的地址鎖存器芯片有74LS373、74LS273、8282、8212等。 74LS373 74LS373是8D鎖存器,其結(jié)構(gòu)示意圖見(jiàn)圖4-7。 74LS273 帶清除端CLR的8D觸發(fā)器,當(dāng)CLR=“0”時(shí),D=“0”,CLK在上升沿

51、時(shí)觸發(fā)器內(nèi)容更新。 74LS373、74LS273、8282與MCS51的連接 見(jiàn)圖4-9。 3、工作時(shí)序、工作時(shí)序 最小系統(tǒng)的工作時(shí)序見(jiàn)圖4-5,從圖中可看出: ALE 時(shí),PCL輸出鎖存(ALE=“1”時(shí)PCL 出現(xiàn)在P0口、 PCH出現(xiàn)在P2口上)。 PSEN=“0”時(shí),程序存儲(chǔ)器根據(jù)地址總線上出 現(xiàn)的地址(此時(shí)為PC 值) 輸出指令代碼,在 時(shí) 通過(guò)數(shù)據(jù)總線把指令輸入到 單片機(jī)內(nèi)。 在一個(gè)機(jī)器周期內(nèi)ALE、PSEN兩次有效,即在一個(gè)機(jī) 器周期內(nèi)可兩次取指。 4、MCS51單片機(jī)與外圍芯片的連接單片機(jī)與外圍芯片的連接 單片機(jī)擴(kuò)展時(shí)的三總線結(jié)構(gòu)單片機(jī)擴(kuò)展時(shí)的三總線結(jié)構(gòu) 8031單片機(jī)與74

52、LS373連接從而構(gòu)成系統(tǒng)擴(kuò)展時(shí)的三總線結(jié)構(gòu)。即P0口是數(shù)據(jù)總線(分時(shí)復(fù)用);74LS373輸出地址線A0A7 、P2口輸出地址線A8A15從而構(gòu)成地址總線;其余各控制信號(hào)構(gòu)成控制總線。(具體見(jiàn)圖4-1、4-4)。 數(shù)據(jù)線連接數(shù)據(jù)線連接 P0.0P0.7 2716 O0O7 地址線連接地址線連接 P0.0P0.7 74LS373 D0D7 ; Q0Q7 2716 A0A7 ;P2.0 2716 A8 ; P2.1 2716 A9 ;P2.2 2716 A10 。 注意:盡管P2口有余下的引腳,但也不能再作為一般I/O口線使用。 控制線連接控制線連接 ALE 74LS373 G ;PSEN 27

53、16 OE; 74LS373 OE、2716 CE接地。 其它電路其它電路(復(fù)位、時(shí)鐘見(jiàn)圖4-4) 二、用二、用EPROM 的程序存儲(chǔ)器擴(kuò)展的程序存儲(chǔ)器擴(kuò)展 1、用單片、用單片EPROM 的擴(kuò)展電路的擴(kuò)展電路 對(duì)于8051、8751、9052、8752等片內(nèi)含程序存儲(chǔ)器的機(jī)型來(lái)說(shuō),圖4-4便是擴(kuò)展片外存儲(chǔ)器的電路。 若擴(kuò)展2K單元不夠,可將圖4-4中的2716改為2732、2764、27128、27256或27512等容量更大的EPROM,則擴(kuò)展的容量依次為4K、8K、16K、32K、64K。當(dāng)然每遞升一檔,地址線將多用一根,P2口更高一位口線將用于傳送這位的地址信息。例如在圖4-4的基礎(chǔ)上改用2732時(shí),添用P2.3來(lái)傳遞A11 ;改用2764時(shí),再添用P2.4來(lái)傳遞A12 ;圖4-10示出了應(yīng)用27128的擴(kuò)展電路 在既用片內(nèi)程序存儲(chǔ)器又有片外程序存儲(chǔ)器的情況下,EA一般應(yīng)接高電平,當(dāng)PC片內(nèi)程序存儲(chǔ)器容量時(shí),選用片內(nèi)程序存儲(chǔ)器,否則選用片外程序存儲(chǔ)器 2、用多片、用多片EPROM 的擴(kuò)展電路的擴(kuò)展電路 用多片E

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論