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

正文內(nèi)容

單片機(jī)c語言學(xué)習(xí)心得doc(編輯修改稿)

2024-08-13 23:48 本頁面
 

【文章內(nèi)容簡介】 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ù)字時(shí)鐘,教學(xué)樓大廳一定有吧。每次路過,基本上只是隨便瞟上一眼,根本沒去想過他的工作原理什么。但是今天你也可以把他做出來了,是不是覺得自己很有成就感呢!呵呵! ^_^ 接上面所講的,我們先來做個(gè)簡單的實(shí)驗(yàn):在一個(gè)數(shù)碼管上輪流顯示09這10個(gè)數(shù)字。還楞著干什么,快動手寫程序呀!好象有點(diǎn)難哦,要不先不要往下看了,嘿嘿,關(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)了一步!不錯(cuò),繼續(xù)努力! 上面只顯示了一個(gè)數(shù)碼管的數(shù)字09,但是怎么樣要讓他顯示6個(gè)數(shù)字呢?這樣我們就可以做個(gè)時(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 ]。//顯示秒的個(gè)位 P2 = 0X01。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ sec / 10 ]。//顯示秒的十位 P2 = 0X02。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ min % 10 ]。//顯示分的個(gè)位 P2 = 0X04。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ min / 10 ]。//顯示分的十位 P2 = 0X08。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ hour % 10 ]。//顯示時(shí)的個(gè)位 P2 = 0X10。 Delay(15)。 P2 = 0。 P0 = SEG_TAB[ hour / 10 ]。//顯示時(shí)的十位 P2 = 0X20。 Delay(15)。 P2 = 0。 } void main(void) { while( 1 ) { disp( )。 } } 編譯燒錄芯片后,觀察運(yùn)行現(xiàn)象。矣...怎么一直顯示12:00:00,難道是時(shí)鐘沒有啟動?還是,另外的原因呢? 哦,原來是3個(gè)變量sec,min,hour初始化后,其值一直沒有改變!那我們怎么樣才能讓他改變數(shù)值呢?有的朋友一定會這么認(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í)器。還是大家先看看教材和書吧,畢竟人家出的書,肯定比我要寫的系統(tǒng)多了,下面我們再來簡單的講講!(六) 什么是中斷呢?講個(gè)比較通俗的例子:比如你正在家中看電視,突然電話響了,你的第一反應(yīng)是什么?是不是先跑過去接電話!接完電話后,繼續(xù)看電視。這就是個(gè)中斷的例子,中斷是由電話引起了,你跑過去就是響應(yīng)中斷,接電話就是中斷的處理!接完電話后,接續(xù)看電視,即恢復(fù)中斷,等待下個(gè)中斷的到來! 但是這個(gè)好象和單片機(jī)沒什么聯(lián)系呀?有的朋友或許會這樣疑問。是的。單片機(jī)當(dāng)然不會看電視了,也不會接電話了 ! ^_^ 但是,類比一下:比如單片機(jī)正在執(zhí)行某個(gè)任務(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個(gè)中斷源,分別為:外中斷0 、定時(shí)器T0中斷、外中斷定時(shí)器T1中斷、串口中斷。 或許,有些朋友已經(jīng)大概領(lǐng)會了其中的意思,有些朋友還迷迷糊糊。不過不要緊,我們繼續(xù)往下看,下面我們來講講單片機(jī)的定時(shí)器是什么?如何工作的?定時(shí)器,大家從字面上就可以看出其大概的意思吧?簡單的說:就是起定時(shí)作用!也就是讓單片機(jī)計(jì)數(shù)。定時(shí)器分為:方式0方式方式2和方式3等4種工作方式。有些朋友一定會問:定時(shí)器如何啟動?風(fēng)扇的定時(shí)器,相信大家一定都用過吧!但是單片機(jī)的定時(shí)器,該如何啟動呢?總不該也用手一擰定時(shí)器吧! ^_^ 當(dāng)然不是,我們只要給單片機(jī)一些指令,就可以啟動定時(shí)器了!下面我們就定時(shí)器0,來說說怎么啟動定時(shí)器0。 TMOD = 0X01。//設(shè)置定時(shí)器0 工作方式0 TH0 = (65536 5000) / 256。//載入高8位初值 TL0 = (65536 5000) % 256。//載入低8位初值 TR0 = 1。 //啟動定時(shí)器 ^_^,簡單吧,這樣我們就可以把定時(shí)器啟動了。其中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(定時(shí)器)的選擇位,若值為1,則作計(jì)數(shù)器用。為0,則為定時(shí)期用!GATE為門控位。M1和M0工作方式的選擇:若M1=0;M0=0 則為方式0:13位定時(shí)/記數(shù)器。若M1=0;M0=1則為方式1,16定時(shí)/記數(shù)器。若M1=1;M0=0則為方式2,自動裝載8位定時(shí)/記數(shù)器。若M1=1;M0=1則為方式3,只適用于T/C0,2個(gè)8位定時(shí)/記數(shù)器。 說了一大堆,感到有點(diǎn)困惑了吧。那我們還是來說說上面的。TMOD= 0X01;//至于為什么是0X01,大家看:我們選擇的是定時(shí)器0方式0,所以T/C1全為0,而T/C0的M1為0。M0為1,所以D0D7為0X01;0X01
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1