Ⅰ 單片機匯編比較寄存器和立即數
51單片機沒有CMP這個指令,可以用CJNE這條指令來代替。實現上述功能指令如下:
MOV A,P3
CJNE A,#03H,NXT
NXT:
JZ LED
Ⅱ 我買了一塊單片機stc89c52,使用偉福給它編程,但是識別不了cmp這個指令。
cmp ? 有這個嗎?
好像都用跳躍判斷比較多.
jb, jnb, jz, jnz, cjne, ...
上網搜尋
51 instruction set
應該就有了.
Ⅲ 單片機中用什麼指令判斷兩個單元中的數據大小
沒見過比較指令,最好還是用減法指令(不會有單片機不支持減法吧 哈哈)判斷減法後的數據,看最高位是否是1
Ⅳ 單片機查表指令movc什麼意思
MOVC指令意思是表示
程序存儲器
里的內容和別的
存儲單元
進行傳送的,主要是用在
累加器
A和程序存儲器的
數據傳送
。
單片機的操作語言使用的是
匯編語言
,是一種用於
電子計算機
、微處理器、
微控制器
或其它可編程器件的低級語言。
包括通用數據傳送指令MOV、條件傳送指令CMOVcc、堆棧操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交換指令XCHG/XLAT/BSWAP、地址或
段描述符
選擇子傳送指令LEA/LDS/LES/LFS/LGS/LSS等。
(4)單片機CMP擴展閱讀
測試指令BT、位測試並置位指令BTS、位測試並復位指令BTR、位測試並
取反
指令BTC、位向前掃描指令BSF、位向後掃描指令BSR等。
加法指令ADD/ADC、減法指令SUB/SBB、加一指令INC、減一指令DEC、比較操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符號擴展指令CBW/CWDE/CDQE、
十進制調整指令
DAA/DAS/AAA/AAS、
邏輯運算
指令NOT/AND/OR/XOR/TEST等。
無
條件轉移指令
JMP、條件轉移指令Jcc/JCXZ、循環指令LOOP/LOOPE/LOOPNE、過程調用指令CALL、子過程返回指令RET、
中斷指令
INTn、INT3、INTO、IRET等。
參考資料來源:
網路
-MOVC
Ⅳ 單片機程序裡面,經常聽說底層,中間層,應用層,什麼意思 51單片機也需要這么分層嗎
一般當程序比較大、功能比較繁多,需要進行結構化程序設計的時候,才會進行分層。分層的好處是可以將應用與硬體剝離,當硬體發生變更(移植,設計更改)時只需改動底層以及少量中間層;當需求發生變更時只需改動上層以及少量中間層。
底層一般是直接訪問硬體的介面,以串口而言如寄存器操作函數;中間層一般是在底層與上層之間進行數據及信息的轉換,以串口而言如封包/拆包/消息產生/消息響應;上層一般面向應用,在很少考慮硬體實現的前提下以通用的方式實現所需的功能,以串口而言如printf。
分這么多層是為了不同程度的開發人員可以同期工作的原因。比如說,底層就僱傭一個特別熟悉晶元和硬體的人做,中間層大概要找比較熟悉應用的人來把硬體功能來做擴展,應用層就隨便抓一把人來開發了。
這樣,多個項目可以公用一個硬體層,有兩到三組中間層的支持工程師,然後每個項目各有一組應用工程師就好了。51也可以這樣做,這和效率無關,層做得好,執行效率不會影響很大,開發效率提高很多。
單片機的應用:
1,通用專用:
這是按單片機適用范圍來區分的。例如,80C51是通用型單片機,它不是為某種專用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
2,線型應用:
這是按單片機是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積。
3,控制型應用:
這是按照單片機大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是唯一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
Ⅵ 單片機」cmp腳「是什麼
單片機」cmp腳「是內部比較器外引腳,一般是以第二功能的形式出現。
Ⅶ 51單片機的匯編指令中有cmp這個嗎
沒有,c語言中有類似的函數。
Ⅷ 單片機cmpo是什麼腳
cmp是比較的意思,o是輸出的意思
這是一個電平比較後輸出的引腳
還需要跟電平輸入引腳配合使用
具體怎麼用可以看下晶元手冊里電平比較的內容
Ⅸ 以ADC作CMP+的STC15單片機的比較器程序怎樣寫
我看了一下STC15系列的手冊,的確這里語焉不詳,說是PIS=1時就可以用ADCIS[2:0]所選中的通道作為比較器同相輸入端了,然而查遍手冊並無這個位域的相關定義。
就我個人來說,認為這個ADCIS[2:0]有可能指的就是ADC_CONTR寄存器的CHS[2:0]位域。你可以做一下試驗:
① 在ADC_POWER=0的情況下,切換CHS[2:0]的值,看看對應的ADC通道有沒有作為比較器的同相輸入端作用;(理論上我們並不需要ADC模塊真的供電工作,只是借用一下其模塊前端的多路開關而已)
② 如果不行,就將ADC_POWER=1,看看此時的情況如何。
如果都不行,那就只能咨詢STC的技術服務了。