武漢理工大學(xué)單片機串講_第1頁
武漢理工大學(xué)單片機串講_第2頁
武漢理工大學(xué)單片機串講_第3頁
武漢理工大學(xué)單片機串講_第4頁
武漢理工大學(xué)單片機串講_第5頁
已閱讀5頁,還剩147頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、串講及習(xí)題解答緒論0.2.3 計算機中的有符號數(shù)的表示有符號數(shù)有原碼、反碼和補碼三種表示法。有符號數(shù)有原碼、反碼和補碼三種表示法。有符號數(shù)和無符號數(shù):有符號數(shù)和無符號數(shù):有符號數(shù)有符號數(shù):符號位,符號位為符號位,符號位為“0”表表 示正數(shù),符號位為示正數(shù),符號位為“1” 表示負數(shù)。表示負數(shù)。 無符號數(shù)無符號數(shù):符號意義,只有數(shù)值符號意義,只有數(shù)值 意義。意義。 8位無符號數(shù)的表示范圍為位無符號數(shù)的表示范圍為 0255(000000B11111111B) 16位無符號數(shù)的表示范圍為位無符號數(shù)的表示范圍為065535 (0000000000000000B 1111111111111111B)1.1

2、.原碼原碼 數(shù)值部分用其絕對值,正數(shù)的符號位用數(shù)值部分用其絕對值,正數(shù)的符號位用“0 0”表表示,負數(shù)的符號位用示,負數(shù)的符號位用“1 1”表示。如:表示。如: X1=X1=5=+00000101B X15=+00000101B X1原原= =0 00000101B0000101B X2=-5=-00000101B X2 X2=-5=-00000101B X2原原= =1 10000101B0000101Bo 8 8位原碼數(shù)的范圍為位原碼數(shù)的范圍為FFHFFH7FH7FH(-127-127127127)。原碼)。原碼數(shù)數(shù)00H00H和和80H80H的數(shù)值部分相同、符號位相反,它們分的數(shù)值部分相

3、同、符號位相反,它們分別為別為+0+0和和-0-0。1616位原碼數(shù)的數(shù)值范圍為位原碼數(shù)的數(shù)值范圍為FFFFHFFFFH7FFFH7FFFH(-32767-327673276732767)。原碼數(shù))。原碼數(shù)0000H0000H和和8000H8000H的的數(shù)值部分相同、符號位相反,它們分別為數(shù)值部分相同、符號位相反,它們分別為+0+0和和-0-0。o 原碼表示簡單易懂,而且與真值的轉(zhuǎn)換方便。但原碼表示簡單易懂,而且與真值的轉(zhuǎn)換方便。但若是兩個異號數(shù)相加,或兩個同號數(shù)相減,就要做若是兩個異號數(shù)相加,或兩個同號數(shù)相減,就要做減法。為了把減運算轉(zhuǎn)換為加運算,從而簡化計算減法。為了把減運算轉(zhuǎn)換為加運算,

4、從而簡化計算機的結(jié)構(gòu),就引進了反碼和補碼。機的結(jié)構(gòu),就引進了反碼和補碼。符號位符號位(2 2)反碼)反碼 正數(shù)的反碼與原碼相同;正數(shù)的反碼與原碼相同; 負數(shù)反碼:符號位不變,數(shù)值部分按位取反。負數(shù)反碼:符號位不變,數(shù)值部分按位取反。 例例 求求8 8位反碼機器數(shù):位反碼機器數(shù):X1=+4 X1X1=+4 X1原原=00000100B=00000100B=04H 04H X1 X1反反=00000100B=00000100B=04H04HX2=-4 X2X2=-4 X2原原=1=100001000000100B=84H B=84H X2 X2反反=1=111110111111011B= FBHB

5、= FBH 取反取反(3)(3)補碼補碼 常規(guī)求補碼法常規(guī)求補碼法 正數(shù)的補碼與原碼相同;負數(shù)補碼為其反碼加正數(shù)的補碼與原碼相同;負數(shù)補碼為其反碼加1 1。例例:求:求 8 8位補碼機器數(shù):位補碼機器數(shù):X 1 = + 4 : X 1 原原 = X 1 反反 = X 1 補補 = 00000100=04HX2= - 4:X2原原 =10000100 X2反反 = 11111011 X2補補 = X2 反反+1= 1111100=FCH 8 8位補碼數(shù)的數(shù)值范圍為位補碼數(shù)的數(shù)值范圍為 -128-128127127(80H80H7FH7FH)。)。 1616位補碼數(shù)的數(shù)值范圍為位補碼數(shù)的數(shù)值范圍為

6、 -32768-327683276732767 ( 8000H8000H7FFFH 7FFFH )。)。 字節(jié)字節(jié)80H80H和字和字8000H8000H的真值分別是的真值分別是-128(-80H)-128(-80H)和和 -32768(-8000H)-32768(-8000H)。補碼數(shù)。補碼數(shù)80H80H和和8000H8000H的最高位既代表了的最高位既代表了 符號為負符號為負, ,又代表了數(shù)值為又代表了數(shù)值為1 1。 快速求補碼法:快速求補碼法:將將負數(shù)負數(shù)原碼的最前面的原碼的最前面的1和最后一個和最后一個1之間的每一位取反。例如之間的每一位取反。例如x=4:x原原 = 10000100

7、x補補 = 11111100=FCH 模模- -X X求補碼求補碼 兩數(shù)互補是針對一定的兩數(shù)互補是針對一定的“模?!倍裕?,“模?!奔从嫈?shù)即計數(shù)系統(tǒng)的過量程回零值,例如時鐘以系統(tǒng)的過量程回零值,例如時鐘以12為模(為模(12點也稱點也稱0點),點),4和和8互補,一位十進制數(shù)互補,一位十進制數(shù)3和和7互補(因為互補(因為3710,個位回零,模為,個位回零,模為10110),兩位十進制數(shù)),兩位十進制數(shù)35和和65互補(因為互補(因為3567100,十進制數(shù)兩位回零,模為,十進制數(shù)兩位回零,模為102100),而對于),而對于8位二進制數(shù),模為位二進制數(shù),模為28100000000B=100

8、H,同理同理16位二進制數(shù),模為位二進制數(shù),模為21610000H 取反取反設(shè)有原碼機器數(shù)設(shè)有原碼機器數(shù)X, X, X0X0 則則 XX補補=X=X原原 ; ; X0X0 則則 XX補補= = 模模- -例如例如對八位二進制數(shù)對八位二進制數(shù): X1=+4X1=+4:X1X1補補=00000100=04H=00000100=04H; X2=-4X2=-4:X2X2補補 = 100H-4=FCH= 100H-4=FCH對于對于1616二進制位數(shù):二進制位數(shù): X2=+4X2=+4: X2X2補補= 0004H= 0004H; X2=-4X2=-4: X2X2補補 = 10000H-4=FFFCH=

9、 10000H-4=FFFCH由此得出求補的通用方法:由此得出求補的通用方法:一個數(shù)的補數(shù)模該數(shù),這里補數(shù)是對任意的數(shù)而言,一個數(shù)的補數(shù)模該數(shù),這里補數(shù)是對任意的數(shù)而言,包括正、負數(shù)。而補碼是針對符號機器數(shù)而言。包括正、負數(shù)。而補碼是針對符號機器數(shù)而言。幾點說明:幾點說明: 根據(jù)兩數(shù)互為補的原理,對補碼求補碼就可以得到其原碼,根據(jù)兩數(shù)互為補的原理,對補碼求補碼就可以得到其原碼,將原碼的符號位變?yōu)檎?、負號,即是它的真值將原碼的符號位變?yōu)檎?、負號,即是它的真? . 例如求補碼數(shù)例如求補碼數(shù)FAHFAH的真值的真值 。因為。因為FAHFAH為負數(shù)為負數(shù), ,求補碼求補碼 FAHFAH補補86H=-

10、6, 86H=-6, 所以補碼數(shù)所以補碼數(shù)FAHFAH的真值為的真值為-6. -6. 例如求補碼數(shù)例如求補碼數(shù)78H78H的真值的真值 。因為。因為78H78H為正數(shù)求補碼為正數(shù)求補碼 78H78H補補78H=+120 78H78H=+120 78H的真值為的真值為120 120 一個用補碼表示的機器數(shù),若最高位為一個用補碼表示的機器數(shù),若最高位為0 0,則其余幾位即,則其余幾位即為此數(shù)的絕對值;若最高位為為此數(shù)的絕對值;若最高位為1 1,其余幾位不是此數(shù)的絕,其余幾位不是此數(shù)的絕對值,必須把該數(shù)求補(按位取反(包括符號位)加對值,必須把該數(shù)求補(按位取反(包括符號位)加1 1),),才得到它

11、的絕對值。才得到它的絕對值。如:如:X=-15 -15X=-15 -15補補F1HF1H11110001B 11110001B 求補得求補得00001110000011101 100001111B=1500001111B=15 當(dāng)數(shù)采用補碼表示時,就可以把減法轉(zhuǎn)換為加法。當(dāng)數(shù)采用補碼表示時,就可以把減法轉(zhuǎn)換為加法。例例1:64-10=64+(-10)=5464補補=40H=0100 0000B10補補=0AH=0000 1010B -10補補=1111 0110B做減法運算過程:做減法運算過程: 結(jié)果相同,其真值為結(jié)果相同,其真值為36H(=54)。由于數(shù)的八位限)。由于數(shù)的八位限制,最高位的

12、進位是自然丟失的(在計算機中。進位被存制,最高位的進位是自然丟失的(在計算機中。進位被存放在進位標(biāo)志放在進位標(biāo)志CY中的。)用補碼表示后,減法均可以用補中的。)用補碼表示后,減法均可以用補碼相加完成。因此,在微機中,凡是符號數(shù)一律是用補碼碼相加完成。因此,在微機中,凡是符號數(shù)一律是用補碼表示的。用加法器完成加、減運算,用加法器和移位寄存表示的。用加法器完成加、減運算,用加法器和移位寄存器完成乘、除運算,簡化計算機硬件結(jié)構(gòu)。器完成乘、除運算,簡化計算機硬件結(jié)構(gòu)。用補碼相加過程用補碼相加過程例例2: 34-68=34+(-68)-3434=22H=0010 0010B68=44H=0100 010

13、0B -68補補=1011 1100B做減運算過程:做減運算過程: 用補碼相加過程:用補碼相加過程: 結(jié)果相同。因為符號位為結(jié)果相同。因為符號位為1,對其求補,得其真值:,對其求補,得其真值:-00100010B,即為,即為-34=-22H。由上面兩個例子還可以看出,由上面兩個例子還可以看出,1)用補碼相加完成兩數(shù)相減,相減若無借位,化為補碼相加就會有進位;相用補碼相加完成兩數(shù)相減,相減若無借位,化為補碼相加就會有進位;相減若有借位,化作補碼相加就不會有進位。減若有借位,化作補碼相加就不會有進位。2)補碼運算后的結(jié)果為補碼,需再次求補才能得到運算結(jié)果的真值。補碼運算后的結(jié)果為補碼,需再次求補才

14、能得到運算結(jié)果的真值。 0.2.4 進位和溢出例例3 10550155 10569H 5032H 若把結(jié)果視為無符號數(shù),為若把結(jié)果視為無符號數(shù),為155,結(jié)果正確。若結(jié)果視為符,結(jié)果正確。若結(jié)果視為符號數(shù),結(jié)果為號數(shù),結(jié)果為-101,這顯然是錯誤的。其原因是和數(shù),這顯然是錯誤的。其原因是和數(shù)155大大于于8位符號數(shù)所能表示的補碼數(shù)的最大值位符號數(shù)所能表示的補碼數(shù)的最大值127,使數(shù)值部分占,使數(shù)值部分占據(jù)了符號位的位置,產(chǎn)生了溢出,又如:據(jù)了符號位的位置,產(chǎn)生了溢出,又如: -105-50=-155 CY=1 兩個負數(shù)相加,和應(yīng)為負數(shù),而結(jié)果兩個負數(shù)相加,和應(yīng)為負數(shù),而結(jié)果01100101B卻

15、為卻為正數(shù),顯然錯誤。其原因是和數(shù)正數(shù),顯然錯誤。其原因是和數(shù)-155小于小于8位符號數(shù)所能表位符號數(shù)所能表示的補碼數(shù)的最小值示的補碼數(shù)的最小值-128,也產(chǎn)生了溢出。,也產(chǎn)生了溢出。結(jié)論:當(dāng)兩個補碼數(shù)相加結(jié)果超出補碼表示范圍,就會產(chǎn)生溢出,導(dǎo)致結(jié)果錯結(jié)論:當(dāng)兩個補碼數(shù)相加結(jié)果超出補碼表示范圍,就會產(chǎn)生溢出,導(dǎo)致結(jié)果錯誤。計算機中設(shè)立了溢出標(biāo)志位誤。計算機中設(shè)立了溢出標(biāo)志位OV,通過最高位的進位(符號位的進位),通過最高位的進位(符號位的進位)CY和次高位進位(低位向符號位的進位)和次高位進位(低位向符號位的進位)CY-1異或產(chǎn)生。異或產(chǎn)生。例例4 74744AH+4AH 0 1 0 0 1

16、0 1 0 0 01 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 CY CY-1=0 1=1.有溢出有溢出 OV1 CY CY-1 無進位無進位 CY=0 由上兩例中,例由上兩例中,例3的的 OV=1、CY=1,例例4中中OV=1、CY=0,可,可見溢出和進位并非有必然的聯(lián)系,這是由于兩者產(chǎn)生的原因是不同的,見溢出和進位并非有必然的聯(lián)系,這是由于兩者產(chǎn)生的原因是不同的,兩者判斷的方法也是是不同的。重述如下:兩者判斷的方法也是是不同的。重述如下: 溢出溢出OV:兩個補碼數(shù)相加結(jié)果超出補碼表示范圍而產(chǎn)生,:兩個補碼數(shù)相加結(jié)果超出補碼表示范圍而產(chǎn)生,OV= CY異或異或CY-1 (相

17、同為(相同為0不同為不同為1) 進位進位CY: 當(dāng)運算結(jié)果超出計算機位數(shù)的限制(當(dāng)運算結(jié)果超出計算機位數(shù)的限制(8位、位、16位),會位),會產(chǎn)生進位,它是由最高位計算產(chǎn)生的產(chǎn)生進位,它是由最高位計算產(chǎn)生的,在加法中表現(xiàn)為進位,在減法中在加法中表現(xiàn)為進位,在減法中表現(xiàn)為借位。表現(xiàn)為借位。第1章1.2 存存 儲儲 器器 MCS-51 MCS-51的儲存器結(jié)構(gòu)與常見的微型計算機的配置方法不同的儲存器結(jié)構(gòu)與常見的微型計算機的配置方法不同, ,它將程序存儲器和數(shù)據(jù)存儲器分開它將程序存儲器和數(shù)據(jù)存儲器分開, ,各有自己的尋址方式、各有自己的尋址方式、控制信號和功能??刂菩盘柡凸δ?。 程序存儲器程序存儲器

18、用來存放程序和始終要保留的常數(shù)。用來存放程序和始終要保留的常數(shù)。 數(shù)據(jù)存儲器數(shù)據(jù)存儲器存放程序運行中所需要的常數(shù)和變量。存放程序運行中所需要的常數(shù)和變量。從從物理空間物理空間看看,MCS-51,MCS-51有四個存儲器地址空間:有四個存儲器地址空間: 片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器片內(nèi)程序存儲器、片外程序存儲器片內(nèi)程序存儲器、片外程序存儲器 MCS-51MCS-51存儲器物理結(jié)構(gòu)見下圖所示:存儲器物理結(jié)構(gòu)見下圖所示: 外部數(shù)據(jù) 存儲器 (RAM)外部程序 存儲器 (ROM)內(nèi)部程序 存儲器內(nèi)部數(shù)據(jù) 存儲器8XX51 從從邏輯上邏輯上看看,MCS-51,MCS-51

19、有三個存儲器空間:有三個存儲器空間:片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器 片內(nèi)、片外統(tǒng)一編址的程序存儲器片內(nèi)、片外統(tǒng)一編址的程序存儲器 MCSMCS5151的存儲器的存儲器邏輯結(jié)構(gòu)邏輯結(jié)構(gòu)如圖如圖1-21-2所示。所示。 MCS-51存儲器物理結(jié)構(gòu) 引腳引腳 EA 的接法決定了程序儲存器的的接法決定了程序儲存器的00000FFFH 4KB地址范圍是在單片機片內(nèi)還是片外。地址范圍是在單片機片內(nèi)還是片外。 H00000FFFH圖1-2 MCS-51單片機的存儲器邏輯結(jié)構(gòu)FFFFH0000H0FFFH 外部 RAM 外部R O M內(nèi)部ROM (EA=1)H00008031外部

20、ROM (EA=0)80511000HFFFFH 特殊功能 寄存器內(nèi)部數(shù)據(jù)存儲器內(nèi)部數(shù)據(jù)存儲器 內(nèi)部數(shù)據(jù) RAM7FH80H00HFFH外部數(shù)據(jù)存儲器外部數(shù)據(jù)存儲器 (增強型)程序存儲器程序存儲器 地址重疊 表表1-21-2中還標(biāo)注了各中還標(biāo)注了各SFRSFR的名稱、字節(jié)地址、可的名稱、字節(jié)地址、可尋址位的位地址和位名稱。尋址位的位地址和位名稱。 2121個特殊功能寄存器的名稱及主要功能介紹如個特殊功能寄存器的名稱及主要功能介紹如下,詳細的用法見后面各節(jié)的內(nèi)容。下,詳細的用法見后面各節(jié)的內(nèi)容。 A A累加器,自帶有全零標(biāo)志累加器,自帶有全零標(biāo)志Z Z,A=0A=0則則Z=1Z=1;A0A0則則

21、Z=0Z=0。該標(biāo)志常用于程序分支轉(zhuǎn)移的判斷條件。該標(biāo)志常用于程序分支轉(zhuǎn)移的判斷條件。 B B寄存器,常用于乘除法運算(見第寄存器,常用于乘除法運算(見第2 2章)。章)。 PSWPSW程序狀態(tài)字。主要起著標(biāo)志寄存器的作用,程序狀態(tài)字。主要起著標(biāo)志寄存器的作用,其其8 8位定義見表位定義見表1-31-3。 其中其中 CYCY:進:進/ /借位標(biāo)志借位標(biāo)志 反映最高位的進位借位情況,加法為進位、減反映最高位的進位借位情況,加法為進位、減 法為借位。法為借位。 CY=1CY=1,有進,有進/ /借位借位 ; CY=0CY=0,無進,無進/ /借位。借位。 ACAC:輔助進:輔助進/ /借位標(biāo)志借位

22、標(biāo)志 反映高半字節(jié)與低半字節(jié)之間的進反映高半字節(jié)與低半字節(jié)之間的進/ /借位,借位, AC=1AC=1有進有進/ /借位;借位; AC=0AC=0無進無進/ /借位借位 。 FOFO:用戶標(biāo)志位。可由用戶設(shè)定其含義。:用戶標(biāo)志位。可由用戶設(shè)定其含義。 RSRS1 1,RSRS0 0:工作寄存器組選擇位。:工作寄存器組選擇位。 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0RS1RS0 OV P位地址位名稱 OV OV:溢出標(biāo)志:溢出標(biāo)志 反映補碼運算的運算結(jié)果有無溢出反映補碼運算的運算結(jié)果有無溢出 有溢出有溢出 OV=1OV=1,無溢出,無溢出OV=0OV=0。 - -:無效

23、位。:無效位。 P P:奇偶標(biāo)志:奇偶標(biāo)志 運算結(jié)果有奇?zhèn)€運算結(jié)果有奇?zhèn)€“1 1”,P=1P=1; 運算結(jié)果有偶個運算結(jié)果有偶個“1 1”,P=0P=0。 影響標(biāo)志位的指令及其影響方式見第影響標(biāo)志位的指令及其影響方式見第2 2章。章。SPSP堆棧指針。堆棧指針。8XX518XX51單片機的堆棧設(shè)在片內(nèi)單片機的堆棧設(shè)在片內(nèi)RAMRAM, 對堆棧的操作包括壓入(對堆棧的操作包括壓入(PUSHPUSH)和彈出()和彈出(POPPOP)兩種方式,)兩種方式,并且遵循后進先出的原則,但在堆棧生成的方向上,與并且遵循后進先出的原則,但在堆棧生成的方向上,與80868086正好相反正好相反8XX518XX5

24、1單片機的堆棧操作遵循先加后壓,先彈單片機的堆棧操作遵循先加后壓,先彈后減的順序,按字節(jié)進行操作。后減的順序,按字節(jié)進行操作。 DPTRDPTR數(shù)據(jù)指針寄存器數(shù)據(jù)指針寄存器 用來存放用來存放1616位地址值,以便用間接尋址或變址位地址值,以便用間接尋址或變址尋址片外存儲器。尋址片外存儲器。DPTRDPTR可分成可分成DPLDPL和和DPHDPH兩個兩個8 8位寄位寄存器分別使用。存器分別使用。P0 P1 P2 P3P0 P1 P2 P3I/OI/O端口寄存器端口寄存器 是四個并行是四個并行I/OI/O端口映射入端口映射入SFRSFR中的寄存器。通中的寄存器。通過對該寄存器的讀過對該寄存器的讀/

25、 /寫,可實現(xiàn)從相應(yīng)寫,可實現(xiàn)從相應(yīng)I/OI/O端口的輸端口的輸入入/ /輸出。輸出。 例如:指令例如:指令 MOV PMOV P1 1,A A實現(xiàn)了把實現(xiàn)了把A A累加器中的內(nèi)容從累加器中的內(nèi)容從P P1 1端口輸出的操作。指令端口輸出的操作。指令MOV AMOV A,P3P3實現(xiàn)了把實現(xiàn)了把P3P3端端口線上的信息輸入到口線上的信息輸入到A A中的操作。中的操作。此外還有如下寄存器,它們將在后面章節(jié)介紹:此外還有如下寄存器,它們將在后面章節(jié)介紹:IPIP中斷優(yōu)先級控制寄存器。中斷優(yōu)先級控制寄存器。IEIE中斷允許控制寄存器。中斷允許控制寄存器。 TMODTMOD定時器定時器/ /計數(shù)器方式

26、控制寄存器。計數(shù)器方式控制寄存器。TCONTCON定時器定時器/ /計數(shù)器控制寄存器。計數(shù)器控制寄存器。THTH0 0,TLTL0 0定時器定時器/ /計數(shù)器計數(shù)器0 0。THTH1 1,THTH1 1定時器定時器/ /計數(shù)器計數(shù)器1 1。SCONSCON串行端口控制寄存器。串行端口控制寄存器。SBUFSBUF串行數(shù)據(jù)緩沖器。串行數(shù)據(jù)緩沖器。 PCONPCON電源控制寄存器。電源控制寄存器。電路原理圖o第2章 計算機通過執(zhí)行程序完成人們指定的任務(wù),程計算機通過執(zhí)行程序完成人們指定的任務(wù),程序由一條一條指令構(gòu)成,能為序由一條一條指令構(gòu)成,能為CPU識別并執(zhí)行的指識別并執(zhí)行的指令的集合就是該令的集

27、合就是該CPU的的指令系統(tǒng)指令系統(tǒng)。MCS-51MCS-51單片機匯編語言指令格式單片機匯編語言指令格式: :操作符操作符 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) 操作符指明該指令完成什么操作;操作符指明該指令完成什么操作; 操作數(shù)是指明該指令的操作對象。操作數(shù)是指明該指令的操作對象。 指令中操作數(shù)提供的方式稱為指令中操作數(shù)提供的方式稱為尋址方式尋址方式。2.1 尋址方式尋址方式1、立即尋址立即尋址指令中直接給出操作數(shù)的尋址方式。在指令中直接給出操作數(shù)的尋址方式。在51系列單片機的指令系統(tǒng)中,立即數(shù)用一個系列單片機的指令系統(tǒng)中,立即數(shù)用一個前面加前面加 “#“號的號的8位數(shù)位數(shù)(#data,

28、如,如#30H)或或16位數(shù)位數(shù)(#data16,如,如#2052H)表示。表示。立即尋址中的數(shù),稱為立即尋址中的數(shù),稱為立即數(shù)。立即數(shù)。例如指令:例如指令:MOV A,#30H2、直接尋址、直接尋址操作數(shù)的地址直接出現(xiàn)在指令中。操作數(shù)的地址直接出現(xiàn)在指令中。 尋址對象:尋址對象: 內(nèi)部數(shù)據(jù)存貯器:使用它的地址。內(nèi)部數(shù)據(jù)存貯器:使用它的地址。 特殊功能寄存器:既可使用它的地址,也可以特殊功能寄存器:既可使用它的地址,也可以 直接使用直接使用寄存器名。寄存器名。41H 78H40H 56H41H 78H40H 78H3 3、寄存器尋址、寄存器尋址操作數(shù)存放在寄存器中。操作數(shù)存放在寄存器中。尋址對

29、象:尋址對象:A,B,DPTR,R0R7 。 B 僅在乘除法指令中為寄存器尋址,在其他指令僅在乘除法指令中為寄存器尋址,在其他指令中為直接尋址。中為直接尋址。 A 可以寄存器尋址又可以直接尋址,直接尋址時寫可以寄存器尋址又可以直接尋址,直接尋址時寫作作ACC例如:例如:MOV A,R0 ;R0A,A、R0均為均為寄存器尋址,機器碼寄存器尋址,機器碼E8 MUL AB ;A*BBA,A、B為寄存器尋址,機器碼為寄存器尋址,機器碼A4MOV B,R0 ;R0B,R0為寄存器尋為寄存器尋 址,址,B為直接尋址為直接尋址 機器碼機器碼 88F0,其中,其中 F0為為B的的 字節(jié)地址(見表字節(jié)地址(見表

30、1-2) PUSH ACC ;A的內(nèi)容壓入堆棧的內(nèi)容壓入堆棧 機器碼機器碼C0E0 4、寄存器間址寄存器間址 操作數(shù)存放在以寄存器內(nèi)容為地址的單元中。操作數(shù)存放在以寄存器內(nèi)容為地址的單元中。例如例如 MOV R0,#20H MOV R0,A ;A(20H) 地址的內(nèi)部地址的內(nèi)部RAM MOVX A,R1 ;外部;外部RAM(地址為(地址為P2 R1 ) 的的 內(nèi)容內(nèi)容A MOVX DPTR,A ;A以以DPTR內(nèi)容為地址的內(nèi)容為地址的 外部外部RAM o 5 5、變址尋址、變址尋址 以以DPTRDPTR或或PCPC寄存器內(nèi)容為基地址,和寄存器內(nèi)容為基地址,和A A的內(nèi)容為的內(nèi)容為相加形成操作數(shù)

31、的地址。其中累加器相加形成操作數(shù)的地址。其中累加器A A內(nèi)容是可變內(nèi)容是可變的。的。例如:例如: MOVC A, A+DPTRMOVC A, A+DPTRo 6 6、相對尋址、相對尋址o相對尋址是將程序計數(shù)器相對尋址是將程序計數(shù)器PCPC的當(dāng)前值與指令第二的當(dāng)前值與指令第二字節(jié)給出的偏移量相加,從而形成轉(zhuǎn)移的目標(biāo)地址。字節(jié)給出的偏移量相加,從而形成轉(zhuǎn)移的目標(biāo)地址。例如:例如:JZ 61HJZ 61H7 7、位尋址、位尋址 對片內(nèi)對片內(nèi)RAM中中20H2FH中的中的128個位地個位地址及址及SFR中的可位尋址的位地址尋址。中的可位尋址的位地址尋址。例如:例如: MOV C,20H;20H位的內(nèi)容

32、送位的內(nèi)容送CY標(biāo)標(biāo)志位,志位,C稱為位累加器。稱為位累加器。 MOV A,20H ;字節(jié)尋址,將內(nèi)部;字節(jié)尋址,將內(nèi)部RAM中中20H單元中的內(nèi)容送給累加器單元中的內(nèi)容送給累加器A。 以上兩條指令均為尋址,究竟是位尋址還是以上兩條指令均為尋址,究竟是位尋址還是字節(jié)尋址,根據(jù)兩操作數(shù)類型一致的原則,由另一字節(jié)尋址,根據(jù)兩操作數(shù)類型一致的原則,由另一個操作數(shù)決定。個操作數(shù)決定。 指令匯總表o 第3章 程序設(shè)計支持寫入單片機或仿真調(diào)試的目標(biāo)程序有兩種文件支持寫入單片機或仿真調(diào)試的目標(biāo)程序有兩種文件格式:格式: BIN文件和文件和 HEX文件,文件, BIN文件是由編譯器生成的二進制文件,是程序的文

33、件是由編譯器生成的二進制文件,是程序的機器碼,機器碼, HEX文件是由文件是由INTER公司定義的一種格式,這種公司定義的一種格式,這種格式包括地址、數(shù)據(jù)和校驗碼,并用格式包括地址、數(shù)據(jù)和校驗碼,并用ASCII碼來碼來存儲,可供顯示和打印。存儲,可供顯示和打印。HEX文件需通過符號文件需通過符號轉(zhuǎn)換程序轉(zhuǎn)換程序OHS51進行轉(zhuǎn)換進行轉(zhuǎn)換兩種語言的操作過程見圖兩種語言的操作過程見圖3-1。連接連接/定位器定位器L51匯編語言匯編語言源程序源程序匯編器匯編器A51符號轉(zhuǎn)換程序符號轉(zhuǎn)換程序OHS51絕對地址絕對地址目標(biāo)程序目標(biāo)程序 .BINC語言程序語言程序浮浮動動地地址址目目標(biāo)標(biāo)程程序序編譯器編譯

34、器C51 HEX圖圖 3-1 兩種語言源程序轉(zhuǎn)換成目標(biāo)程序兩種語言源程序轉(zhuǎn)換成目標(biāo)程序 目前很多公司將編輯器、匯編器、編譯器、連接目前很多公司將編輯器、匯編器、編譯器、連接/定位器、符號轉(zhuǎn)換程序做成集成軟件包,用戶進入該定位器、符號轉(zhuǎn)換程序做成集成軟件包,用戶進入該集成環(huán)境,編輯好程序后,只需點擊相應(yīng)菜單就可以集成環(huán)境,編輯好程序后,只需點擊相應(yīng)菜單就可以完成上述的各步,如完成上述的各步,如WAVE、 KEIL ,WAVE集成軟件的使用見附錄集成軟件的使用見附錄。 匯編:將匯編語言匯編:將匯編語言源程序源程序轉(zhuǎn)換成機器語言轉(zhuǎn)換成機器語言目標(biāo)目標(biāo)程序的過程稱為匯編。程序的過程稱為匯編。 匯編程序

35、:能將匯編語言匯編程序:能將匯編語言源程序源程序轉(zhuǎn)換成機器語轉(zhuǎn)換成機器語言言目標(biāo)目標(biāo)程序的系統(tǒng)軟件稱為匯編程序。程序的系統(tǒng)軟件稱為匯編程序。匯編的方法:匯編的方法有兩種匯編的方法:匯編的方法有兩種1.手工匯編:手工匯編: 人工查指令表,查出程序中每條指令對應(yīng)的機器代人工查指令表,查出程序中每條指令對應(yīng)的機器代碼。早期的計算機使用。碼。早期的計算機使用。2. .機器匯編:機器匯編: 用計算機中的匯編程序?qū)τ脩粼闯绦蜻M行匯編。用計算機中的匯編程序?qū)τ脩粼闯绦蜻M行匯編。 用機器匯編要提供給匯編一些信息,遵循匯編程序的一用機器匯編要提供給匯編一些信息,遵循匯編程序的一些約定。這些由偽指令指定。些約定。

36、這些由偽指令指定。1)確定程序中每條匯編語言指令的指令機器碼確定程序中每條匯編語言指令的指令機器碼2)確定每條指令在存儲器中的存放地址確定每條指令在存儲器中的存放地址3)提供錯誤信息提供錯誤信息4)提供目標(biāo)執(zhí)行文件提供目標(biāo)執(zhí)行文件(*.OBJ/*.HEX)和列表文件和列表文件(*.LST) 地址地址 機器碼機器碼源程序源程序 ORG 2000H 2000H 78 30 MAIN: MOV R0,#30H 2002H E6 MOV A,R0 匯編的主要任務(wù):匯編的主要任務(wù):1. 機器指令:指令系統(tǒng)中的全部指令。每條機器機器指令:指令系統(tǒng)中的全部指令。每條機器指令都有對應(yīng)的機器代碼,可以被指令都有

37、對應(yīng)的機器代碼,可以被CPU執(zhí)行。執(zhí)行。2. 偽指令:偽指令: 匯編控制指令,沒有指令代碼,只匯編控制指令,沒有指令代碼,只用于匯編過程,為匯編程序提供匯編信息。用于匯編過程,為匯編程序提供匯編信息。一一. 匯編語言指令類型匯編語言指令類型3 3. 宏指令宏指令 宏匯編功能:將需要反復(fù)多次執(zhí)行的程序段定義成宏匯編功能:將需要反復(fù)多次執(zhí)行的程序段定義成一個宏指令名(宏定義)。編程時,可在程序中使用宏一個宏指令名(宏定義)。編程時,可在程序中使用宏指令名來替代被定義的程序段(宏調(diào)用)。指令名來替代被定義的程序段(宏調(diào)用)。宏定義過程宏定義過程:宏調(diào)用過程:宏調(diào)用過程: 宏指令名宏指令名 實際參數(shù)實

38、際參數(shù) 宏指令名宏指令名 實際參數(shù)實際參數(shù)宏指令名宏指令名 MACRO 形式參數(shù)形式參數(shù) ;被定義的程序段;被定義的程序段 ENDM二偽指令二偽指令 常用偽指令及功能:常用偽指令及功能:1.起始指令起始指令 ORG nn功能:定義程序或數(shù)據(jù)塊的起始地址。功能:定義程序或數(shù)據(jù)塊的起始地址。指示此語句后面的指示此語句后面的程序或數(shù)據(jù)塊以程序或數(shù)據(jù)塊以nn為起始地址,連續(xù)存放在程序存儲器中。為起始地址,連續(xù)存放在程序存儲器中。 指令地址指令地址 機器碼機器碼源程序源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ORG 3000

39、H 3000H 23 TAB: DB 23H,100,A 3001H 64 3002H 412.字節(jié)定義字節(jié)定義 標(biāo)號:標(biāo)號: DB(字節(jié)常數(shù),或字符或表達式)(字節(jié)常數(shù),或字符或表達式)功能:功能:指示在程序存儲器中以標(biāo)號指示在程序存儲器中以標(biāo)號為起始地址的單元里存放的數(shù)為為起始地址的單元里存放的數(shù)為字節(jié)數(shù)據(jù)(八位二進制數(shù))。字節(jié)數(shù)據(jù)(八位二進制數(shù))。例如例如 LN:DB 32,C,25H,-1;LNLN+2 地址單元依次存放地址單元依次存放20H , 43H , 25H ,F(xiàn)FH地址地址 數(shù)據(jù)數(shù)據(jù)LN20LN+143LN+225LN+3FF3. 字定義字定義 標(biāo)號:標(biāo)號:DW (字常數(shù)或表

40、達式)(字常數(shù)或表達式)作用:作用: 指示在程序存儲器中以標(biāo)號為指示在程序存儲器中以標(biāo)號為起始地址的單元里存放的數(shù)為字數(shù)據(jù)起始地址的單元里存放的數(shù)為字數(shù)據(jù)(即(即16位的二進制數(shù)),例如:位的二進制數(shù)),例如:GH :DW 1234H,5678H,08GH1234GH+25678GH+40008 5. 等值指令等值指令 標(biāo)號標(biāo)號 EQU(數(shù)值表達式)(數(shù)值表達式) 表示表示EQU兩邊的量等值,用于為標(biāo)號或標(biāo)識符賦值。兩邊的量等值,用于為標(biāo)號或標(biāo)識符賦值。例如:例如: X1 EQU 2000H X2 EQU 0FH MAIN:MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2

41、 ; A=A+0FH4保留字節(jié)保留字節(jié) 標(biāo)號:標(biāo)號:DS (數(shù)值表達式)(數(shù)值表達式)作用:作用: 指示在程序存儲器中保留以標(biāo)號為起始地指示在程序存儲器中保留以標(biāo)號為起始地址的若干字節(jié)單元,其單元個數(shù)由數(shù)值表達式指定。址的若干字節(jié)單元,其單元個數(shù)由數(shù)值表達式指定。例如例如 L1:DS 32 ; 從從L1地址開始保留地址開始保留32個存儲單元。個存儲單元。6. 位定義位定義 標(biāo)號標(biāo)號 BIT 位地址位地址 作用:作用: 同同EQU指令,不過定義的是位操作地址。指令,不過定義的是位操作地址。例如例如 AIC BIT P1.1。7.匯編結(jié)束匯編結(jié)束 END作用:作用: 指示源程序段結(jié)束。指示源程序段

42、結(jié)束。 END指令放在程序的最后。指令放在程序的最后。A51匯編程序還有一些其它的偽指令,列在教材表匯編程序還有一些其它的偽指令,列在教材表3-1中,以備查閱。中,以備查閱。3.3 3.3 匯編語言程序設(shè)計步驟匯編語言程序設(shè)計步驟一一. .確定方案和計算方法確定方案和計算方法二二. .了解應(yīng)用系統(tǒng)的硬件配置、性能指標(biāo)了解應(yīng)用系統(tǒng)的硬件配置、性能指標(biāo)三三. .建立系統(tǒng)數(shù)學(xué)模型,確定控制算法和操作步驟建立系統(tǒng)數(shù)學(xué)模型,確定控制算法和操作步驟四四. .合理分配存儲器單元和了解合理分配存儲器單元和了解I/O接口地址接口地址五五. 編制源程序編制源程序1.按功能設(shè)計程序,明確各程序之按功能設(shè)計程序,明確

43、各程序之間的相互關(guān)系間的相互關(guān)系2. 用流程圖表示程序結(jié)構(gòu)和功能用流程圖表示程序結(jié)構(gòu)和功能開始開始1 YN?3.程序中用注釋說明指令在程序中的程序中用注釋說明指令在程序中的作用,方便閱讀、調(diào)試和修改作用,方便閱讀、調(diào)試和修改 子程序是構(gòu)成單片機應(yīng)用程序必不可少的部分,子程序是構(gòu)成單片機應(yīng)用程序必不可少的部分,通過通過ACALL和和LCALL兩條子程序調(diào)用指令,可以兩條子程序調(diào)用指令,可以十分方便地用來調(diào)用任何地址處的子程序。十分方便地用來調(diào)用任何地址處的子程序。 子程序節(jié)省占用的存儲單元,使程序簡短、子程序節(jié)省占用的存儲單元,使程序簡短、清晰,善于靈活的使用子程序,是程序設(shè)計的重要清晰,善于靈

44、活的使用子程序,是程序設(shè)計的重要技巧之一。技巧之一。 子程序必須以子程序必須以RET指令結(jié)尾指令結(jié)尾. 3.7 子程序子程序 當(dāng)一段程序需多次應(yīng)用當(dāng)一段程序需多次應(yīng)用,或為多人應(yīng)用時或為多人應(yīng)用時,這這段程序編為子程序段程序編為子程序.表表4.1 C51編譯器支持數(shù)據(jù)類型編譯器支持數(shù)據(jù)類型n 1.字符型字符型(char)、整型、整型(int)和長整型和長整型(long)均有均有符號型符號型(signed)和無符號型和無符號型(unsigned)兩兩 種,如果種,如果不是必須,盡可能選擇不是必須,盡可能選擇unsigned型,這將會使編譯器型,這將會使編譯器省卻符號位的檢測,使生成的省卻符號位的

45、檢測,使生成的 程序代碼比程序代碼比signed類型短類型短得多。得多。n 2.程序編譯時,程序編譯時,C51編譯器會自動進行類型轉(zhuǎn)換,編譯器會自動進行類型轉(zhuǎn)換,例如將一個位變量賦值給一個整型變量時例如將一個位變量賦值給一個整型變量時 ,位型值自動,位型值自動轉(zhuǎn)換為整型值;當(dāng)運算符兩邊為不同類型的數(shù)據(jù)時,編譯轉(zhuǎn)換為整型值;當(dāng)運算符兩邊為不同類型的數(shù)據(jù)時,編譯器先將低級的數(shù)據(jù)類器先將低級的數(shù)據(jù)類 型轉(zhuǎn)換為較高級的數(shù)據(jù)類型,運算型轉(zhuǎn)換為較高級的數(shù)據(jù)類型,運算后,運算結(jié)果為高級數(shù)據(jù)類型。后,運算結(jié)果為高級數(shù)據(jù)類型。n3. 51單片機內(nèi)部數(shù)據(jù)存貯器的可尋址位單片機內(nèi)部數(shù)據(jù)存貯器的可尋址位(20H2FH

46、)定義為定義為bit型,而特殊功能寄存器的可尋型,而特殊功能寄存器的可尋 址位址位(即即地址為地址為X0H和和X8H的的SFR的各位的各位)只能定義為只能定義為sbit類型類型。 4.4 指針指針 CPU輸入接口輸入接口輸入設(shè)備輸入設(shè)備輸出接口輸出接口輸出設(shè)備輸出設(shè)備圖圖5 51 1輸入接口和輸出接口輸入接口和輸出接口 P1.0 T2 P1.0 T2引腳引腳, ,定時定時/ /計數(shù)器計數(shù)器2 2外部計數(shù)脈沖輸入外部計數(shù)脈沖輸入 P1.1 T2EXP1.1 T2EX引腳引腳, ,定時定時/ /計數(shù)器計數(shù)器2 2觸發(fā)和方向控制觸發(fā)和方向控制 P1.5 P1.5 MOSIMOSI引腳引腳, ,在系統(tǒng)

47、編程數(shù)據(jù)輸入在系統(tǒng)編程數(shù)據(jù)輸入 P1.6 P1.6 MISOMISO引腳引腳, ,在系統(tǒng)編程數(shù)據(jù)輸出在系統(tǒng)編程數(shù)據(jù)輸出 P1.7 P1.7 SCKSCK引腳引腳, ,在系統(tǒng)編程時鐘輸入在系統(tǒng)編程時鐘輸入lP2P2口口1.1.作為輸入作為輸入/ /輸出口。輸出口。 2.2.作為高作為高8 8位地址總線。位地址總線。 lP3P3口口P3P3口為雙功能口為雙功能 1.1.作第一功能使用時,其功能為輸入作第一功能使用時,其功能為輸入/ /輸出口。輸出口。 2.2.作第二功能使用時,每一位功能定義如下表作第二功能使用時,每一位功能定義如下表所示所示: : RD (外部數(shù)據(jù)存儲器讀選通信號入)(外部數(shù)據(jù)存

48、儲器讀選通信號入) P3.7 P3.7 WR (外部數(shù)據(jù)存儲器寫選通信號入)(外部數(shù)據(jù)存儲器寫選通信號入)P3.6 P3.6 T1 T1 (定時器(定時器1 1外部計數(shù)脈沖輸入)外部計數(shù)脈沖輸入)P3.5 P3.5 T0 T0 (定時器(定時器0 0外部計數(shù)脈沖輸入)外部計數(shù)脈沖輸入)P3.4 P3.4 P3.3 P3.3 P3.2 P3.2 TXD TXD (串行輸出線)(串行輸出線)P3.1 P3.1 RXD RXD (串行輸入線)(串行輸入線) P3.0 P3.0 第第 二二 功功 能能 端口引腳端口引腳 INT0 INT0(外部中斷外部中斷0 0輸入線)輸入線)INT1 INT1 (外

49、部中斷外部中斷1 1輸入線)輸入線) 都有兩個輸入緩沖器,分別受內(nèi)部讀鎖存都有兩個輸入緩沖器,分別受內(nèi)部讀鎖存器和讀引腳控制信號的控制。器和讀引腳控制信號的控制。 都有鎖存器都有鎖存器( (即專用寄存器即專用寄存器POPOP3)P3) 都是場效應(yīng)管輸出驅(qū)動。都是場效應(yīng)管輸出驅(qū)動。 并行接口是單片機用得最多的部分,可直接接外并行接口是單片機用得最多的部分,可直接接外部設(shè)備部設(shè)備( (要注意電平的匹配要注意電平的匹配) )。本章以最簡單。本章以最簡單 的實驗室的實驗室最容易實現(xiàn)的外部設(shè)備最容易實現(xiàn)的外部設(shè)備開關(guān)和發(fā)光二極管為例說明開關(guān)和發(fā)光二極管為例說明并行口的應(yīng)用設(shè)計,其他外設(shè)并行口的應(yīng)用設(shè)計,

50、其他外設(shè) 的測控原理與其一樣。的測控原理與其一樣。2. 2. 當(dāng)并行口作為輸入口使用時,應(yīng)對所用的口線寫當(dāng)并行口作為輸入口使用時,應(yīng)對所用的口線寫“1 1”,使其內(nèi)部的驅(qū)動場效應(yīng)管截止,使其內(nèi)部的驅(qū)動場效應(yīng)管截止 ,防止誤讀。寫,防止誤讀。寫“1 1”以后不影響讀引腳指令,因為讀入的信息是經(jīng)緩沖以后不影響讀引腳指令,因為讀入的信息是經(jīng)緩沖器器2(2(見圖見圖5.1)5.1)進入進入CPUCPU的,而不是讀的鎖存器。的,而不是讀的鎖存器。 8XX51有有5個中斷源,其符號、名稱、產(chǎn)生個中斷源,其符號、名稱、產(chǎn)生條件及中斷服務(wù)程序的入口地址如表條件及中斷服務(wù)程序的入口地址如表6.1。符號符號 名名

51、 稱稱 中中 斷斷 引引 起起 原原 因因 中斷服務(wù)中斷服務(wù)程序入口程序入口INT0INT0外部外部中斷中斷0 0 P3.2 P3.2引腳的引腳的低電平或下降沿信號低電平或下降沿信號 0003H0003HINT1INT1 外部外部中斷中斷1 1P3.3P3.3引腳的引腳的低電平或下降沿信號低電平或下降沿信號 0013H0013HT0T0定時器定時器0 0中斷中斷 定時計數(shù)器定時計數(shù)器0 0計數(shù)回零溢計數(shù)回零溢出出 000BH000BHT1T1定時器定時器1 1中斷中斷 定時計數(shù)器定時計數(shù)器1 1計數(shù)回零溢計數(shù)回零溢出出 001BH001BHT2T2定時器定時器2 2中斷中斷 定時計數(shù)器定時計數(shù)

52、器2 2中斷中斷(TF2(TF2或或T2EXT2EX信號)信號)002BH002BHTI/RI TI/RI 串行口串行口中斷中斷 串行通信完成一幀數(shù)據(jù)串行通信完成一幀數(shù)據(jù)發(fā)送或接收引起中斷發(fā)送或接收引起中斷 0023H0023H TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 請求請求有有/無無 T1工作工作啟啟/停停 T0 請求請求有有/無無 T0 工作工作啟啟/停停 INT1 請求請求有有/無無 INT1方式方式下沿下沿/ 低電平低電平 INT0請求請求有有/無無 INT0方式方式下沿下沿/低低電平電平 (2)(2)中斷請求標(biāo)志及外部中斷方式選擇寄存器中斷請求標(biāo)志及外部中斷方

53、式選擇寄存器TCONTCONT0T1串行口串行口 當(dāng)當(dāng) 某幾個中斷源在某幾個中斷源在IP寄存器相應(yīng)位同為寄存器相應(yīng)位同為1或同為零或同為零時,由內(nèi)部查詢確定優(yōu)先級,查詢的順序是:時,由內(nèi)部查詢確定優(yōu)先級,查詢的順序是:CPU優(yōu)先響應(yīng)優(yōu)先響應(yīng) 先查詢的中斷請求先查詢的中斷請求T2INT0INT1二、中斷請求的撤除二、中斷請求的撤除 CPU響應(yīng)中斷后,應(yīng)撤除該中斷請求標(biāo)志,否則響應(yīng)中斷后,應(yīng)撤除該中斷請求標(biāo)志,否則會再次中斷。會再次中斷。 對定時計數(shù)器對定時計數(shù)器T0、T1的溢出中斷,的溢出中斷,CPU響應(yīng)響應(yīng)中斷后,硬件自動清除中斷請求標(biāo)志中斷后,硬件自動清除中斷請求標(biāo)志TF0 TF1。 對邊沿

54、觸發(fā)的外部中斷對邊沿觸發(fā)的外部中斷INT1和和INT0,CPU響響應(yīng)中斷后硬件自動清除中斷請求標(biāo)志應(yīng)中斷后硬件自動清除中斷請求標(biāo)志IE0和和IE1。 對于串行口中斷,對于串行口中斷,CPU響應(yīng)中斷后,沒有用硬響應(yīng)中斷后,沒有用硬件清除中斷請求標(biāo)志件清除中斷請求標(biāo)志TI、RI,即這些中斷標(biāo)志,即這些中斷標(biāo)志 不不會自動清除,必須用軟件清除,這是在編串行通會自動清除,必須用軟件清除,這是在編串行通信中斷服務(wù)中應(yīng)該注意的。信中斷服務(wù)中應(yīng)該注意的。開中斷總控開關(guān)開中斷總控開關(guān)EA,置位中斷源的中斷允許位。,置位中斷源的中斷允許位。對外部中斷對外部中斷INT0、INT1應(yīng)選擇中斷觸發(fā)方式應(yīng)選擇中斷觸發(fā)方

55、式編寫中斷服務(wù)程序,并注意用保護現(xiàn)場和恢復(fù)現(xiàn)場,編寫中斷服務(wù)程序,并注意用保護現(xiàn)場和恢復(fù)現(xiàn)場,以免中斷返回時,丟失原寄存器、累加器中的信息。以免中斷返回時,丟失原寄存器、累加器中的信息。多個中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級,預(yù)置多個中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級,預(yù)置IP。其中其中interrupt n 表示將函數(shù)聲明為中斷服務(wù)函數(shù)表示將函數(shù)聲明為中斷服務(wù)函數(shù),n 為中斷源編號,可以是為中斷源編號,可以是031間的整數(shù)間的整數(shù) ,不允,不允許是帶運算符的表達式,許是帶運算符的表達式,n 通常取以下值:通常取以下值:返回值返回值 函數(shù)名函數(shù)名(參數(shù)參數(shù))模式再入模式再入interrupt nusing

56、 m 設(shè)置為計數(shù)工作方式時,定時設(shè)置為計數(shù)工作方式時,定時/計數(shù)器對引腳計數(shù)器對引腳 P3.4 (T0)和和P3.5 (T1)輸入的外部脈沖信號計數(shù)。輸入的外部脈沖信號計數(shù)。 當(dāng)輸入脈沖信號產(chǎn)生由當(dāng)輸入脈沖信號產(chǎn)生由1至至0的下降沿時,定時器的值的下降沿時,定時器的值 加加 1。測量過程是:。測量過程是: CPU前一個機器周期采樣脈沖值為高,前一個機器周期采樣脈沖值為高,下一個機器周期采樣脈沖值為低,則計數(shù)器加下一個機器周期采樣脈沖值為低,則計數(shù)器加 1。 無論是定時還是計數(shù),當(dāng)軟件設(shè)定了定時無論是定時還是計數(shù),當(dāng)軟件設(shè)定了定時/計數(shù)器的計數(shù)器的工作方式,啟動以后,定時工作方式,啟動以后,定時

57、/計數(shù)器就按規(guī)定的方式工作,計數(shù)器就按規(guī)定的方式工作,不占用不占用CPU的操作時間,此時的操作時間,此時CPU可執(zhí)行其他程序,到可執(zhí)行其他程序,到了計滿規(guī)定的時間或規(guī)定的個數(shù)(定時了計滿規(guī)定的時間或規(guī)定的個數(shù)(定時/計數(shù)器溢出),計數(shù)器溢出),定時定時/計數(shù)器會給出溢出標(biāo)志,你可以通過查詢或中斷方計數(shù)器會給出溢出標(biāo)志,你可以通過查詢或中斷方式了解是否溢出。這種工作的方式如同人帶的手表,人式了解是否溢出。這種工作的方式如同人帶的手表,人在工作或睡覺,而手表依然滴滴答答行走,你可以通過在工作或睡覺,而手表依然滴滴答答行走,你可以通過看表或設(shè)鬧鐘方式,到了規(guī)定的時間,干你想干的事??幢砘蛟O(shè)鬧鐘方式,

58、到了規(guī)定的時間,干你想干的事。寄存器寄存器定時器共有兩個控制寄存器:定時器共有兩個控制寄存器: 定時器控制定時器控制TCON(88H) 定時器工作模式寄存器定時器工作模式寄存器TMOD(89H)1. 工作模式寄存器工作模式寄存器TMOD(89H) TMOD用于控制用于控制T0和和T1的操作模式。其各位的定義的操作模式。其各位的定義如下:如下:定時器定時器T0 定時器定時器T12. 控制寄存器控制寄存器TCON(88H) TCON寄存器寄存器 中定時器控制中定時器控制 僅用了其中高四位,其意義如下:僅用了其中高四位,其意義如下: TF1:T1溢出中斷請求標(biāo)志。溢出中斷請求標(biāo)志。 TF1=1,T1

59、有溢出中斷請求。有溢出中斷請求。 TF1=0,T1無溢出中斷請求。無溢出中斷請求。 TR1:T1運行控制位。運行控制位。 TR1=1,啟動,啟動T1工作。工作。 TR1=0,停止,停止T1工作。工作。7.3 定時器的四種工作方式定時器的四種工作方式 對對TMOD寄存器的寄存器的M1、M0位的設(shè)置,可選擇四種工作位的設(shè)置,可選擇四種工作方式,即方式方式,即方式0、方式、方式1、方式、方式2和方式和方式3。下面用下面用THx、TLx(x=1或或0)表示)表示TH1 TL1 TH0 TL0。方式方式 定時器定時器(T0或或T1)工作于工作于13位定時、計數(shù)方式。位定時、計數(shù)方式。用于計數(shù)方式時最大計

60、數(shù)值為用于計數(shù)方式時最大計數(shù)值為 213 8192個脈沖個脈沖用于定時工作時,定時時間為:用于定時工作時,定時時間為: t(213一一T0初值初值) 時鐘周期時鐘周期12在這種模式下,在這種模式下,16寄存器寄存器(THx和和TLx)只用只用13位,其中位,其中THx占高占高8位。其中位。其中TLx占低占低5位,位, TLx的高的高3位末用。位末用。當(dāng)當(dāng)TLx的低的低5位溢出時向位溢出時向THx進位進位,而而THx溢出時硬件置溢出時硬件置位位TF0,并申請中斷。,并申請中斷。 2 .方式方式1 當(dāng)當(dāng)TMOD中中M1M0=01時,定時計數(shù)器工作在時,定時計數(shù)器工作在方式方式1。該模式是一個該模式

溫馨提示

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

評論

0/150

提交評論