本人從事從2004年大學(xué)畢業(yè)開始從事開發(fā)工作,先后做過單片機(jī)開發(fā)、ucOSII開發(fā)、手機(jī)開發(fā)、android APP開發(fā)、PHP開發(fā)、微信小程序開發(fā),目前從事物聯(lián)網(wǎng)開發(fā)。我本人并非學(xué)計算機(jī)的,除了學(xué)校上課之外,基本上這些開發(fā)都是自學(xué)的。邊學(xué)習(xí)邊工作,基本上以學(xué)以致用為目的,用到什么學(xué)習(xí)什么。 深深體會到自學(xué)的艱辛,尤其是最初入門的時候,那道砍邁過去后面再學(xué)習(xí)基本上就簡單多了,所謂觸類旁通,舉一反三。但是前面打基礎(chǔ)的時候是非常費力的,看到很多評論說C語言指針太難了,后來就放棄了。其實那是沒有找到好的學(xué)習(xí)方法,沒有人指導(dǎo)。只要有人帶一帶指點一下,問題很快就能解決。 相比于國外的開源學(xué)習(xí)氛圍,我認(rèn)為我們做的還遠(yuǎn)遠(yuǎn)不夠,我們的編程大師還非常少,像ucLinux、ucOSII、FreeRtos等等非常有名的嵌入式操作系統(tǒng),商業(yè)的更不用說了,太多了。我們在軟件方面一直都是落后的狀態(tài),當(dāng)然近幾年我們自己也有不少好的作品。比如,Huawei LiteOS、Alios Things、djyos、RT-Thread、SylixOS等。一直想為學(xué)習(xí)單片機(jī)的同學(xué)做點什么,今年相對來說會輕松一些,利用閑暇時間,給大家分享一些案例、學(xué)習(xí)方法和心得。本課系列課程主要針對初學(xué)者、單片機(jī)學(xué)習(xí)愛好者、學(xué)習(xí)中遇到困難者,有什么不清楚的地方可以留言討論。 本課的第一個案例,從串口編程輸出hello word 首先、打開proteus(需要安裝文件的童鞋,發(fā)我私信1000,將自動給你軟件連接)在打開文件->示例工程,如下圖所示 打開之后是原理圖,這個是ADC擴(kuò)展采樣的電路,暫時不管它 本節(jié)我們只演示,串口輸出hello word的內(nèi)容 第二、修改代碼如下void delayFunc(unsigned int ms)//不精確的延時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);//延時500ms SendString('hello MCU!!\r\n');//串口輸出hello MCU delayFunc(50);//延時500ms } } 代碼解析已經(jīng)在具體代碼中了,運行結(jié)果如下圖所示,是不是很簡單呢??! 最后、總結(jié)知識點1.串口初始化部分可以參考8051的數(shù)據(jù)手冊,這部分都是標(biāo)準(zhǔn)8051內(nèi)核通用的,哪個廠家的都一樣 2.注意printf函數(shù)是對串口格式輸出函數(shù),它的代碼不是公開的,而是封裝在stdio庫中,是一個標(biāo)準(zhǔn)額庫函數(shù) 3.換行小知識點,不知道你注意到?jīng)]有 printf('hello Word!!\n'); SendString('hello MCU!!\r\n'); 為什么一個是\n換行,而后面一個是\r\n表示換行呢? 這其中的原因出在printf庫函數(shù)上,printf在發(fā)現(xiàn)\n時會自動轉(zhuǎn)換成\r\n輸出,所以后面一個函數(shù)輸出hello MCU時,必須是標(biāo)準(zhǔn)的\r\n才可以。 本節(jié)課就結(jié)束了,有什么疑問歡迎留言討論! |
|