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

正文內(nèi)容

[1小時學(xué)會c語言51單片機(jī)]c語言入門教程(編輯修改稿)

2025-07-23 01:31 本頁面
 

【文章內(nèi)容簡介】 0) { for(i = 0。 i 125。 i++)。 } } void main(void) { while(1) { P0 = 0x06。//1的碼段 P2 = 0x01。//選通一位,或者P2_0 = 1。Delay(20)。//延時約20毫秒 P0 = 0X00。//關(guān)閉顯示 P0 = 0x5b。//2的碼段 P2 = 0x02。 //選通一位,或者P2_1 = 1。 Delay(20)。 P0 = 0X00。 P0 = 0x4f。//3的碼段 P2 = 0x04。 //選通一位,或者P2_2 = 1。 Delay(20)。 P0 = 0X00。 P0 = 0x66。//4的碼段 P2 = 0x08。 //選通一位,或者P2_3 = 1。 Delay(20)。 P0 = 0X00。 P0 = 0x6d。//5的碼段 P2 = 0x10。//選通一位,或者P2_4 = 1。Delay(20)。 P0 = 0X00。 P0 = 0x7d。//6的碼段P2 = 0x20。//選通一位,或者P2_5 = 1。Delay(20)。 P0 = 0X00。 } } (五) 相信大家一定見過數(shù)字時鐘,教學(xué)樓大廳一定有吧。每次路過,基本上只是隨便瞟上一眼,根本沒去想過他的工作原理什么。但是今天 你也可以把他做出來了,是不是覺得自己很有成就感呢!呵呵! ^_^ 接上面所講的,我們先來做個簡單的實驗:在一個數(shù)碼管上輪流顯示09這10個數(shù)字。還楞著干什么,快動手寫程序呀!好象有點難哦, 要不先不要往下看了,嘿嘿,關(guān)機(jī)吧,自己先去想想,怎么樣? include unsigned char code SEG_TAB[ ] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 //09數(shù)字 void Delay(unsigned int a) //unsigned int 定義為無符整形,取值范圍為032768 { unsigned char i。 while( a != 0) { for(i = 0。 i 125。 i++)。 } } void main(void) { unsigned char i。 while(1) { for(i = 0。 i 10。 i++) { P0 = SEG_TAB[ i ]。 //取SEG_TAB數(shù)組中的值 P2 = 0X01。 Delay(1000)。 } } } 是不是顯示從09,跳動顯示,你的心是不是也跟著一起跳呀,離我們的目標(biāo)又邁進(jìn)了一步!不錯,繼續(xù)努力! 上面只顯示了一個數(shù)碼管的數(shù)字09,但是怎么樣要讓他顯示6個數(shù)字呢?這樣我們就可以做個時鐘出來玩玩了!還記不記得我們前面 講過的P2口的位選作用!嘿嘿,沒忘記就好! include unsigned char hour = 12, min = 0, sec = 0。 unsigned char code SEG_TAB[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 //09數(shù)字 void Delay(unsigned char a) { unsigned char i。 while( a != 0) { for(i = 0。 i 125。 i++)。 } } void disp(void) { P0 = SEG_TAB[ sec % 10 ]。//顯示秒的個位 P2 = 0X01。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ sec / 10 ]。//顯示秒的十位 P2 = 0X02。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ min % 10 ]。//顯示分的個位 P2 = 0X04。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ min / 10 ]。//顯示分的十位 P2 = 0X08。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ hour % 10 ]。//顯示時的個位 P2 = 0X10。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ hour / 10 ]。//顯示時的十位 P2 = 0X20。 Delay(15)。 P2 = 0。 } void main(void) {while( 1 ) { disp( )。 } } 編譯燒錄芯片后,觀察運(yùn)行現(xiàn)象。矣...怎么一直顯示12:00:00,難道是時鐘沒有啟動?還是,另外的原因呢? 哦,原來是3個變量 sec,min,hour初始化后,其值一直沒有改變!那我們怎么樣才能讓他改變數(shù)值呢?有的朋友一定會這么認(rèn)為:讓秒個位延時1秒,后加1, 而秒十位延時10秒后,再加1,一直加到6,分個位加1,依次類推...這樣的想法是不錯,但是朋友你有沒有想過C語言的一般延時(除非你 把他放到中斷里)極不精確!這樣累計下來,一天24小時的誤差,肯定很大很大,我曾經(jīng)也用延時的方法寫過時鐘,1個小時誤差8秒,那是 個什么概念!一天24小時就要24*8=192,約為3分鐘,一個月就是10分鐘...有沒有其他的方法可以改進(jìn)些呢?有!這里就要涉及到單片機(jī)中 另一個比較重要的核心部分:單片機(jī)的中斷和定時器的運(yùn)用!想寫出比較精確(這里說的只的相對前面的做法而言比較精確而已,如果要做 更加精確的時鐘,用時鐘芯片比較好點,常用的有DS12887和DS1302等)的時鐘程序,就一定要調(diào)用中斷和定時器。還是大家先看看教材和書 吧,畢竟人家出的書,肯定比我要寫的系統(tǒng)多了,下面我們再來簡單的講講! (六) 什么是中斷呢?講個比較通俗的例子:比如你正在家中看電視,突然電話響了,你的第一反應(yīng)是什么?是不是先跑過去接電話!接完電話 后,繼續(xù)看電視。這就是個中斷的例子,中斷是由電話引起了,你跑過去就是響應(yīng)中斷,接電話就是中斷的處理!接完電話后,接續(xù)看電視, 即恢復(fù)中斷,等待下個中斷的到來! 但是這個好象和單片機(jī)沒什么聯(lián)系呀?有的朋友或許會這樣疑問。是的。單片機(jī)當(dāng)然不會看電視了,也不會接電話了 ! ^_^ 但是,類 比一下:比如單片機(jī)正在執(zhí)行某個任務(wù),突然要有更重要的事件,要求單片機(jī)響應(yīng),單片機(jī)就會應(yīng)答響應(yīng),去執(zhí)行更為重要的任務(wù)(中斷處理 ),原來的任務(wù)就繼續(xù)等待(現(xiàn)場的保護(hù))。執(zhí)行完更重要的任務(wù)后,回到中斷的入口處,繼續(xù)執(zhí)行原來的任務(wù)(現(xiàn)場中斷的恢復(fù))。51系列 的單片機(jī)共有5個中斷源,分別為:外中斷0 、定時器T0中斷、外中斷定時器T1中斷、串口中斷。 或許,有些朋友已經(jīng)大概領(lǐng)會了其中的意思,有些朋友還迷迷糊糊。不過不要緊,我們繼續(xù)往下看,下面我們來講講單片機(jī)的定時器是什 么?如何工作的?定時器,大家從字面上就可以看出其大概的意思吧?簡單的說:就是起定時作用!也就是讓單片機(jī)計數(shù)。定時器分為:方式 0方式方式2和方式3等4種工作方式。有些朋友一定會問:定時器如何啟動?風(fēng)扇的定時器,相信大家一定都用過吧!但是單片機(jī)的定時器, 該如何啟動呢?總不該也用手一擰定時器吧! ^_^ 當(dāng)然不是,我們只要給單片機(jī)一些指令,就可以啟動定時器了!下面我們就定時器0,來說 說怎么啟動定時器0。 TMOD = 0X01。//設(shè)置定時器0 工作方式0 TH0 = (65536 5000) / 256。//載入高8位初值 TL0 = (65536 5000) % 256。//載入低8位初值 TR0 = 1。 //啟動定時器 ^_^,簡單吧,這樣我們就可以把定時器啟動了。其中TMOD為T/C方式控制寄存器: D7 D6 D5 D4 D3 D2 D1 D0 _ _ GATE C/T M1 M0 GATE C/T M1 M0 |_________ __________| |_________ __________| | T/C1 | | T/C0 | C/T就是counter(記數(shù)器)和timer(定時器)的選擇位,若值為1,則作計數(shù)器用。為0,則為定時期用!GATE為門控位。M1和M0工作方 式的選擇:若M1=0;M0=0 則為方式0:13位定時/記數(shù)器。若M1=0;M0=1則為方式1,16定時/記數(shù)器。若M1=1;M0=0則為方式2,自動裝載8位 定時/記數(shù)器。若M1=1;M0=1則為方式3,只適用于T/C0,2個8位定時/記數(shù)器。 說了一大堆,感到有點困惑了吧。那我們還是來說說上面的。TMOD= 0X01;//至于為什么是0X01,大家看:我們選擇的是定時器0方式0, 所以T/C1全為0,而T/C0的M1為0。M0為1,所以D0D7為0X01;0X01表示的是16進(jìn)制數(shù),這個大家應(yīng)該都知道吧!還有D0D7表示的是2進(jìn)制數(shù)。 還需要轉(zhuǎn)換一下! TH0 = (655
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1