freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[1小時學會c語言51單片機]c語言入門教程(完整版)

2024-07-29 01:31上一頁面

下一頁面
  

【正文】 于單片機的書,而明天玩上半天,后天就不知道那個本書在講什 么東西了。不過有些朋友可能只聽說他叫單片機,他的全稱是什么也許并不太清楚, 更不用說他的英文全稱和簡稱了。現(xiàn)在我只想把我學習單片機的經(jīng)歷,詳細地講敘給大 家聽聽,可能有些大蝦會笑話我,想:那么簡單的東西還在這里賣弄。 第二,既然你想學好單片機,你必須得舍得花錢,如果不買些芯片回來自己動手焊焊拆拆的(但是在后期會介紹給大家一個很好用的硬件 仿真軟件,并不需要你用實驗板和仿真器了,直接在你的PC上完成,但是軟件畢竟是軟件,從某個特定的意義上來說是并不能代替硬件的),即使 你每天捧著本書,把那本書翻爛,也永遠學不會單片機的!剛接觸單片機的朋友,看了資料,一定會對以下幾個詞見的比較多,但是具體的概 念還是比較模糊,現(xiàn)作如下說明: (1)編程器 編程器是用來燒單片機芯片的,是把HEX或者BIN文件燒到單片機ROM里的,供單片機運行的。等貨物寄到后,才知道自己搞錯了!汗。如果你能上網(wǎng)通過論壇或者,問題就很快得到解決。遇到類似的情況, 記?。呵f不要急噪,就行! (二) while(1)語句只是讓單片機工作在死循環(huán)狀態(tài),即一直輸出低電平。硬件連接,在 P1_1P1_7上再接7個LED即可。 sbit P1_5 = P1 ^ 5。 表示空語句,CPU空轉(zhuǎn)。 P1_1 = 1。 P1_5 = 0。 Delay(250)。main函數(shù)調(diào)用Delay()函數(shù)。 i 125。 P1 = _crol_(b, 1)。 (一般情況下,我們保存的文件名和前面的工程名一樣。 Rebuild All Traget Files ,若提示 creating hex file from XXX... 呵呵,朋友!相信你的流水燈也做的不錯了吧,現(xiàn)在能玩出幾種花樣了?你可能會說,只要你想得到,想怎么流就怎么流!呵呵,是的。8段數(shù)碼管分為共陰和共陽兩種。3 7|__| d 那么比如:P0 = 0X3F;則顯示為數(shù)字 0 。 } } void main(void) { P0 = 0X3F。 P0 = 0X00。但是如果我們采用動態(tài)掃 描顯示,那么就可以解決上面的問題,即可以顯示多個數(shù)碼管了。 這里再說說51單片機的機器周期和時鐘周期等概念。 說著說著,跑了這么遠了...還是回到原來的話題,如果我們把位選的P2也看作上面的“煙”一劃而過,那么我們看到的是不是6個一起亮 或一起滅了! ^_^ 哈哈,原來如此... i 125。//延時約20毫秒 P0 = 0X00。 //選通一位,或者P2_2 = 1。 P0 = 0x6d。//6的碼段 } } (五) //09數(shù)字 void Delay(unsigned int a) //unsigned int 定義為無符整形,取值范圍為032768 { unsigned char i。 } } } i 125。 Delay(15)。 Delay(15)。 Delay(15)。 但是這個好象和單片機沒什么聯(lián)系呀?有的朋友或許會這樣疑問。//設(shè)置定時器0 工作方式0 TH0 = (65536 5000) / 256。 M1T/C0 C/T就是counter(記數(shù)器)和timer(定時器)的選擇位,若值為1,則作計數(shù)器用。 說了一大堆,感到有點困惑了吧。若在12M晶體下,定時5000微秒,即為5毫秒;但是如果不是在12M下,那又該怎么計算 了呢??還記不記得,我們前面講過的機器周期和時鐘周期的概念? ^_^忘了,還是看看前面吧!呵呵!沒事,學習嘛,忘 了再翻翻書,看看就可以了!其實上訴的5000 = 1 * C 很顯然C=5000,那么5000 =工作方式0是16位的(2的16次方是多少,自己算算就知道了)簡單吧?但是如何和中斷一起使用呢?請繼續(xù)看下面的講解! TMOD = 0X01。 Delay(5)。Delay(5)。Delay(5)。 if(count == M) { count = 0。 if(min == 60) { if(hou == 24) TH0 = HI。 哈哈,趕緊編譯HEX文件,搭好硬件,燒入單片機,上電看看效果先!呵呵,現(xiàn)在你應(yīng)該有成就感了吧,想不到一個時鐘居然那么 簡單, 嘿嘿!但是問題來了!時鐘雖然做出來了,但是他的精度怎么樣呢?一兩個小時,或許看不出什么誤差,但是一天或者一年呢? 暈,我的天呀,要是按年來算的話,那這個時鐘根本沒有實用價值!人家都說用C寫不出,精度高的時鐘程序來的?。?!是不是有點后悔 了,去學匯編吧!但是既然選擇了C,那么就不要后悔!嘿嘿,想想C的高級語言,怎么會輸給匯編呢 ^_^ 呵呵!看下面這段代碼: static unsigned char count = 0。 TR0 = 1。但是還是有誤差!郁悶!為什么呢?那是硬件造成的誤差,我們可以用軟件來彌補!我們先 把時鐘點亮,讓他走上幾個小時或者是幾天,看看到底誤差是多少!取個平均值。 現(xiàn)在我們在P1口接個4*4的鍵盤,--,再接4個4K7的上拉電阻至VCC。 i255。 return 1。 { j++) case 0xe0: key=4*j+0。case 0xb0: key=4*j+2。 col = colamp。 while( 1 ) { if(P1_0 == 0) { //...add your other code here } Delay函數(shù)具體延時多長時間,就要看你設(shè)定的T0定時器中斷和Delaytime的乘積,比如你的定時器中斷為50MS,Delaytime為20的話,那么50MS*20=1S。 //...add your other code here. } old_value = new_value。 當然單片機和外部其他的芯片還有很多,比如數(shù)字溫度傳感器DS18B20,實時時鐘芯片DS1302,還有比如訪問AT24CXX的EEPROM存儲器等,更多的電路,還要靠大家在平時的學習過程當中,慢慢掌握。 // ...add your other code } 當然在實際過程當中,并不是如此簡單簡潔的,還希望大家能夠舉一反三哦... ^_^。//定義按鍵的I/O void P_key(void) { char new_value,old_value。再看Delay函數(shù),完全讓CPU執(zhí)行(;空語句),所以在做大的產(chǎn)品或者代碼時,這個是非常耗費單片機內(nèi)部資源的。 case 2: P2_1 = 0xfd。 case 1: P2_0 = 0xFE。//等待鍵松開 } b = 0。 { Delay(10)。 0xF0。 P0=tab[key]。 case 0xd0: key=4*j+1。 return 0。 } /******************************************************************************/ bit pkey(void)//判斷鍵的否被按下,通過返回值確定 { P1=0xf0。//0到F的16個鍵植 /******************************************************************************/ void Delayt(unsigned char t)//延時函數(shù) { unsigned char i。 } 來彌補!這樣可能會出現(xiàn)這樣的現(xiàn)象:秒直接跳變!我們可以再通過細分來實現(xiàn),不要10小時那么大,小些的就行!具體的操作還是留給 朋友們吧! (七) TR0 = 1。 { hou++。Delay(5)。Delay(5)。 P2_1 = 1。 j 125。 產(chǎn)生中斷后,我們怎么處理呢?嘿嘿!仔細想想? ^_^ 每次中斷后,我們可以讓一個變量自加1,那么200次中斷后,不就是1秒的時間了嗎?比起上面我們說的延時來出來是不是更加精確多了呢? 那是肯定的!但是想想1秒種的時間就讓單片機產(chǎn)生那么多次的中斷,單片機會不會累著呢?恩,那么不好。//啟動定時器 //載入高8位初值 TL0 = (65536 5000) % 256。 * C,則C就為5000 / = ? 具體多少,大家自己去算算吧?同理TL0也是一樣的! 但是,細心的朋友會發(fā)現(xiàn)網(wǎng)上或者是資料上的 TH0,TL0并不是和上面一樣的,而是直接TH0 = 0XEC;TL0 = 0X78 是不是和上面的一樣的,別忘了單片機也是計算機的一種哦。TMOD= 0X01;//至于為什么是0X01,大家看:我們選擇的是定時器0方式0, 所以T/C1全為0,而T/C0的M1為0。M1和M
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1