日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

零成本學(xué)習(xí)單片機(jī)編程之從hello word開(kāi)始

 leafcho 2019-02-12

本人從事從2004年大學(xué)畢業(yè)開(kāi)始從事開(kāi)發(fā)工作,先后做過(guò)單片機(jī)開(kāi)發(fā)、ucOSII開(kāi)發(fā)、手機(jī)開(kāi)發(fā)、android APP開(kāi)發(fā)、PHP開(kāi)發(fā)、微信小程序開(kāi)發(fā),目前從事物聯(lián)網(wǎng)開(kāi)發(fā)。我本人并非學(xué)計(jì)算機(jī)的,除了學(xué)校上課之外,基本上這些開(kāi)發(fā)都是自學(xué)的。邊學(xué)習(xí)邊工作,基本上以學(xué)以致用為目的,用到什么學(xué)習(xí)什么。

深深體會(huì)到自學(xué)的艱辛,尤其是最初入門(mén)的時(shí)候,那道砍邁過(guò)去后面再學(xué)習(xí)基本上就簡(jiǎn)單多了,所謂觸類(lèi)旁通,舉一反三。但是前面打基礎(chǔ)的時(shí)候是非常費(fèi)力的,看到很多評(píng)論說(shuō)C語(yǔ)言指針太難了,后來(lái)就放棄了。其實(shí)那是沒(méi)有找到好的學(xué)習(xí)方法,沒(méi)有人指導(dǎo)。只要有人帶一帶指點(diǎn)一下,問(wèn)題很快就能解決。

相比于國(guó)外的開(kāi)源學(xué)習(xí)氛圍,我認(rèn)為我們做的還遠(yuǎn)遠(yuǎn)不夠,我們的編程大師還非常少,像ucLinux、ucOSII、FreeRtos等等非常有名的嵌入式操作系統(tǒng),商業(yè)的更不用說(shuō)了,太多了。我們?cè)谲浖矫嬉恢倍际锹浜蟮臓顟B(tài),當(dāng)然近幾年我們自己也有不少好的作品。比如,Huawei LiteOS、Alios Things、djyos、RT-Thread、SylixOS等。一直想為學(xué)習(xí)單片機(jī)的同學(xué)做點(diǎn)什么,今年相對(duì)來(lái)說(shuō)會(huì)輕松一些,利用閑暇時(shí)間,給大家分享一些案例、學(xué)習(xí)方法和心得。本課系列課程主要針對(duì)初學(xué)者、單片機(jī)學(xué)習(xí)愛(ài)好者、學(xué)習(xí)中遇到困難者,有什么不清楚的地方可以留言討論。


本課的第一個(gè)案例,從串口編程輸出hello word

首先、打開(kāi)proteus(需要安裝文件的童鞋,發(fā)我私信1000,將自動(dòng)給你軟件連接)

零成本學(xué)習(xí)單片機(jī)編程之從hello word開(kāi)始

在打開(kāi)文件->示例工程,如下圖所示

零成本學(xué)習(xí)單片機(jī)編程之從hello word開(kāi)始

打開(kāi)之后是原理圖,這個(gè)是ADC擴(kuò)展采樣的電路,暫時(shí)不管它

零成本學(xué)習(xí)單片機(jī)編程之從hello word開(kāi)始

本節(jié)我們只演示,串口輸出hello word的內(nèi)容

第二、修改代碼如下

void delayFunc(unsigned int ms)//不精確的延時(shí)10ms

{

unsigned int i=0;

while(ms--)

{

while(++i<1000);

i=0;

}

return;

}

void SendString(const char *s) //串口發(fā)送

{

while(*s) {

TI=0;

SBUF=*s++;

while(TI==0);

}

}

void main(void)

{

unsigned int delay, MSB , LSB, adc_Res;

//串口初始化部分

SCON = 0xDA; // SCON: mode 1, 8-bit UART, enable rcvr */

TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload */

TH1 = 0xFD; // TH1: reload value for 1200 baud @ 12MHz */

TR1 = 1; // TR1: timer 1 run */

TI = 1; // TI: set TI to send first char of UART */

while(1)

{

printf('hello Word!!\n'); //串口輸出hello word

delayFunc(50);//延時(shí)500ms

SendString('hello MCU!!\r\n');//串口輸出hello MCU

delayFunc(50);//延時(shí)500ms

}

}

代碼解析已經(jīng)在具體代碼中了,運(yùn)行結(jié)果如下圖所示,是不是很簡(jiǎn)單呢??!

零成本學(xué)習(xí)單片機(jī)編程之從hello word開(kāi)始

最后、總結(jié)知識(shí)點(diǎn)

1.串口初始化部分可以參考8051的數(shù)據(jù)手冊(cè),這部分都是標(biāo)準(zhǔn)8051內(nèi)核通用的,哪個(gè)廠(chǎng)家的都一樣

2.注意printf函數(shù)是對(duì)串口格式輸出函數(shù),它的代碼不是公開(kāi)的,而是封裝在stdio庫(kù)中,是一個(gè)標(biāo)準(zhǔn)額庫(kù)函數(shù)

3.換行小知識(shí)點(diǎn),不知道你注意到?jīng)]有

printf('hello Word!!\n');

SendString('hello MCU!!\r\n');

為什么一個(gè)是\n換行,而后面一個(gè)是\r\n表示換行呢?

這其中的原因出在printf庫(kù)函數(shù)上,printf在發(fā)現(xiàn)\n時(shí)會(huì)自動(dòng)轉(zhuǎn)換成\r\n輸出,所以后面一個(gè)函數(shù)輸出hello MCU時(shí),必須是標(biāo)準(zhǔn)的\r\n才可以。

本節(jié)課就結(jié)束了,有什么疑問(wèn)歡迎留言討論!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多