单片机程序状态寄存器 简述MCS51单片机中程序状态寄存器PSW各位的含义

\u7b80\u8ff0MCS51\u5355\u7247\u673a\u4e2d\u7a0b\u5e8f\u72b6\u6001\u5bc4\u5b58\u5668PSW\u5404\u4f4d\u7684\u542b\u4e49\u3002

PSW\u5373\u7a0b\u5e8f\u72b6\u6001\u5bc4\u5b58\u5668\uff0cProgram Status Word\u3002
PSW\u5404\u4f4d\u7684\u5b9a\u4e49\u5982\u4e0b\uff1a
Cy\uff08PSW.7\uff09\uff1a\u5373PSW\u7684D7\u4f4d\uff0c\u8fdb\u4f4d\u3001\u501f\u4f4d\u6807\u5fd7\u3002\u8fdb\u4f4d\u3001\u501f\u4f4dCY=1\uff1b\u5426\u5219CY=0.
AC\uff08PSW.6\uff09\uff1a\u5373PSW\u7684D6\u4f4d\uff0c\u8f85\u52a9\u8fdb\u4f4d\u3001\u501f\u4f4d\u6807\u5fd7\u3002\u5f53D3\u5411D4\u6709\u501f\u4f4d\u6216\u8fdb\u4f4d\u65f6\uff0cAC=1\uff1b\u5426\u5219AC=0.
F0\uff08PSW.5\u53caPSW.1\uff09\uff1a\u5373PSW\u7684D5\u4f4d\uff0c\u7528\u6237\u6807\u5fd7\u4f4d\uff1b
RS1\u53caRS0\uff08PSW.4\u53caPSW.3\uff09\uff1a\u5373PSW\u7684D4\u3001D3\u4f4d\uff0c\u5bc4\u5b58\u5668\u7ec4\u9009\u62e9\u63a7\u5236\u4f4d\uff1b
OV\uff08PSW.2\uff09\uff1a\u6ea2\u51fa\u6807\u5fd7\u3002\u6709\u6ea2\u51faOV=1\uff0c\u5426\u5219OV=0\uff1b
F1(PSW\u00b71)\uff1a\u4fdd\u7559\u4f4d\uff0c\u65e0\u5b9a\u4e49\uff1b
P(PSW\u00b70)\uff1a\u5947\u5076\u6821\u9a8c\u6807\u5fd7\u4f4d\uff0c\u7531\u786c\u4ef6\u7f6e\u4f4d\u6216\u6e050\uff1b\u5b58\u5728ACC\u4e2d\u7684\u8fd0\u7b97\u7ed3\u679c\u6709\u5947\u6570\u4e2a1\u65f6P=1\uff0c\u5426\u5219P=0\u3002

\u8fd9\u4e1c\u897f\u767e\u5ea6\u4e00\u5927\u5806\u554a\uff0c\u4e0d\u8fc7\u8981\u60f3\u7406\u89e3\u900f\uff0c\u8fd8\u662f\u8981\u5199\u6c47\u7f16\u8bed\u8a00\uff0cc\u8bed\u8a00\u611f\u89c9\u4e0d\u51fa\u6765\u8fd9\u4e9b\u4e1c\u897f\u7684\u3002

PSW\u662f\u4e00\u4e2a8\u4f4d\u5bc4\u5b58\u5668\uff0c\u7528\u4e8e\u8bbe\u5b9aCPU\u7684\u72b6\u6001\u548c\u6307\u793a\u6307\u4ee4\u6267\u884c\u540e\u7684\u72b6\u6001\u3002
CY(PSW.7)\uff1a\u8fdb\u4f4d\u6807\u5fd7\u3002\u5728\u6267\u884c\u52a0\u51cf\u8fd0\u7b97\u6307\u4ee4\u65f6\uff0c\u5982\u679c\u8fd0\u7b97\u7ed3\u679c\u7684\u6700\u9ad8\u4f4d(D7)\u53d1\u751f\u4e86\u8fdb\u4f4d\u6216\u501f\u4f4d\uff0c\u5219CY\u7531\u786c\u4ef6\u81ea\u52a8\u7f6e1\u3002
AC(PSW.6)\uff1a\u534a\u8fdb\u4f4d\u6807\u5fd7\u4f4d\uff0c\u4e5f\u79f0\u4e3a\u8f85\u52a9\u6807\u5fd7\u4f4d\u3002\u5728\u6267\u884c\u52a0\u51cf\u8fd0\u7b97\u6307\u4ee4\u65f6\uff0c\u5982\u679c\u8fd0\u7b97\u7ed3\u679c\u7684\u4f4e\u534a\u5b57\u8282(D3)\u53d1\u751f\u4e86\u5411\u9ad8\u534a\u5b57\u8282\u8fdb\u4f4d\u6216\u501f\u4f4d\uff0c\u5219AC\u7531\u786c\u4ef6\u81ea\u52a8\u7f6e1\u3002
F0\u3001F1(PSW.5 \u548cPSW.1)\uff1a\u7528\u6237\u6807\u5fd7\u4f4d\u3002\u7528\u6237\u53ef\u4ee5\u6839\u636e\u9700\u8981\u5bf9F0\u3001F1\u8d4b\u4e88\u4e00\u5b9a\u7684\u542b\u4e49\uff0c\u7531\u7528\u6237\u7f6e1\u548c\u6e050\uff0c\u4f5c\u4e3a\u8f6f\u4ef6\u6807\u5fd7\u3002
RS1\u3001RS0(PSW.4 \u548cPSW.3)\uff1a\u5de5\u4f5c\u5bc4\u5b58\u5668\u7ec4\u9009\u62e9\u63a7\u5236\u4f4d\u3002\u901a\u8fc7\u5bf9\u8fd9\u4e24\u4f4d\u8bbe\u5b9a\uff0c\u53ef\u4ee5\u4ece4\u4e2a\u5de5\u4f5c\u5bc4\u5b58\u5668\u7ec4\u4e2d\u9009\u62e9\u4e00\u7ec4\u4f5c\u4e3a\u5f53\u524d\u5de5\u4f5c\u5bc4\u5b58\u5668\u3002
OV(PSW.2)\uff1a\u6ea2\u51fa\u6807\u5fd7\u4f4d\uff0c\u6709\u4e24\u79cd\u60c5\u51b5\u5f71\u54cd\u8be5\u4f4d\u3002\u4e00\u662f\u6267\u884c\u52a0\u51cf\u8fd0\u7b97\u65f6\uff0c\u5982\u679cD7\u6216D6\u4efb\u4e00\u4f4d\uff0c\u5e76\u4e14\u53ea\u4e00\u4f4d\u53d1\u751f\u4e86\u8fdb\u4f4d\u6216\u501f\u4f4d\uff0c\u5219OV\u81ea\u52a8\u7f6e1\uff0c
P(PSW.0)\uff1a\u5947\u5076\u6807\u5fd7\u4f4d\u3002\u6bcf\u6761\u6307\u4ee4\u6267\u884c\u5b8c\u540e\uff0c\u8be5\u4f4d\u90fd\u4f1a\u6307\u793a\u5f53\u524d\u7d2f\u52a0\u5668A\u4e2d1\u7684\u4e2a\u6570\u3002\u5982\u679cA\u4e2d\u6709\u5947\u6570\u4e2a1\uff0c\u5219P\u81ea\u52a8\u7f6e1\u3002

首先我先贴图出来吧,这种东西,用keil可以仿真出来的,下图是用51单片机来模拟的,软件为keil4.

如图,这个是按你的程序写的程序,ORG为伪指令,表示程序所在的位置,即程序下载后存放的位置,因为不是写正规程序,所以就直接写在0000H位置下了,一般程序不能直接写在0000H下,因为后面有很多中断向量的位置,靠的很近,所以一般在0000H下,写一条跳转指令,跳过中断向量的位置。

初始化,A的内容为0x00,psw的内容也为0x00.

第一条指令为把直接数放到A里(A即累加器),第一条指令执行完成后,A的值为0f.如下图:

这时,我们可以看到左侧的A的数值为0x0f。PSW内没有变化。

然后我们执行第二条指令,如图:

第二条指令为ADD A,#0F8H。这条指令为加法指令,ADD就是加法指令的意思,意思是把后面的数和累加器ACC里的数相加,最终把结果放在ACC内。我们看到第二条指令执行完成后,ACC的内容为0x07,这就是计算结果,一开始ACC内的数为0x0f,加上0XF8后,结果就是07,然后最高位有进位。至于说指令后面的#0F8H,这是汇编语言的规定,直接数以A~F开头的,前面要加个0,这时候编译器才会正确编译,这是一个汇编编译器的规则,我们只要知道就可以了,如果你写成这样#F8H,编译器一般会提示错误,这个需要注意。

最后来看PSW内的内容,首先要了解PSW内每个位都代表什么,最高位CY代表进位,只要最高位有进位,CY就会置为1,AC位半进位,我们用的是8位单片机,我们的ACC是两个四位的加法器构成的,所以AC就是低四位的最高位向高四位的最低位进位的标志,我们知道0x0f+0xf8,F+8显然超过最大数了,要向高四位进位,所以AC就被置1,因为一位16进制数代表四位2进制数嘛,最高0+F=F,但是低四位有进位,所以变成了0+F+AC>F,所以高四位也进位了,CY也置为1.F0是没有定义的,你可以自己用来干什么都行,在这里没有意义,RS1,RS0位工作寄存器的选择位,它的组合是用来选择用哪组R0~R7的,在这里没用,原来是什么就是什么,因为51单片机内有32个工作寄存器嘛,它们被八个八个分为一组,所以有四个,RS1,RS0能表示的最大数就是4,所以用来选择的,不用管它。OV为溢出,这里没有溢出,主要用于有符号的数,我们这里没有,就没变化了。PSW.1也是没定义的,没实际意义,P位奇偶校验位,这里我们用51单片机,它是偶校验,即ACC里1的个数为奇数时,P=1,否则为偶数,P=0;因为我们最后的计算结果为07H,即 0000 0111,即奇数个1,故P=1。



  • 鍗曠墖鏈虹▼搴忕姸鎬佸瘎瀛樺櫒
    绛旓細鍘熸潵鏄粈涔堝氨鏄粈涔堬紝鍥犱负51鍗曠墖鏈鍐呮湁32涓伐浣瀵勫瓨鍣鍢涳紝瀹冧滑琚叓涓叓涓垎涓轰竴缁勶紝鎵浠ユ湁鍥涗釜锛孯S1锛孯S0鑳借〃绀虹殑鏈澶ф暟灏辨槸4锛屾墍浠ョ敤鏉ラ夋嫨鐨勶紝涓嶇敤绠″畠銆侽V涓烘孩鍑猴紝杩欓噷娌℃湁婧㈠嚭锛屼富瑕佺敤浜庢湁绗﹀彿鐨勬暟锛屾垜浠繖閲屾病鏈夛紝灏辨病鍙樺寲浜嗐侾SW.1涔熸槸娌″畾涔夌殑锛屾病瀹為檯鎰忎箟锛孭浣嶅鍋舵牎楠屼綅锛岃繖閲屾垜浠敤51...
  • 鍗曠墖鏈涓浣曚娇鐢鐘舵佸瘎瀛樺櫒STATUS
    绛旓細寰堝皯鐩存帴璇诲ǘ鍒ゆ柇锛屼竴鑸兘閫氳繃闂撮殧鐨勬柟寮忓湪鐢紝鑰屼笖鐢ㄧ殑寰堥绻併傚姞娉曘佽繘浣嶆槸鏈鍏稿瀷鐨勩傚ぇ浜庝竴涓瓧闀跨殑鍔犳硶鎸囦护锛屼綆浣嶅瓧鍔犳硶鐩存帴鍔狅紝涔嬪悗鐨勫瓧锛岄兘闇瑕佺敤甯﹁繘浣嶇殑鍔犳硶锛岃繖涓繘浣嶏紝灏辨槸瀛樺湪鐘舵佸瘎瀛樺櫒涓紝鐢ㄦ埛涓嶉渶瑕佸垽鏂繖涓繘浣嶆爣蹇椼傜敱鍔犳硶鎸囦护鐩存帴浜х敓锛屽甫杩涗綅鍔犳硶鎸囦护浣跨敤銆傚悓鏍凤紝鍑忔硶銆佷箻娉曘侀櫎娉曪紝浠ュ強...
  • 绋嬪簭鐘舵瀛瀵勫瓨鍣PSW涓璕S1RS0=11B鏃,R3鍦鍗曠墖鏈鍐匯AM鐨勭墿鐞嗗湴鍧涓?_鐧 ...
    绛旓細濡傛灉绋嬪簭鐘舵瀛楋紙PSW锛瀵勫瓨鍣涓殑RS1鍜孯S0鍊间负11B锛屽垯R3鍦鍗曠墖鏈鍐匯AM鐨勭墿鐞嗗湴鍧鏄敱鍏堕昏緫鍦板潃鍜屾鍩哄潃璁$畻寰楀嚭鐨勩俁S1鍜孯S0鍊间负11B鎰忓懗鐫绋嬪簭杩愯鍦ㄩ珮閫烺AM锛屽洜姝ら渶瑕佺‘瀹氶珮閫烺AM鐨勬鍩哄潃鍜孯3鐨勯昏緫鍦板潃銆備緥濡傦紝濡傛灉楂橀烺AM鐨勬鍩哄潃涓0xA000锛孯3鐨勯昏緫鍦板潃涓0x50锛屽垯R3鐨勭墿鐞嗗湴鍧涓0xA050銆傝繖鏄竴...
  • psw鏄粈涔堟剰鎬濆晩!
    绛旓細PSW濡傛灉鏄敤浜嶱PAP鏂囦欢锛屽拰璐ㄩ噺鏈夊叧锛岄偅涔堟寚鐨勬槸璐ㄩ噺鏈锛屽嵆Part Submission Warrant 闆朵欢鎻愪氦淇濊瘉涔︼紝涓篜PAP涓墍瑕佹眰鎻愪氦缁欏鎴风殑涓涓」鐩傚湪瀹屾垚鎵鏈夌殑瑕佹眰鐨勬祴閲忓拰璇曢獙鍚庯紝渚涙柟蹇呴』鍦ㄩ浂浠舵彁浜や繚璇佷功涓婂~鍐欐墍瑕佹眰鐨勫唴瀹广傚浜庢瘡涓椤惧闆朵欢缂栧彿锛岄兘蹇呴』瀹屾垚涓浠界嫭绔嬬殑PSW锛岄櫎闈為【瀹㈠悓鎰忓叾浠栫殑褰㈠紡銆
  • 绠杩绋嬪簭鐘舵佸瘎瀛樺櫒PSW鍚勪綅鐨勫惈涔,鍗曠墖鏈濡備綍纭畾鍜屾敼鍙樺綋鍓嶅伐浣滃瘎瀛樺櫒...
    绛旓細Cy锛圥SW.7锛夛細鍗砅SW鐨凞7浣嶏紝杩涗綅銆佸熶綅鏍囧織銆傝繘浣嶃佸熶綅CY=1锛涘惁鍒機Y=0.AC锛圥SW.6锛夛細鍗砅SW鐨凞6浣嶏紝杈呭姪杩涗綅銆佸熶綅鏍囧織銆傚綋D3鍚慏4鏈夊熶綅鎴栬繘浣嶆椂锛孉C=1锛涘惁鍒橝C=0.F0锛圥SW.5鍙奝SW.1锛夛細鍗砅SW鐨凞5浣嶏紝鐢ㄦ埛鏍囧織浣嶏紱RS1鍙奟S0锛圥SW.4鍙奝SW.3锛夛細鍗砅SW鐨凞4銆丏3浣嶏紝瀵勫瓨鍣缁勯夋嫨鎺у埗...
  • 鍗曠墖鏈鐨瀵勫瓨鍣鏄粈涔,鍦ㄧ數璺浘涓婄湅鐨勫埌鍚
    绛旓細瀵勫瓨鍣灏辨槸鐢ㄦ潵瀛樺偍鐢佃矾鐘舵鐨勩備綘浠鍗曠墖鏈鐨勭鑴氬浘閲屾槸鐪嬩笉瑙佺殑銆傝娣卞叆鍒版瘡涓涓姛鑳芥ā鍧楋紝鎵嶄細鏈夎缁嗙殑璁茶В銆備綘鐪嬩竴涓嬬粡鍏哥殑8051鍗曠墖鏈虹殑杈撳叆杈撳嚭绔彛鐢佃矾鍥撅細褰撶劧鍗曠墖鏈虹殑瀵勫瓨鍣ㄥぇ姒傚垎鏁版嵁瀵勫瓨鍣紝鍦板潃瀵勫瓨鍣紝绉讳綅瀵勫瓨鍣ㄧ瓑绛夈備互鍙51鐨勫畾鏃跺櫒瀵勫瓨鍣細...
  • 鍗曠墖鏈鍐呯殑鐗规畩鍔熻兘瀵勫瓨鍣鏈夊摢浜?
    绛旓細mcs-51鍗曠墖鏈鍐呯殑i/o鍙i攣瀛樺櫒銆佸畾鏃跺櫒銆佷覆琛屽彛缂撳啿鍣ㄤ互鍙婂悇绉嶆帶鍒跺瘎瀛樺櫒鍜鐘舵佸瘎瀛樺櫒閮戒互鐗规畩鍔熻兘瀵勫瓨鍣ㄧ殑褰㈠紡鍑虹幇 銆傚畠浠綅浜庣墖鍐呮暟鎹瓨鍌ㄥ櫒涔嬩笂锛岀鏁e湴鍒嗗竷鍦80h~ffh鐨勫湴鍧绌洪棿鑼冨洿鍐呫俶cs-51鍗曠墖鏈虹壒娈婂姛鑳藉瘎瀛樺櫒鐨勬讳釜鏁颁负26涓 銆傚叾涓湁12涓彲浠ヤ綅瀵诲潃锛岀敤鎴峰彲浠ラ氳繃浣嶅姛鑳芥爣璁板杩12涓瘎瀛樺櫒鐨勪换鎰...
  • 鍗曠墖鏈虹▼搴涓璕3,R4鐨勪綔鐢ㄦ槸浠涔
    绛旓細R3锛孯4鏄瀵勫瓨鍣銆傘傚瘎瀛樺櫒灏辨槸鐢ㄦ潵瀛樻斁鏁版嵁鐨勩傝屼笉鐢ㄨ闂唴瀛樸傛瘮濡 MOV R3,#40銆傘傚綋鐒朵篃鍙互鐢ㄥ叾浠栫殑瀵勫瓨鍣ㄤ唬鏇裤傘80C51鍏辨湁4缁勫瘎瀛樺櫒锛屾瘡缁勫垎鍒槸R0-R7銆傘傘備笉鐭ラ亾杩欐牱鍥炵瓟LZ婊℃剰涓嶃傚彲浠ョ户缁櫨搴I鎴戙傘
  • 鍗曠墖鏈濡備綍纭畾鍜屾敼鍙樺綋鍓嶇殑宸ヤ綔瀵勫瓨鍣
    绛旓細鏌ョ湅鎴栨敼鍙绋嬪簭鐘舵佸瘎瀛樺櫒PSW涓殑RS1銆丷S0涓や綅鐨勫煎彲纭畾鍜屾敼鍙樺綋鍓嶇殑宸ヤ綔瀵勫瓨鍣ㄣ俁S1RS0=00鏃 涓哄伐浣滃瘎瀛樺櫒0缁 RS1RS0=01鏃 涓哄伐浣滃瘎瀛樺櫒1缁 RS1RS0=10鏃 涓哄伐浣滃瘎瀛樺櫒2缁 RS1RS0=11鏃 涓哄伐浣滃瘎瀛樺櫒3缁
  • 51鍗曠墖鏈虹姸鎬瀛瀵勫瓨鍣濡備綍浣跨敤
    绛旓細鍦鍗曠墖鏈涓鐘舵佸瘎瀛樺櫒PSW鏄竴涓敤浜嗘瘮杈冨鐨勫瘎瀛樺櫒,闄や簡D1浣嶇┖鐫澶,鍏跺畠鐨7浣嶉兘瑕佷娇鐢,鍏朵腑D7浣岰y,鏄繘(鍊)浣嶄綅,褰撳仛鍔犳硶鎴栧噺娉曟椂,杩涗綅鏍囧織鍜屽熶綅鏍囧織閮芥槸鐢卞畠鏉ヨ〃绀.褰撲綅鍜屼綅涔嬮棿鐩镐簰浼犻佹椂涔熶笉鑳藉皯浜嗗畠,蹇呴』瑕佺粡瀹冧腑杞.D6浣岮c浣嶆槸杈呭姪杩涗綅鏍囧織,褰撳仛鍔犳硶鎴栧噺娉曟椂鐢辩鍥涗綅鍚戠浜斾綅杩涗綅鎴...
  • 扩展阅读:寄存器是ram还是rom ... 程序状态寄存器psw ... 51单片机状态寄存器 ... 程序状态字寄存器作用 ... 当程序状态字寄存器 ... 西门子1200特殊寄存器 ... 寄存器地址对照表 ... smart地址v储存分配给库 ... 状态寄存器的各位叫状态位 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网