gogo专业大尺度亚洲高清人体,美女张开双腿让男生桶,亚洲av无码一区二区三区鸳鸯影院,久久久久国产精品人妻

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 單片機(jī)學(xué)習(xí) > 單片機(jī)編程入門(mén) > 單片機(jī)編程面試題 常見(jiàn)問(wèn)題及答案

單片機(jī)編程面試題 常見(jiàn)問(wèn)題及答案 時(shí)間:2018-01-24      來(lái)源:未知

2018年新的一年,新的開(kāi)始,相信有很多人都在備戰(zhàn)找新的工作了。那么不妨來(lái)了解一些單片機(jī)編程面試題,做好萬(wàn)全的準(zhǔn)備,才可能百發(fā)百中嘛。下面分享三個(gè)單片機(jī)編程面試題,都是很常見(jiàn)的問(wèn)題,附帶答案。

問(wèn)題一:char *p="abc" 與 char p[]="abc" 的區(qū)別

答案:

1.以字符串形式出現(xiàn)的,編譯器都會(huì)為該字符串自動(dòng)添加一個(gè)0作為結(jié)束符,如在代碼中寫(xiě)"abc",那么編譯器幫你存儲(chǔ)的是"abc\0"

2."abc"是常量嗎?

答案:有時(shí)是,有時(shí)不是

不是常量的情況:

"abc"作為字符數(shù)組初始值的時(shí)候就不是,如

char str[] = "abc";

因?yàn)槎x的是一個(gè)字符數(shù)組,所以就相當(dāng)于定義了一些空間來(lái)存放"abc",而又因?yàn)樽址麛?shù)組就是把字符一個(gè)一個(gè)地存放的,所以編譯器把這個(gè)語(yǔ)句解析為

char str[3] = {'a','b','c'};

又根據(jù)上面的總結(jié)1,所以char str[] = "abc";的終結(jié)果是

char str[4] = {'a','b','c','\0'};

做一下擴(kuò)展,如果char str[] = "abc";是在函數(shù)內(nèi)部寫(xiě)的話(huà),那么這里的"abc\0"因?yàn)椴皇浅A,所以?yīng)該被放在棧上。

是常量的情況:

把"abc"賦給一個(gè)字符指針變量時(shí),如

char* ptr = "abc";

因 為定義的是一個(gè)普通指針,并沒(méi)有定義空間來(lái)存放"abc",所以編譯器得幫我們找地方來(lái)放"abc",顯然,把這里的"abc"當(dāng)成常量并把它放到程序的 常量區(qū)是編譯器合適的選擇。所以盡管ptr的類(lèi)型不是const char*,并且ptr[0] = 'x';也能編譯通過(guò),但是執(zhí)行ptr[0] = 'x';就會(huì)發(fā)生運(yùn)行時(shí)異常,因?yàn)檫@個(gè)語(yǔ)句試圖去修改程序常量區(qū)中的東西。

記得哪本書(shū)中曾經(jīng)說(shuō)過(guò)char* ptr = "abc";這種寫(xiě)法原來(lái)在c++標(biāo)準(zhǔn)中是不允許的,但是因?yàn)檫@種寫(xiě)法在c中實(shí)在是太多了,為了兼容c,不允許也得允許。雖然允許,但是建議的寫(xiě)法應(yīng)該是 const char* ptr = "abc";這樣如果后面寫(xiě)ptr[0] = 'x'的話(huà)編譯器就不會(huì)讓它編譯通過(guò),也就避免了上面說(shuō)的運(yùn)行時(shí)異常。

又?jǐn)U展一下,如果char* ptr = "abc";寫(xiě)在函數(shù)體內(nèi),那么雖然這里的"abc\0"被放在常量區(qū)中,但是ptr本身只是一個(gè)普通的指針變量,所以ptr是被放在棧上的,只不過(guò)是它所指向的東西被放在常量區(qū)罷了。

3.字符串常量的類(lèi)型可以理解為相應(yīng)字符常量數(shù)組的類(lèi)型,如"abcdef"的類(lèi)型就可以看成是const char[7]

4. 如果真的需要使用"abcd"作為指針,建議寫(xiě)為const char * p="abcd";

如果是初始化字符串?dāng)?shù)組,建議寫(xiě)為char p[]="abcd";

如果p為指針,需要初始化,應(yīng)該是char *p;p=malloc(STR_SIZE);strcpy(p,"abcd");

問(wèn)題二:?jiǎn)纹瑱C(jī)實(shí)現(xiàn)軟件復(fù)位(軟復(fù)位)的方法及討論

1、放狗;2、((void(code *)(void))0x0000)();3、用單片機(jī)一個(gè)引腳控制點(diǎn)一下RSTRST;4、用單片機(jī)一個(gè)引腳控制重新加電;5、用單片機(jī)自帶的軟件復(fù)位指令或內(nèi)狗指令;6、goto大法

方法1:“放狗”是單片機(jī)軟復(fù)位的好辦法,也基本上是唯一的一個(gè)辦法。但并不是所有單片機(jī)都具備看門(mén)狗的功能,也不是一個(gè)萬(wàn)全之策。

辦法2:這不是復(fù)位,只是把程序轉(zhuǎn)到地址0去執(zhí)行,不如用一個(gè)JMP更直接。目前可能極少數(shù)單片機(jī)或者用戶(hù)已經(jīng)自行添加Boot load時(shí)用戶(hù)程序的程序開(kāi)始地址并不為0x0000,所以需要查找這些特定單片機(jī)的啟動(dòng)地址。在keil C51下面可以這樣實(shí)現(xiàn):void soft_reset(void){ ((void (code *) (void)) 0x0000) ();}或者void (*reset)()=0x0000;在需要軟件復(fù)位的地方使用語(yǔ)句:soft_reset(); 一般可實(shí)現(xiàn)軟件復(fù)位。

辦法3:用軟件實(shí)現(xiàn)的硬復(fù)位。需要犧牲一個(gè)單片機(jī)引腳,且增加了單片機(jī)外部電路構(gòu)造的復(fù)雜性,很不可取。

辦法4:類(lèi)似辦法3,同樣需要犧牲一個(gè)單片機(jī)引腳,且增加了單片機(jī)外部電路構(gòu)造的復(fù)雜性,很不可取。但不能把它單單地當(dāng)成是復(fù)位,應(yīng)該叫上電復(fù)位。

辦法5:Atmel 89C不帶內(nèi)狗,S的有內(nèi)狗,只是一條指令就行。如STC的單片機(jī)有軟件復(fù)位指令,即ISP_CONTR,地址在0E7H 單元(即str ISP_CONTR=0xE7),MOV ISP_CONTR,#00100000B(C語(yǔ)言為ISP_CONTR=0x20),內(nèi)狗也是一條指令MOV WDT_CONTR,#00111100B!STC 51系列單片機(jī)Datasheet中指出:傳統(tǒng)的8051 單片機(jī)由于硬件上未支持此功能,用戶(hù)必須用軟件模擬實(shí)現(xiàn),實(shí)現(xiàn)起來(lái)較麻煩。現(xiàn)STC 新推出的增強(qiáng)型8051 根據(jù)客戶(hù)要求增加了ISP_CONTR 特殊功能寄存器,實(shí)現(xiàn)了此功能。用戶(hù)只需簡(jiǎn)單的控制ISP_CONTR 特殊功能寄存器的其中兩位 SWBS / SWRST 就可以系統(tǒng)復(fù)位了。

辦法6:程序從頭(上電復(fù)位處)開(kāi)始運(yùn)行,且只有一個(gè)循環(huán)這種情況,當(dāng)然可以用goto,如在main()的開(kāi)頭設(shè)一個(gè)start:,在程序的唯一循環(huán)中設(shè)定一個(gè)條件,然后goto命令。但需要注意,如果是在中斷例程里,那么中斷掛號(hào)寄存器仍置位,同級(jí)中斷不能執(zhí)行。所以必須先使中斷掛號(hào)寄存器清零,EA = 0。只有RETI指令可以使中斷掛號(hào)寄存器清零。51單片機(jī)有兩級(jí)中斷優(yōu)先級(jí),所以需要執(zhí)行兩次RETI指令。這用匯編是很簡(jiǎn)單的事,而C則比較難以實(shí)現(xiàn)。但是,goto命令盡量不要用,因?yàn)間oto會(huì)到處亂竄,而且goto不能跑到函數(shù)外面去執(zhí)行一個(gè)命令。

后總結(jié)如下:好使用辦法5為簡(jiǎn)潔方便,使用辦法2實(shí)現(xiàn)也不失為一種好方法

問(wèn)題三:

int main()

{ int a=5;

int*q;

q=(int*)&a;

printf("%d\n",*q);

}

代碼沒(méi)有問(wèn)題,面試中可能會(huì)把q=(int *)&a;中的強(qiáng)制轉(zhuǎn)換去掉問(wèn)你會(huì)出什么問(wèn)題

以上內(nèi)容總結(jié)的三個(gè)單片機(jī)編程面試常見(jiàn)問(wèn)題,你都會(huì)了嗎?如果還不會(huì),再仔細(xì)看看答案哦。

上一篇:?jiǎn)纹瑱C(jī)編程入門(mén)學(xué)習(xí)路線

下一篇:?jiǎn)纹瑱C(jī)編程用什么語(yǔ)言 哪個(gè)適合新手

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專(zhuān)線:010-82525158 企業(yè)培訓(xùn)洽談專(zhuān)線:010-82525379 院校合作洽談專(zhuān)線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部