1樓:網友
unsigned char *p; /p為指標,即為r1unsigned char a; /設定任一變數代替a,用來取子程式返回原數值。
子程式,此函式呼叫前必須先給*p批針取外部ram的低位址。
unsigned char date(unsigned char *x)
unsigned char a;
a=*p&0xf0h; /取低位址的高4位。
p++;p指向外部ram下一位址。
a=a|(*p>>4); 先取高位址的高4位並移到低4位。
再和低位址的高4位或下。
return(a);
在主程式中。
void main(void)
p=&adder; /adder為外部ram連續單元的低位址。
a=date(*p);
2樓:網友
假設ri指向的片外單元為0001h-0002hmov r1,#0001h
movx a,@r1
anl a,#0f0h
swap a
mov r0,a
inc r1
movx a,@r1
anl a,#0f0h
xrl a,r0好了!
微控制器設計子程式時需要注意哪些問題?
3樓:網友
一般用c語言編寫程式的時候,沒有什麼特別注意的,但是 如果微控制器的堆疊空間不是很大的話,就要注意了,不要搞太多的區域性變數,不然的話堆疊就會溢位,想找問題都找不到。
4樓:梓一
在編寫子程式時須注意以下幾點:
1要給子程式賦乙個名字,實際是乙個入口位址**。
2要能正確地傳遞引數。
3注意保護現場和恢復現場。
4為了使子程式具有一定的通用性子程式的操作物件應儘量採用位址或暫存器形式,而不用立即數形式。另外,子程式中含有轉移指令,應儘量採用相對轉移指令,以便它不管存放在記憶體的哪個區域都能正確執行。
5樓:網友
應該儘量避免子程式裡還套有子程式。
微控制器程式是如何執行的
6樓:專注51微控制器
1、微控制器復位。
2、pc指向0000h,微控制器從這裡取第一條指令,開始執行。
3、按指令pc逐次增加或跳轉。
4、中斷被觸發時,pc指向中斷向量,從這裡取指令。
5、中斷服務完成回到正常程式中繼續執行。
大概就這麼個過程。
微控制器是怎麼實現程式呼叫的
7樓:鐵瀚楚莎莉
乙個乙個來你吧。
問題1:寫好的。
程式。需要先經過。
軟體。編譯成機器。
**。一般是*.hex或*.
bin檔案。
然後使用。微控制器。
燒錄器。及其對應的燒錄軟體將程式固化進去,固化時一般經過「擦除-檢查-固化-校驗-加密」這麼幾個步驟,之後微控制器就可以直接放置到相應的。
硬體。中使用了。其中這個編譯軟體建議選用keil,不僅可以編譯,而且軟體除錯功能葉很強大。
問題2:微控制器有了程式這是軟體上做好了,之後就是相應的硬體。這個就要你自己。
連線電路。或者說是焊接板子。而且你做軟體前必須先有硬體,不然是沒法寫的。哪個口輸入,哪個口輸出,資料如何傳輸,都要在具體的。
硬體環境。中去定。
問題3:這個問題就是程式編寫的問題了。你在。
設計程式。前應該先設計好程式執行。
流程圖。分為。
主程式。和相應的。
子程式。而子程式又有直接呼叫的子程式和中斷子程式。對於直接呼叫的子程式在呼叫後會返回主程式呼叫的位置,而中斷應該返回中斷前的狀態,這需要在軟體進行除錯。
這是主程式和子程式。另外,程式結構上還有。
選擇結構。和。
迴圈結構。這個就要用到軟體的跳轉。
命令。最後,建議樓主多找點。
例項。看一下,把軟體和硬體結合起來看。
兩程式題 微控制器剛入門 跪求高手指教。
8樓:做而論道
1.未知數x存在30h單元,試編寫程式計算y=3x+7,並將結果存入通用暫存器r1
mov a, 30h
mov b, #03h
mul ab
add a, #07h
mov r1, a
end2.片內ran的30h,31h和32h單元分別存了三個無符號數。試編寫程式將這三個數相加,並將相加的結果的低位元組存入75h單元,高位元組存入76h
mov a, 30h
add a, 31h
mov 75h, a
clr aaddc a, #
mov 76h, a
mov a, 75h
add a, 32h
mov 75h, a
mov a, 76h
addc a, #
mov 76h, aend
怎樣51微控制器呼叫兩個子程式,怎樣51微控制器呼叫兩個子程式
mov r0,08h mov a,0feh loop mov p1,a lcall del rr a djnz r0,loop 使用djnz 指令。為0執行下一指令,不為0跳轉。就可以呼叫內兩個容子程式了 估計是進入到倒計時程式,一直沒有出來。主程式直接呼叫洗滌程式。定時器,每到1s時,再去呼叫一下...
微控制器的子程式 子程式和中斷服務子程式 中是不是最後不能用LJMP之類的跳轉指令的?只能是RET或
簡單來說,可以這樣理解沒錯。ret reti指令本身已經包含了從stack中pop pc的操作。call 和 ret 這兩條指令,要配套使用。jmp 和 reti,不屬於它們,不可濫用。微控制器中,能否使用ljmp指令從主程式轉入子程式或從子程式跳轉回主程式,為什麼 這個當復 然是能使用ljmp指令...
微控制器c語言程式設計的程式問題,一個微控制器c語言程式設計的程式問題!
define keyr p0 define keyc p0 這兩項後面去掉加分號!else p0 0x2f else p0 0x37 這些else多餘,一個if對應一個else define keyr p0 define keyc p0 char key 7 6 應該是全域性變數,應寫在主函式之前!...