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

正文內(nèi)容

[1小時(shí)學(xué)會(huì)c語言51單片機(jī)]c語言入門教程-文庫吧資料

2025-07-02 01:31本頁面
  

【正文】 片機(jī)也是計(jì)算機(jī)的一種哦。若在12M晶體下,定時(shí)5000微秒,即為5毫秒;但是如果不是在12M下,那又該怎么計(jì)算 了呢??還記不記得,我們前面講過的機(jī)器周期和時(shí)鐘周期的概念? ^_^忘了,還是看看前面吧!呵呵!沒事,學(xué)習(xí)嘛,忘 了再翻翻書,看看就可以了!其實(shí)上訴的5000 = 1 * C 很顯然C=5000,那么5000 = TH0 = (65536 5000) / 256。 還需要轉(zhuǎn)換一下! TMOD= 0X01;//至于為什么是0X01,大家看:我們選擇的是定時(shí)器0方式0, 所以T/C1全為0,而T/C0的M1為0。 說了一大堆,感到有點(diǎn)困惑了吧。 若M1=1;M0=0則為方式2,自動(dòng)裝載8位 定時(shí)/記數(shù)器。M1和M0工作方 式的選擇:若M1=0;M0=0 則為方式0:13位定時(shí)/記數(shù)器。 C/T就是counter(記數(shù)器)和timer(定時(shí)器)的選擇位,若值為1,則作計(jì)數(shù)器用。 | T/C0 | |T/C1 __________| | __________| |_________|_________ GATE C/T M1 M0 M0 M1GATE C/T_ _其中TMOD為T/C方式控制寄存器: D7 D6 D5 D4 D3 D2 D1 D0 //載入低8位初值 TR0 = 1。//設(shè)置定時(shí)器0 工作方式0 TH0 = (65536 5000) / 256。有些朋友一定會(huì)問:定時(shí)器如何啟動(dòng)?風(fēng)扇的定時(shí)器,相信大家一定都用過吧!但是單片機(jī)的定時(shí)器, 該如何啟動(dòng)呢?總不該也用手一擰定時(shí)器吧! ^_^ 當(dāng)然不是,我們只要給單片機(jī)一些指令,就可以啟動(dòng)定時(shí)器了!下面我們就定時(shí)器0,來說 說怎么啟動(dòng)定時(shí)器0。不過不要緊,我們繼續(xù)往下看,下面我們來講講單片機(jī)的定時(shí)器是什 么?如何工作的?定時(shí)器,大家從字面上就可以看出其大概的意思吧?簡單的說:就是起定時(shí)作用!也就是讓單片機(jī)計(jì)數(shù)。 51系列 的單片機(jī)共有5個(gè)中斷源,分別為:外中斷0 、定時(shí)器T0中斷、外中斷定時(shí)器T1中斷、串口中斷。單片機(jī)當(dāng)然不會(huì)看電視了,也不會(huì)接電話了 ! ^_^ 但是,類 比一下:比如單片機(jī)正在執(zhí)行某個(gè)任務(wù),突然要有更重要的事件,要求單片機(jī)響應(yīng),單片機(jī)就會(huì)應(yīng)答響應(yīng),去執(zhí)行更為重要的任務(wù)(中斷處理 ),原來的任務(wù)就繼續(xù)等待(現(xiàn)場的保護(hù))。 但是這個(gè)好象和單片機(jī)沒什么聯(lián)系呀?有的朋友或許會(huì)這樣疑問。這就是個(gè)中斷的例子,中斷是由電話引起了,你跑過去就是響應(yīng)中斷,接電話就是中斷的處理!接完電話后,接續(xù)看電視, 即恢復(fù)中斷,等待下個(gè)中斷的到來! 矣...怎么一直顯示12:00:00,難道是時(shí)鐘沒有啟動(dòng)?還是,另外的原因呢? 哦,原來是3個(gè)變量 sec,min,hour初始化后,其值一直沒有改變!那我們怎么樣才能讓他改變數(shù)值呢?有的朋友一定會(huì)這么認(rèn)為:讓秒個(gè)位延時(shí)1秒,后加1, 而秒十位延時(shí)10秒后,再加1,一直加到6,分個(gè)位加1,依次類推...這樣的想法是不錯(cuò),但是朋友你有沒有想過C語言的一般延時(shí)(除非你 把他放到中斷里)極不精確!這樣累計(jì)下來,一天24小時(shí)的誤差,肯定很大很大,我曾經(jīng)也用延時(shí)的方法寫過時(shí)鐘,1個(gè)小時(shí)誤差8秒,那是 個(gè)什么概念!一天24小時(shí)就要24*8=192,約為3分鐘,一個(gè)月就是10分鐘...有沒有其他的方法可以改進(jìn)些呢?有!這里就要涉及到單片機(jī)中 另一個(gè)比較重要的核心部分:單片機(jī)的中斷和定時(shí)器的運(yùn)用!想寫出比較精確(這里說的只的相對前面的做法而言比較精確而已,如果要做 更加精確的時(shí)鐘,用時(shí)鐘芯片比較好點(diǎn),常用的有DS12887和DS1302等)的時(shí)鐘程序,就一定要調(diào)用中斷和定時(shí)器。 while( 1 ) { disp( )。 } void main(void) { Delay(15)。 P0 = SEG_TAB[ hour / 10 ]。 Delay(15)。 P0 = SEG_TAB[ hour % 10 ]。 Delay(15)。 P0 = SEG_TAB[ min / 10 ]。 Delay(15)。 P0 = SEG_TAB[ min % 10 ]。 Delay(15)。 P0 = SEG_TAB[ sec / 10 ]。 Delay(15)。 } } void disp(void) { P0 = SEG_TAB[ sec % 10 ]。 i 125。 //09數(shù)字 void Delay(unsigned char a) { unsigned char i。 上面只顯示了一個(gè)數(shù)碼管的數(shù)字09,但是怎么樣要讓他顯示6個(gè)數(shù)字呢?這樣我們就可以做個(gè)時(shí)鐘出來玩玩了!還記不記得我們前面 講過的P2口的位選作用!嘿嘿,沒忘記就好! include unsigned char hour = 12, min = 0, sec = 0。 是不是顯示從09,跳動(dòng)顯示,你的心是不是也跟著一起跳呀,離我們的目標(biāo)又邁進(jìn)了一步!不錯(cuò),繼續(xù)努力! } } } P2 = 0X01。 //取SEG_TAB數(shù)組中的值 i 10。 } } void main(void) { unsigned char i。 i 125。 //09數(shù)字 void Delay(unsigned int a) //unsigned int 定義為無符整形,取值范圍為032768 { unsigned char i。 接上面所講的,我們先來做個(gè)簡單的實(shí)驗(yàn):在一個(gè)數(shù)碼管上輪流顯示09這10個(gè)數(shù)字。但是今天 你也可以把他做出來了,是不是覺得自己很有成就感呢!呵呵! ^_^ 相信大家一定見過數(shù)字時(shí)鐘,教學(xué)樓大廳一定有吧。 } } (五) Delay(20)。P2 = 0x20。//6的碼段 P0 = 0X00。//選通一位,或者P2_4 = 1。 P0 = 0x6d。 Delay(20)。//4的碼段 P2 = 0x08。 P0 = 0X00。 //選通一位,或者P2_2 = 1。 P0 = 0x4f。 Delay(20)。//2的碼段 P2 = 0x02。//延時(shí)約20毫秒 P0 = 0X00。//選通一位,或者P2_0 = 1。 } } void main(void) { while(1) { P0 = 0x06。 i 125??茨阕约嚎梢愿愣ú??你自己先試著寫寫看咯... include void Delay(unsigned char a) { unsigned char i。記住,在任何某一時(shí)刻,有且只有一個(gè)數(shù)碼管能發(fā)光。 說著說著,跑了這么遠(yuǎn)了...還是回到原來的話題,如果我們把位選的P2也看作上面的“煙”一劃而過,那么我們看到的是不是6個(gè)一起亮 或一起滅了! ^_^ 哈哈,原來如此... 一個(gè)機(jī)器周期12*1/12 = 1微妙。而1個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期。 這里再說說51單片機(jī)的機(jī)器周期和時(shí)鐘周期等概念。 嘿嘿,問你個(gè)問題?黑夜里,拿著一支煙,在你面前快速的晃動(dòng),你會(huì)發(fā)現(xiàn)什么樣的現(xiàn)象?是不是原本不連續(xù)的點(diǎn)變成了一條看上去連 續(xù)的曲線或者直線!再回過頭來,仔細(xì)想想我們的數(shù)碼管!原理是一樣的,你可別忘了,我們的單片機(jī)可是一個(gè)計(jì)算機(jī)哦,計(jì)算機(jī)的運(yùn)算速 度,大家可想而知吧! 但是,細(xì)心的朋友,會(huì)問這樣的問題:P2位選,是讓數(shù)碼管一個(gè)一個(gè)亮 的,那還是不能控制6個(gè)一起亮或滅嘛?。?^_^ 想想好象是對的哦?怎么辦...難道錯(cuò)了? 但是如果我們采用動(dòng)態(tài)掃描的方法,比如顯示6個(gè)數(shù)碼管,硬件 連接可以這樣解決:。但是如果我們采用動(dòng)態(tài)掃 描顯示,那么就可以解決上面的問題,即可以顯示多個(gè)數(shù)碼管了。 說到這里,我們來講講數(shù)碼管的顯示方式,可分為兩種:動(dòng)態(tài)掃描和靜態(tài)顯示。 看到這里,想必大家一定可以把0F顯示出來了吧!但是如果要你顯示兩位數(shù),三位數(shù)呢?或許,有的朋友會(huì)這么想:在P0口上接一個(gè) 數(shù)碼管,再在P1口上接個(gè)數(shù)碼管!但是,如果要顯示4位、5位的數(shù)字呢?那豈不是一塊AT8951都接不過來!難到就不能接4位或5位以上的嗎? 肯定不是的! } P0 = 0X00。 P0 = 0X06。//延時(shí) P0 = 0X00。 } } void main(void) { P0 = 0X3F。 i 125。 include void Delay(unsigned char a) { unsigned char i。其他的數(shù)字或字符,也同理可以得到。那么比如:P0 = 0X3F;則顯示為數(shù)字 0 。 ,注意:P0口需接上拉電阻。這樣我們只 要給某個(gè)口,賦一個(gè)值,則相應(yīng)的LED段就被點(diǎn)亮,但是在硬件連接上要注意了:單片機(jī)可能不能直接驅(qū)動(dòng)LED,所以我們可以通過控制三級管 的導(dǎo)通或截止,來控制LED的亮與滅! 一般情況下,為了計(jì)算或取碼的方便。
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1