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

正文內(nèi)容

畢業(yè)論文--紅外遙控電風(fēng)扇的設(shè)計(jì)(參考版)

2025-02-08 13:07本頁面
  

【正文】 順便提一下:一個(gè)定時(shí) /計(jì)數(shù)器同一時(shí)刻要么作定時(shí)用,要么作計(jì)數(shù)用,不能同時(shí)用,這是個(gè)極普通的常識(shí),幾乎沒有教材會(huì)提這一點(diǎn),但很多初學(xué)者卻會(huì)有此困惑。 2. C/T:前面我們說過,定時(shí) /計(jì)數(shù)器即可作定時(shí)用也可計(jì)數(shù)用,到底作什么用,由我們根據(jù)需要自行決定,也就是說決定權(quán)在我們編程者。它由 TL( 1/0)的低 5 位和 TH( 0/1)的 8 位構(gòu)成 13 位的計(jì)數(shù)器,此時(shí) TL( 1/0)的高 3 位未用。因此, TR0( 1)稱之為運(yùn)行控制位,可用指令SETB 來置位以 啟動(dòng)計(jì)數(shù)器 /定時(shí)器運(yùn)行,用指令 CLR 來關(guān)閉定時(shí) /計(jì)數(shù)器的工作,一切盡在自已的掌握中。原來 TF1( 0)在這兒!那么 TR0、 TR1 又是什么呢?看上節(jié)課的圖。 從圖 2 中我們可以看出, TCON 也被分成兩部份,高 4 位用于定時(shí) /計(jì)數(shù)器,低 4位則用于中斷(我們暫不管)。 符號(hào) 地址 功能介紹 B F0H B 寄存器 ACC E0H 累加器 PSW D0H 程序狀態(tài)字 IP B8H 中斷優(yōu)先級(jí)控制寄存器 P3 B0H P3 口鎖存器 IE A8H 中斷允許控制寄存器 P2 A0H P2 口鎖存器 SBUF 99H 串行口鎖存器 SCON 98H 串行口控制寄存器 P1 90H P1 口鎖存器 TH1 8DH 定時(shí)器 /計(jì)數(shù)器 1(高 8 位) TH0 8CH 定時(shí)器 /計(jì)數(shù)器 1(低 8 位) TL1 8BH 定時(shí)器 /計(jì)數(shù)器 0(高 8 位) TL0 8AH 定時(shí)器 /計(jì)數(shù)器 0(低 8 位) T 8 定時(shí)器 /計(jì)數(shù)器方式控制寄存器 40 MOD 9A TCON 88H 定時(shí)器 /計(jì)數(shù)器控制寄存器 DPH 83H 數(shù)據(jù)地址指針(高 8 位) DPL 82H 數(shù)據(jù)地址指針(低 8 位) SP 81H 堆棧指針 P0 80H P0 口鎖存器 PCON 87H 電源控制寄存器 圖 1 從圖 1 中我們可以看出 , TMOD 被分成兩部份,每部份 4 位。 在單片機(jī)中有兩個(gè)特殊功能寄存器與定時(shí) /計(jì)數(shù)有關(guān),這就是 TMOD 和 TCON。這個(gè)沒有問題,問題是我們現(xiàn)實(shí)生活中,經(jīng)常會(huì)有少于 65536個(gè)計(jì)數(shù)值的要求,如包裝線上,一打?yàn)?12 瓶,一瓶藥片為 100 粒,怎么樣來滿足這個(gè)要求呢? ?? 提示:如果是一個(gè)空的盆要 1 萬滴水滴進(jìn)去才會(huì)滿,我在開始滴水之前就先放入一勺水,還需要 10000 滴嘛? 對(duì)了,我們采用預(yù)置數(shù)的方法,我要計(jì) 100,那我就先放進(jìn) 65436,再來 100 個(gè)脈沖,不就到了 65536 了嗎。至于會(huì)引發(fā)什么事件,我們下一課再介紹,現(xiàn)在我們來研究另一個(gè)問題:要有多少個(gè)計(jì)數(shù)脈沖才會(huì)使 TF0 由 0 變?yōu)?1。至于 TF0 是什么我們稍后再談。這時(shí)如果再有一滴水落下,就會(huì)發(fā)生什么現(xiàn)象?水會(huì)漫出來,用個(gè)術(shù)語來講就是“溢出”。 結(jié)論:計(jì)數(shù)脈沖的間隔與晶振有關(guān), 12M 的晶振,計(jì)數(shù)脈沖的間隔是 1 微秒。晶振的頻率當(dāng)然很準(zhǔn),所以這個(gè)計(jì)數(shù)脈沖的時(shí)間間隔也很準(zhǔn)。 由此,單片機(jī)中的定時(shí)器和計(jì)數(shù)器是一個(gè)東西,只不過計(jì)數(shù)器是記錄的外界發(fā)生的 38 事情,而定時(shí)器則是由單片機(jī)提供一個(gè)非常穩(wěn)定的計(jì)數(shù)源。那么它們的關(guān)系是什么呢?那就是秒針每一次走動(dòng)的時(shí)間正好是 1秒。錄音機(jī)上的計(jì)數(shù)器最多只計(jì)到 999? .那么單片機(jī)中的計(jì)數(shù)器有多大的容量呢? 8031 單片機(jī)中有兩個(gè)計(jì)數(shù)器,分別稱之為 T0 和 T1,這兩個(gè)計(jì)數(shù)器分別是由兩個(gè) 8 位的 RAM 單元組成的,即每個(gè)計(jì)數(shù)器都是 16 位的計(jì)數(shù)器,最大的計(jì)數(shù)量是 65536。 二、計(jì)數(shù)器的容量 從一個(gè)生活中的例子看起:一個(gè)水盆在水龍頭下,水龍頭沒關(guān)緊,水一滴滴地滴入盆中。這就是計(jì)數(shù),生活中計(jì)數(shù)的例子處處可見。 MOV A,R1 SETB C RLC A JC NEXT2 NEXT3: MOV R0,00H RET KCODE: MOV B,0FBH NEXT4: RRC A INC B JC NEXT4 MOV A,R1 SWAP A NEXT5: RRC A INC B INC B INC B INC B JC NEXT5 NEXT6: MOV A,P1 ANL A,0FH CJNE A,0FH,NEXT6 MOV R0,0FFH RET 鍵盤處理程序就作這么一個(gè)簡(jiǎn)單的介紹,實(shí)際上,鍵盤、顯示處理是很復(fù)雜的,它往往占到一個(gè)應(yīng)用程序的大部份代碼,可見其重要性,但說到,這種復(fù)雜并不來自于單片機(jī)的本身,而是來自于操作者的習(xí)慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜恚詈笤偃懘a,這樣,才能快 37 速有效地寫好代碼。 鍵盤掃描程序: 從以上分析得到鍵盤掃描程序的流程圖如圖 2— 6 所示。 按下述 4 種組合依次輸出: 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 在每組行輸出時(shí)讀取 ,若全為“ 1”,則表示為“ 0”這一行沒有鍵閉合,否則有鍵閉合。 若有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。 去除鍵抖動(dòng)。 檢測(cè)當(dāng)前是否有鍵被按下。列線 分別接有 4 個(gè)上拉電阻到正電源 +5V,并把列線 設(shè)置為輸入線,行線 設(shè)置為輸出線。 如上圖所示。在確 35 定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。 判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。只要有一列的電平為低,則 表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與 4 根行線相交叉的 4 個(gè)按鍵之中。 行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法,如上圖所示鍵盤,介紹過程如下。具體的識(shí)別及編程方法如下所述。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。由此可見,在 需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一 34 個(gè)按鍵加以連接。各個(gè)按鍵都接到一個(gè)與非上,當(dāng)有任何一個(gè)按鍵按下時(shí),都會(huì)使與門輸出為低電平,從而引起單片機(jī)的中斷,它的好處是不用在主程序中不斷地循環(huán)查詢,如果有鍵按下,單片機(jī)再去做相應(yīng)的處理。向下流動(dòng)實(shí)際就是右移 MOV LAMPCODE,A MOV P1,A LCALL D500MS LAMPRET: RET END 以上程序功能很簡(jiǎn)單,但它演示了一個(gè)鍵盤處理程序的基本思路,程序本身很簡(jiǎn)單,也不很實(shí)用,實(shí)際工作中還會(huì)有好多要考慮的因素,比如主循環(huán)每次都調(diào)用燈的循環(huán)程序,會(huì)造成按鍵反應(yīng)“遲鈍”,而如果一直按著鍵不放,則燈不會(huì)再流動(dòng),一直要到松開手為止,等等,大家可以仔細(xì)考慮一下這些問題,再想想有什么好的解決辦法。如果 UpDown=1,則向上流動(dòng) MOV A,LAMPCODE RL A 。如果 StartEnd=1,則啟動(dòng) MOV P1,0FFH AJMP LAMPRET 。流水燈的延遲時(shí)間 PUSH PSW SETB RS0 MOV R7,200 D51: MOV R6,250 D52: NOP NOP NOP NOP DJNZ R6,D52 DJNZ R7,D51 POP PSW RET 。直到讀取的數(shù)據(jù)取反后為 0 說明鍵釋放了,才從鍵盤處理程序中返回 AJMP K_RET K_RET1: RET 。設(shè)置有鍵按下的標(biāo)志 K_RET: ORL P3,00111100B 。否則延時(shí)去鍵抖 ORL P3,00111100B MOV A,P3 32 ORL A,11000011B CPL A JZ K_RET MOV B,A 。取反 JZ K_RET 。取 P3 的值 ORL A,11000011B 。 ORL P3,00111100B 。第四個(gè)鍵按下后的處理 KEY_RET:RET KEY: CLR F0 。第二個(gè)鍵按下后的處理 AJMP KEY_RET KeyUp: SETB UpDown 。分析鍵的代碼,某位被按下,則該位為 1(因?yàn)樵阪I盤程序中已取反) JB ,KeyOver JB ,KeyUp JB ,KeyDown AJMP KEY_RET KeyStart: SETB StartEnd 。延時(shí)程序,鍵盤處理中調(diào)用 KEYPROC: MOV A,B 。反復(fù)循環(huán),主程序到此結(jié)束 。否則調(diào)用鍵盤處理程序 LNEXT: ACALL LAMP 。調(diào)用鍵盤程序 JNB F0,LNEXT 。啟動(dòng)時(shí)處于停止?fàn)顟B(tài) MOV LAMPCODE,0FEH 。存放流動(dòng)的數(shù)據(jù)代碼 ORG 0000H AJMP MAIN ORG 30H MAIN: MOV SP,5FH MOV P1,0FFH CLR UpDown 。上下行標(biāo)志 StartEnd EQU 01H 。下面給出一個(gè)例程。將每個(gè)按鍵的一端接到單片機(jī)的 I/O 口,另一端接地,這是最簡(jiǎn)單的方法,如圖 3 所示是實(shí)驗(yàn)板上按鍵的接法,四個(gè)按鍵分別接到 、 、 和 。當(dāng)然,實(shí)際應(yīng)用中,對(duì)按鍵的要求也是千差萬別,要根據(jù)不同的需要來編制處理程序,但以上是消除鍵抖動(dòng)的原則。 0 為高)再延時(shí) 510 個(gè)毫秒,消除后沿的抖動(dòng),然后再對(duì)鍵值處理。 0 口,如果仍為低,說明 S1 的確按下了,這實(shí)際上是避開了按鍵按下時(shí)的抖動(dòng)時(shí)間。軟件法其實(shí)很簡(jiǎn)單,就是在單片機(jī)獲得 P1。 為使 CPU 能正確地讀出 P1 口的狀態(tài),對(duì)每一次按鍵只作一次響應(yīng),就必須考慮如何去除抖動(dòng),常用的去抖動(dòng)的方法有兩種:硬件方法和軟件方法。這種抖動(dòng)對(duì)于人來說是感覺不到的,但對(duì)計(jì)算機(jī)來說,則是完全可以感應(yīng)到的,因?yàn)橛?jì)算機(jī)處理的速度是在微秒級(jí),而機(jī)械抖動(dòng)的時(shí)間至少是毫秒級(jí),對(duì)計(jì)算機(jī)而言,這已是 29 一個(gè)“漫長(zhǎng)”的時(shí)間了。由于按鍵是機(jī)械觸點(diǎn),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),會(huì)有抖動(dòng), P1。在下圖中,當(dāng)開 圖 2— 3 觸點(diǎn)式按鍵 關(guān) S 未被按下時(shí), 輸入為高電平, S 閉合后, P1。一般單片機(jī)系統(tǒng)中采用非編 碼鍵盤,非編碼鍵盤是由軟件來識(shí)別鍵盤上的閉合鍵,它具有結(jié)構(gòu)簡(jiǎn)單,使用靈活等特點(diǎn),因此被廣泛應(yīng)用于單片機(jī)系統(tǒng)。但是 CPU 所做的保護(hù)工作是很有限的,只保護(hù)了一個(gè)地址,而其它的所有東西都不保護(hù),所以如果在主程序中用到了如 A、 PSW 等,在中斷程序中又要用它們,還要保證回到主程序后這里面的數(shù)據(jù)還是沒執(zhí)行中斷以前的數(shù)據(jù),就得自己保護(hù)起來。這里還有個(gè)問題,即每個(gè)中斷向量地址只間隔了 8 個(gè)單元,如 0003- 000B,在如此少的空間中如何完成中斷程序呢? 一個(gè)完整的主程序看起來應(yīng)該是這樣的: 28 ORG 0000H LJMP START ORG 0003H LJMP INT0 ;轉(zhuǎn)外中斷 0 ORG 000BH RETI ;沒有用定時(shí)器 0 中斷,在此放一條 RETI,萬一 “不小心“產(chǎn)生了中斷,也不會(huì)有太大的后果。 中斷響應(yīng)過程 CPU 響應(yīng)中斷時(shí),首先把當(dāng)前指令的下一條指令(就是中斷返回后將要執(zhí)行的指令)的地址送入堆棧,然后根據(jù)中斷標(biāo)記,將相應(yīng)的中斷入口地址送入 PC, PC 是程序指針,CPU 取指令就根據(jù) PC 中的值, PC 中是什么 值,就會(huì)到什么地方去取指令,所以程序就會(huì)轉(zhuǎn)到中斷入口處繼續(xù)執(zhí)行。 ( RETI)或訪問 IP、 IE 寄存器的指令,則 CPU 至少再執(zhí)行一條指令才能響應(yīng)中斷。 。 了解了上述中斷的過程,就不難理解中斷響應(yīng)的條件了。這要換成人來說,就相當(dāng)于你在看書的時(shí)候,每一秒鐘都會(huì)抬起頭來看一看,查問一下,是不是有人按門鈴,是否有電話。 響應(yīng)次序?yàn)椋憾〞r(shí)器 0->外中斷 1->外中斷 0->實(shí)時(shí)器 1->串行中斷 。 IP 的首 3 位沒用,可任意取值,設(shè)為 000,后面根據(jù)要求寫就可以了 X X X PS PT1 PX1 PT0 PX0 0 0 0 0 0 1 1 0 表格 2— 6 因此,最終, IP 的值就是 06H??幢?25 中斷優(yōu)先級(jí)中由中斷優(yōu)先級(jí)寄存器 IP 來高置的, IP 中某位設(shè)為 1,相應(yīng)的中 斷就是高優(yōu)先級(jí),否則就是低優(yōu)先級(jí)。 優(yōu)先級(jí):?jiǎn)纹瑱C(jī)采用了自然優(yōu)先級(jí)和人工設(shè)置高、低優(yōu)先級(jí)的策略,即可以由程序員設(shè)定那些中斷是高優(yōu)先級(jí)、哪些中斷是低優(yōu)先級(jí),由于只有兩級(jí),必有一些中斷處于同一級(jí)別,處于同一級(jí)別的,就由自然優(yōu)先級(jí)確定。 寫到這里,大家應(yīng)當(dāng)明白,為什么前面有一些程序一開始我們這樣寫: ORG 0000H LJMP START ORG 0030H START:這樣寫的目地,就是為了讓出中斷源所占用的向量地址。 如果我們要設(shè)置允許外中斷 1,定時(shí)器 1 中斷允許,其它不允許,則 IE 可以是
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1