單片機關(guān)鍵技術(shù)基礎(chǔ)詳解(四)
inc a
mov r7, a
ret
用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);
調(diào)用時形如: retvalue = proc_a(0x11);
說明:
a:匯編程序如果帶參數(shù),則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。
b:函數(shù)的形參中第一參數(shù)用R7傳遞,函數(shù)返回值用R7返回,這是C51的通用規(guī)范。其他參數(shù)都有相應(yīng)規(guī)定。函數(shù)可以返回一個位,用psw的c位返回。
c:上面的語句,執(zhí)行順序是把0x11給R7,然后跳轉(zhuǎn)子程序,子程序?qū)⑺?后送回。
d:函數(shù)跳轉(zhuǎn)到匯編程序時,本區(qū)的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調(diào)用后是否要恢復這些常規(guī)資源。上例中,A的值被函數(shù)使用了,編程者不必恢復調(diào)用前的值。
3:51單片機的P0口特殊之處
許多新手都碰到這個問題,其實很簡單,這涉及到芯片的io腳是怎么做出來的。這對硬件工程師來說十分重要。TTL的io腳模型:
P1,P2,P3口都可以理解成左圖,注意vcc下面有個電阻,因此可以理解成:引腳輸出1的能力弱。地那邊沒有電阻,可以理解成引腳吸入電流能力強。而P0口,可以理解成右圖。這就是集電極開路輸出,也叫OC輸出??梢钥闯?,當CTR=1時,三極管導通,引腳被接地;當ctr=0時,三極管截止,引腳浮空,也叫三態(tài)。這個端口這么做的目的是考慮P0口肩負讀寫數(shù)據(jù)和地址復用,這個關(guān)系要仔細看懂cpu時序圖。因此,P0口要加合適的上拉電阻,絕不要加下拉電阻。上拉電阻的選擇要看外部負載情況。
4:P1-3口如何輸入輸出
評論