久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

C8051高手幫我看看這個問題

1、小弟現(xiàn)在在學(xué)習(xí)C8051單片機(jī),芯片是C8051cF310,用KEIL C51開發(fā).現(xiàn)在很奇怪C程序編譯后main()的地址分配從0x0003開始,書上說中斷入口的地址從0x0003到0x00AB,這樣就把中斷向量地址占去了.需要怎么設(shè)置嗎?
2、還有51工作寄存器的問題,資料說函數(shù)的參數(shù)、返回值、局部變量地址都會保存在工作寄存器組,還有函數(shù)跳轉(zhuǎn)的時候也是把局部變量保存在工作寄存器組,而很多函數(shù)可以共用一個工作寄存器組,這樣空間不夠怎么辦?
3、函數(shù)跳轉(zhuǎn)的時候局部變量的保存一般會用軟堆棧作入棧出棧,C8051是否用寄存器保存局部變量?
4、如果是從函數(shù)跳轉(zhuǎn)到中斷,因?yàn)椴淮_定是從哪個函數(shù)跳轉(zhuǎn),怎么寫局部變量的保存?
全部回復(fù)(8)
正序查看
倒序查看
2008-04-01 00:16
1,可能你沒有開中斷.
2,不會很多呀,函數(shù)退出后會釋放.可能用外部變量,指針,數(shù)組;
3,是用堆棧的;
4,系統(tǒng)自己安排的.
0
回復(fù)
gugu_1982
LV.3
3
2009-02-23 17:09
我想應(yīng)該在主函數(shù)前加個開始語句吧,跳過中斷入口地址,像這樣:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:......
中斷不管開不開都盡量不占用,避免一起誤操作.
0
回復(fù)
abing
LV.8
4
2009-02-27 10:40
@gugu_1982
我想應(yīng)該在主函數(shù)前加個開始語句吧,跳過中斷入口地址,像這樣:ORG0000HAJMPMAINORG0030HMAIN:......中斷不管開不開都盡量不占用,避免一起誤操作.
雖然沒用過,但我想因?yàn)槭菦]用中斷的原因所以分配在那個地址上了,這樣可以減小資源浪費(fèi)嘛.

另:我不知在c里是否可以定義一個函數(shù)的實(shí)際地址?就算可以又有什么意義呢?
0
回復(fù)
gugu_1982
LV.3
5
2009-03-01 16:51
@abing
雖然沒用過,但我想因?yàn)槭菦]用中斷的原因所以分配在那個地址上了,這樣可以減小資源浪費(fèi)嘛.另:我不知在c里是否可以定義一個函數(shù)的實(shí)際地址?就算可以又有什么意義呢?
c里應(yīng)該不能吧,但匯編可以,我也不太懂了,剛剛學(xué)習(xí)
0
回復(fù)
xing1234
LV.6
6
2009-03-04 22:34
@gugu_1982
c里應(yīng)該不能吧,但匯編可以,我也不太懂了,剛剛學(xué)習(xí)
老大,這些問題交給編繹器去做,為什么要開發(fā)編繹器?就是簡化我們工作的,少操點(diǎn)心,你的這些問題編繹器全幫你做了.不用你管,全自動分配并保存
0
回復(fù)
gugu_1982
LV.3
7
2009-03-06 11:13
@xing1234
老大,這些問題交給編繹器去做,為什么要開發(fā)編繹器?就是簡化我們工作的,少操點(diǎn)心,你的這些問題編繹器全幫你做了.不用你管,全自動分配并保存
匯編會自動分配地址嗎?這些我還真不懂,勞您指教了
0
回復(fù)
abing
LV.8
8
2009-03-06 19:32
@gugu_1982
匯編會自動分配地址嗎?這些我還真不懂,勞您指教了
我想第六貼應(yīng)指C編譯器.
不知何時我已把匯編忘得差不多了,為何還要用匯編?有這個心要不?

如果需要一個變量"i",我們不需要關(guān)心這個變量存在那個地方,只知道有這個變量就行了.
如:
{
unsigned char i,j,k;  //定義三個變量
i=read_adc(0);
j=reda_adc(1);
k=i+j;
out(k);
}
在程序中我們不需要知道變量存在的地址在哪,就算知道了也用不著,我們只需要結(jié)果就可以了.

匯編我認(rèn)為最適合初學(xué)單片機(jī)并且是沒學(xué)過C語言與自學(xué)的人.
0
回復(fù)
xing1234
LV.6
9
2009-03-09 17:49
@abing
我想第六貼應(yīng)指C編譯器.不知何時我已把匯編忘得差不多了,為何還要用匯編?有這個心要不?如果需要一個變量"i",我們不需要關(guān)心這個變量存在那個地方,只知道有這個變量就行了.如:{unsignedchari,j,k;  //定義三個變量i=read_adc(0);j=reda_adc(1);k=i+j;out(k);}在程序中我們不需要知道變量存在的地址在哪,就算知道了也用不著,我們只需要結(jié)果就可以了.匯編我認(rèn)為最適合初學(xué)單片機(jī)并且是沒學(xué)過C語言與自學(xué)的人.
謝謝樓上的解釋,支持一下,樓主的主題是C.現(xiàn)在8位單片機(jī)的ROM和RAM已經(jīng)做得很大,并且可以選擇的型號也很多.在8位機(jī)能應(yīng)用的領(lǐng)域,基本上資源都夠用.在能用C的情況下極少再用匯編,這是我的個人看法,有不當(dāng)之處海函.
0
回復(fù)
發(fā)