A. 單片機 unsigned long轉字元串問題
可以把數據的每一位,通過取余和除法取出來,然後把數據轉換成字元。單個字元就可以處理成字元串使用。也可以看一下有沒有適合你的標准C的轉換函數。
B. 單片機AJMP指令和LJMP指令有何區別
區別如下:
1、定義不同。
AJMP是無條件跳轉指令之一,叫做絕對跳轉。而LJMP則是長轉移指令。如果一個程序代碼在2KB以內(是指編譯後的BIN代碼),可以用AJMP指令。如果一個程序代碼超過了2KB,就要用LJMP指令了。
2、范圍不同。
AJMP 跳轉的范圍是2KB之內的,就是AJMP指令和跳轉的目的地址在ROM中的同一個2KB范圍內。
LJMP 跳轉的范圍是64KB全部的ROM存儲區。
3、使用功能不同。
AJMP主要是用來改變程序執行的路線,到需要的指令或程序去執行。ljmp長轉移指令的功能是:把指令碼中的目標地址addr16裝入程序計數器PC,使機器執行下一條指令時無條件轉移到addr16處執行程序,不影響任何標志。
C. 單片機AJMP有什麼用
類似的無條件轉移指令共有三條:LJMP、AJMP和SJMP。
LJMP轉移的范圍最大,可達64K,但是其指令為三個位元組。
AJMP轉移的范圍稍小,只有2K,但是其指令為兩個位元組。
多年前,單片機的ROM的容量小,外接晶元價格也很貴,AJMP就較受青睞;
目前,ROM容量已經不算什麼問題,編程時,用了多少位元組,多數情況下都不用考慮。所以,AJMP指令的優點,就不被人看重了。
現在,AJMP幾乎就沒有什麼必要使用了,完全可以用LJMP代替。
D. 「MCS-51單片機I/O」數據傳送的控制方式是什麼
共有兩種控制方式:
1,無條件送方式
無條件傳送也稱為同步程序傳送.只有那些一直為數據I/O傳送作好准備的外部設備,才能使用無條件傳送方式.因為在進行I/O操作時,不需要測試外部設備的狀態,可以根據需要隨時進行數據傳送操作.
無條件傳送適用於以下兩類外部設備的數據輸入輸出:
(1)具有常駐的或變化緩慢的數據信號的外部設備.例如:機械開關,指示燈,發光二極體,數碼管等.可以認為它們隨時為輸入輸出數據處於"准備好"狀態。
(2) 工作速度非常快,足以和CPU同步工作的外部設備.例如數/模轉換器DAC,由於DAC是並行工和的,速度很快,因此CPU可以隨時向其傳送數據,進行數/模轉換。
2,程序查詢方式
查詢方式又稱之為有條件傳送方式,即數據的傳送是有條件的.在I/O操作之前,要先檢測外設的狀態,以了解外設是否已為數據輸入輸出作好了准備,只有在確認外設已"准備好"的情況下,CPU才能執行數據輸入輸出操作.通常把以程序方法對外設狀態的檢測稱之為"查詢",所以就把這種有條件的傳送方式稱之為程序查詢方式 。
為了實現查詢方式的數據輸入輸出傳送,需要介面電路提供外設狀態,並以軟體方法進行狀態測試.因此這是一種軟,硬體方法結合的數據傳送方式。
程序查詢方式,電路簡單,查詢軟體也不復雜,而且通用性強,因此適用於各種外部的設備的數據輸入輸出傳送.但是查詢過程對CPU來說畢竟是一個無用的開銷,因此查詢方式只能適用於單項作業,規模比較小的計算機系統。
E. 單片機中jc指令表示什麼有什麼用
JC是判斷C進位標志是否為1,為1則跳轉到指定位置。
JC指令判斷有借位則轉移,也就是說兩數相減為負轉移。JBC指令判斷該位為1則轉移,同時將該位置0。
條件轉移指令只能轉移到離本指令-128~+127位元組范圍內,是一種相對轉移形式,當要往較遠單元地址條件轉移時,可以在本指令-128~+127位元組范圍內安排一條無條件轉移指令作為中轉指令即可。在使用簡單條件跳轉指令時,必須明確相應標志位的變化。
(5)單片機無條件轉換擴展閱讀:
簡單條件跳轉指令:
1、JC 目的地址 進位標志位CF=1,轉移
2、JNC 目的地址 進位標志位CF=0,轉移
3、JZ 目的地址 零標志位ZF=1,轉移
4、JNZ 目的地址 零標志位ZF=0,轉移
5、JS 目的地址 符號標志SF=1,轉移
5、JNS 目的地址 符號標志SF=0,轉移
6、JO 目的地址 溢出標志OF=1,轉移
7、JNO 目的地址 溢出標志OF=0,轉移
8、JP 目的地址 奇偶標志PF=1,轉移
9、JNP 目的地址 奇偶標志PF=0,轉移
10、JCXZ 目的地址 CX=0,轉移
F. 單片機中sjmp和ljmp是啥意思啊
MCS-51的控制轉移類指令,共17條,分為無條件轉移指令、條件轉移指令、子程序調用和返回指令、空操作指令等四類。
無條件轉移指令(共4條)
LJMP addr16 ; PC〈—— addr16
AJMP addr11 ; PC〈—— PC+2 , PC10-0〈—— addr11
SJMP rel ; PC〈—— PC+2 , PC 〈—— PC+rel
JMP @A+DPTR ; PC〈—— A+DPTR
第一條指令稱為長轉移指令(Long Jump);
第二條指令叫作絕對轉移指令(Absolute Jump);
第三條指令稱作短轉移指令(Short Jump);
第四條指令是變址定址轉移指令(散轉指令)。
顯然,每條指令均以改變程序計數器PC(Program Counter)中的內容為宗旨。
(1)長轉移指令(64KB范圍內轉移指令)
長轉移指令的功能是:把指令碼中的目標地址addr16裝入程序計數器PC,使機器執行下一條指令時無條件轉移到addr16處執行程序,不影響任何標志。由於addr16是一個16位二進制地址(地址范圍為0000H—FFFFH),因此長轉移指令一條可以在64KB范圍內轉移的指令。為了使程序設計方便易編,addr16常採用標號地址(如:LOOP、LOOP1、MAIN、START、DONE、NEXT1……)表示,只有在上機執行前才被匯編(或代真)為16位二進制地址。
長轉移指令為三位元組,雙周期指令。
上機試試吧!很直觀的! For Example: LJMP F886H
注意:
在下載的這個8051DEBUG軟體中,不支持標號,且程序狀態字PSW(Program State Word)中的D0位,即奇偶標志位P,與正確的正好相反,這一點是錯誤的,用的時候留意一下。
只要記好:累加器ACC中1的個數為奇數,則P=1;否則P=0。
(2)絕對轉移指令(2KB范圍內的轉移指令)
絕對轉移指令是一條雙位元組雙周期指令,11位地址addr11(a10—a0)在指令中的分布是:
a10 a9 a8 0 0 0 1|a7 a6 a5 a4 a3 a2 a1 a0,其中,00001B是操作碼。在程序設計中,11位地址也可以用符號表示,但在上機執行前必須按照上述指令格式加以代真。
絕對轉移指令執行時分為兩步:
第一步是取指令操作,程序計數器PC中內容被加1兩次;
第二步是把PC加2後的高5為地址PC15—PC11和指令代碼中低11位構成目標轉移地址:PC15—PC11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0
其中,a10—a0的地址范圍是全「0」——全「1」。因此,絕對轉移指令可以在2KB范圍內向前或向後跳轉。
如果把單片機64KB定址區分成32頁(每頁2KB),則PC15—PC11(00000B—11111B)稱為頁面地址(即:0頁—31頁),a10—a0稱為頁內地址,但應注意:AJMP指令的目標轉移地址不是和AJMP指令地址在同一個2KB區域,而是應和AJMP指令取出後的PC地址(即:PC+2)在同一個2KB區域。例如:若AJMP指令地址為2FFEH,則PC+2=3000H,故目標轉移地址必在3000H—37FFH這2KB區域中。
例如:MGH2001:AJMP addr11,
其中,MGH2001為AJMP addr11指令的標號地址,由該指令在程序存儲器中的位置確定,addr11為11位地址,試分析該指令執行後的情況以及指令碼的確定方法。
解:設MGH2001=3100H,addr11=10110100101B,則根據上述指令碼格式可得絕對轉移指令的格式碼為:1 0 1| 0 0 0 0 1|1 0 1 0 0 1 0 1|(a10 a9 a8|操作碼|a7—a0|)
即:A1A5H。該指令執行後:
PC15——PC11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0
PC= 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 B =35A5H
即:程序轉移到35A5H處執行。
(3)短轉移指令(-126—+129范圍內的轉移指令)
短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然後把加2後的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙位元組雙周期指令,指令碼格式為:80H rel(操作碼 地址偏移量),這里,80H是SJMP指令的操作碼;rel是地址偏移量,在程序中也常採用符號地址,上機運行前才被代真成二進制形式。
遇到具體問題時,頭腦中一定要清楚一個關系式:目標轉移地址=源地址+2+rel
(4)變址定址轉移指令(只能在256個存儲器單元內轉移)
這是一條單位元組雙周期無條件轉移指令。
在指令執行之前,用戶應預先把目標轉移地址的基地址送入DPTR,目標轉移地址對基地址的偏移量放在累加器A中。在指令執行時,MCS-51單片機把DPTR中基地址和累加器A中地址偏移量相加,以形成目標轉移地址送入程序計數器PC中。
通常,DPTR中基地址是一個確定的值,常常是一張轉移指令表的起始地址,累加器A中之值為表的偏移量地址,機器通過變址定址轉移指令便可實現程序的分支轉移跳轉的范圍不一樣,可以說是到達的遠近距離不一樣。存儲空間佔用不一樣。
AJMP 的范圍是11位地址,也就是2K的空間內,佔用存儲空間2個位元組,執行周期24個時鍾周期。
LJMP 的范圍是16位地址,也就是64K的空間內,佔用存儲空間3個位元組,執行周期24個時鍾周期。
SJMP 的范圍是8位地址,也就是256BIT的空間內,佔用存儲空間2個位元組,執行周期24個時鍾周期。
JMP一般配合DPTR使用,存儲空間1個位元組,執行周期24個時鍾周期。一般用於多分枝選擇的時候使用,比如按鍵處理。
ACALL,LCALL和以上說明類似,是調用指令,ACALL佔用存儲空間2個位元組,執行周期24個時鍾周期。LCALL佔用存儲空間3個位元組,執行周期24個時鍾周期。