版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 項目項目5 5 按鍵識別的設計按鍵識別的設計 知識目標:1 1了解單片機的定義、類型和應用領域;了解單片機的定義、類型和應用領域;2 2掌握掌握AT89S51AT89S51單片機的封裝形式、實物外形及各個引腳的功能;單片機的封裝形式、實物外形及各個引腳的功能;3. 3. 掌握掌握AT89S51AT89S51單片機最小系統(tǒng)的組成及相關電路的工作原理;單片機最小系統(tǒng)的組成及相關電路的工作原理;4. 4. 掌握掌握AT89S51AT89S51單片機基本接口電路的組成及電路功能。單片機基本接口電路的組成及電路功能。 能力目標
2、:1. 1. 認識認識AT89S51AT89S51單片機、晶體振蕩器、單片機、晶體振蕩器、RS-232RS-232串口端及電阻、電容串口端及電阻、電容 等元器件。等元器件。2. 2. 會搭建單片機最小系統(tǒng)應用電路;會搭建單片機最小系統(tǒng)應用電路;3. 3. 了解單片機應用系統(tǒng)的開發(fā)過程。了解單片機應用系統(tǒng)的開發(fā)過程。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計 在單片機應用系統(tǒng)中,鍵盤主要用于向計算機輸入數(shù)據(jù)、傳送命令等,是人工干預計算機的主要手段。鍵盤要通過接口與單片機相連,分為編碼鍵盤和非編碼鍵盤兩類。
3、 鍵盤上閉合鍵的識別由專用的硬件編碼器實現(xiàn),并產(chǎn)生鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤,在單片機組成的各種系統(tǒng)中,使用最廣泛的是非編碼鍵盤。當然,也有用到編碼鍵盤的。 非編碼鍵盤有分為:獨立鍵盤和行列式(又稱為矩陣式)鍵盤。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計 用單鍵(即獨立鍵盤中的按鍵)實現(xiàn)對LED進行控制,每按一次按鍵時,LED顯示方式變化一次,用以表示按鍵控制的結果。1 1提出任務提出任務 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永
4、格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計 (1)硬件電路設計 以AT89S51單片機作為控制電路,按鍵連接至單片機的P1.0引腳,另一端接地,P2口外接8個采用共陽極連接方式的發(fā)光二極管(LED)和8個限流電阻,硬件電路原理圖所示。2 2任務分析任務分析XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0
5、/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89S51R8510R7510R6510R5510R4510R3510R2510R1510D1D2D3D4D5D6D7D8KX1CRYSTALC122pC222pR91kC310uF 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵
6、控制LEDLED的設計的設計 (2)獨立式按鍵的軟件設計 在單片機應用系統(tǒng)中主程序一般是循環(huán)結構,鍵盤程序作為子程序供主程序調用。單片機按鍵控制系統(tǒng)的主程序結構圖所示。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計 上電初始化后便循環(huán)調用鍵盤程序、顯示程序、功能處理程序等。在循環(huán)的過程中還可能因中斷而執(zhí)行中斷服務程序。 另外,在鍵盤的軟件設計中還要注意按鍵的去抖動問題。由于按鍵一般是由機械式觸點構成的,在按鍵按下和斷開的瞬間均有一個抖動過程,時間大約為5ms10ms,可能會造成單片機對按鍵的誤識別。 單片機
7、單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計物理按鍵抖動波形圖物理按鍵抖動波形圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計 按鍵消抖一般有兩種方法,即硬件消抖和軟件消抖。硬件消抖方法硬件消抖方法 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計在軟件設計中,當單片機檢測到有鍵按下時,可以先延時一段時間越過抖動過程再對按鍵識別。實際應用中,一
8、般希望按鍵一次按下單片機只處理一次,但由于單片機執(zhí)行程序的速度很快,按鍵一次按下可能被單片機多次處理。為避免此問題,可在按鍵第一次按下時延時10ms之后再次檢測按鍵是否按下,如果此時按鍵仍然按下,則確定有按鍵輸入。這樣便可以避免按鍵的重復處理。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計軟件消抖流程圖軟件消抖流程圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計3 3源程序編寫源程序編寫 /* 文件名:xm5-1.c *
9、 / #include / 包含頭文件 sbit key1=P10; / 按鍵定義 void delay10ms(void) / 延時10ms 子函數(shù) unsigned char i,k; / 變量定義 for(i=20;i0;i-) / for語句循環(huán)體 for(k=250;k0;k-); 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務1 1 單鍵控制單鍵控制LEDLED的設計的設計3 3源程序編寫源程序編寫void main(void) / 主函數(shù) char i=0 xfe; P2=i; /置P2.0引腳為低電平 while(1) if(key1= =
10、0) /判斷按鍵key1是否按下 delay10ms(); if(key1=0) /去抖動 if(i&0 x80)=0) i=i1; else i=(i1)+1; P2=i; while(key1=0); 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計 用AT89S51單片機及LED數(shù)碼管實現(xiàn)對鍵盤鍵值的實現(xiàn)。當按下鍵盤中不同按鍵時,LED數(shù)碼管上顯示不同的鍵值。1 1提出任務提出任務 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按
11、鍵狀態(tài)指示的設計2 2任務分析任務分析 (1)硬件電路設計 本設計采用AT89S51單片機最小系統(tǒng),P3口外接矩陣式鍵盤接口電路,P1口外接共陰型七段數(shù)碼管,如圖5.2.1所示。電路中共有16個按鍵,按44的矩陣式排列,鍵號依次為0F。單片機的P3.0P3.3為輸出口,連接4條列線;P3.4P3.7為輸入口,連接4條行線。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/A
12、D336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C5123456781RP1RESPACK-70123456789BCDEFAX1CRYSTALC222pC
13、322pR11kC110uF鍵盤鍵值顯示電路圖鍵盤鍵值顯示電路圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計 (2)軟件設計思路 矩陣式按鍵的軟件設計與獨立式按鍵不同的只是按鍵的識別方法不同。在矩陣式按鍵的掃描程序中,要對按鍵逐行逐列地掃描,得到按下鍵的行列信息,然后還要轉換成鍵號,以便據(jù)此轉到相應的鍵處理程序。 按鍵掃描子函數(shù)中,先對4條行線送高電平,當判斷有按鍵按下之后,延時30ms之后再判斷該按鍵是否按下。若仍然有按鍵按下,則能知道被按下按鍵所處的行編碼。之后再在判斷被按下按鍵所處列編碼,綜合行
14、、列編碼得到按鍵位置,從而判斷出鍵值。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計程序流程圖程序流程圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計3 3源程序編寫源程序編寫/文件名xm5-2.c#include #define uchar unsigned char#define uint unsigned intuchar key;unsigned char code disp_code=0 x3f,0 x
15、06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;unsigned char code key_code=0 xee,0 xed,0 xeb,0 xe7,0 xde,0 xdd,0 xdb,0 xd7, 0 xbe,0 xbd,0 xbb,0 xb7,0 x7e,0 x7d,0 x7b,0 x77 ; 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計3 3源程序編寫源程序編寫void
16、delayms(uint ms) uchar t; while(ms-) for(t = 0; t 120; t+); 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計3 3源程序編寫源程序編寫uchar keyscan() /鍵盤掃描程序 uchar scan1,scan2,keycode,j; P3=0 xf0; scan1=P3; if(scan1&0 xf0)!=0 xf0) /判鍵是否按下 delayms(30); /延時30ms scan1=P3; if(scan1&0 xf0)!=0 xf0)
17、 /二次判鍵是否按下 P3=0 x0f; scan2=P3; keycode=scan1|scan2; /組合成鍵編碼 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計for(j=0;j=15;j+) if(keycode= key_codej) /查表得鍵值 key=j; return(key); else P3=0 xff; return (16); 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計void keyd
18、own() /判斷是否有鍵按下 P3=0 x0f; if(P3&0 x0f)!=0 x0f) keyscan(); P0=disp_codekey; /在數(shù)碼管上顯示鍵值 main() P0 = 0 xbf; /數(shù)碼管顯示- P3 = 0 xff; while(1) keydown(); 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計 思考:思考: 矩陣鍵盤中,如果有兩個按鍵同時按下,能否識別? 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的
19、設計多路按鍵狀態(tài)指示的設計 知識鏈接知識鏈接 一、矩陣式鍵盤 1結構和工作原理 當輸入部分有多個按鍵時,若仍然采用獨立鍵盤,必然會占用大量的I/O口,采用矩陣鍵盤是一種比較節(jié)省資源的方法。矩陣式鍵盤又稱行列式鍵盤,往往用于按鍵數(shù)量較多的場合。矩陣式鍵盤的按鍵設置在行與列的交點上。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計一般矩陣鍵盤的連接示意圖一般矩陣鍵盤的連接示意圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的
20、設計2 2任務分析任務分析 (1)硬件電路設計 本設計采用AT89S51單片機最小系統(tǒng),P3口外接矩陣式鍵盤接口電路,P1口外接共陰型七段數(shù)碼管,如圖5.2.1所示。電路中共有16個按鍵,按44的矩陣式排列,鍵號依次為0F。單片機的P3.0P3.3為輸出口,連接4條列線;P3.4P3.7為輸入口,連接4條行線。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計 2按鍵的識別 確定鍵盤上哪一個鍵被按下可以采用逐行掃描或逐列掃描的方法,稱為行(列)掃描法。 (1)先將全部列線置為低電平,然后通過行線接口讀取行線
21、電平,判斷鍵盤中是否有按鍵被按下。 (2)判斷閉合鍵的具體位置。在確認鍵盤中有按鍵被按下后,依次將列線置為低電平,再逐行檢測各行的電平狀態(tài)。若某行為低電平,則該行與置為低電平的列線相交處的按鍵即為閉合按鍵。 (3)綜合上述兩步的結果,即可確定出閉合鍵所在的行和列,從而識別出所按下的鍵。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計 3矩陣式鍵盤的軟件設計 矩陣式鍵盤的掃描常用編程掃描方式、定時掃描方式或中斷掃描方式,無論采用哪種方式,都要編制相應的鍵盤掃描程序。在鍵盤掃描程序中一般要完成以下幾個功能:
22、(1)判斷鍵盤上有無按鍵按下; (2)去鍵的機械抖動影響; (3)求所按鍵的鍵號; (4)轉向鍵處理程序。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計 在編程掃描方式中,只有當單片機空閑時,才執(zhí)行鍵盤掃描任務。一般是把鍵盤掃描程序編成子程序,在主程序循環(huán)執(zhí)行時調用。在主程序執(zhí)行任務太多或執(zhí)行時間太長時,按鍵的反應速度會變慢。 在定時掃描方式中單片機可以定時對鍵盤進行掃描,方法是利用單片機內(nèi)部定時器,每隔一定的時間就產(chǎn)生定時中斷,CPU響應中斷后對鍵盤進行掃描,并在有按鍵按下時進行處理。 在中斷掃描方式
23、中,當鍵盤上有按鍵被按下時產(chǎn)生中斷申請,單片機響應中斷后,在中斷服務程序中完成鍵掃描、識別鍵號并進行鍵功能處理。 以上幾種鍵盤掃描方式只是轉入鍵盤掃描程序的方式不同,而鍵盤掃描程序的設計方法是類似的。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計二、函數(shù)的返回值 函數(shù)的值是指函數(shù)被調用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調函數(shù)的值。對函數(shù)返回值有以下一些說明: 函數(shù)的值只能通過return語句返回主調函數(shù)。 return 語句的一般形式為: return 表達式; 或者為: return (表達
24、式); 該語句的功能是計算表達式的值,并返回給主調函數(shù)。在函數(shù)中允許有多個return語句,但每次調用只能有一個return 語句被執(zhí)行,因此只能返回一個函數(shù)值。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務2 2 多路按鍵狀態(tài)指示的設計多路按鍵狀態(tài)指示的設計函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應保持一致。如果兩者不一致,則以函數(shù)類型為準,自動進行類型轉換。 如函數(shù)值為整型,在函數(shù)定義時可以省去類型說明。 不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void”。如: void s(int n) 一旦函數(shù)被定義為空類型后,就不能在主調函數(shù)中使
25、用被調函數(shù)的函數(shù)值了。為了使程序有良好的可讀性并減少出錯,凡不要求返回值的函數(shù)都應定義為空類型。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計利用獨立按鍵(采用外部中斷方式)控制彩燈的運行。通過按動按鍵,使得彩燈在三種閃亮方式(左移、右移、自定義花樣)之間切換。1 1提出任務提出任務 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計一般來說,按鍵處理方式有以下兩種:第一種方法是不斷地查詢按鍵,有按鍵按下時進行
26、消抖處理,再判斷是否真的有按鍵按下。這種方法在按鍵查詢期間不能做任何其他操作。第二種方法是每隔一段時間,抽樣檢測一次,對鍵值進行判別處理。利用按鍵對單片機輸出進行控制的基本方式在任務1和任務2中已介紹,分別實現(xiàn)了單鍵、多鍵對單片機輸出的控制。但是,任務1和任務2中的對按鍵處理的方式還存在不夠完善之處。為了解決這個問題,本任務中采用單片機的外部中斷方式來實現(xiàn)對按鍵輸入的處理。為了實現(xiàn)外部中斷對單片機的輸出的控制,需要將按鍵連接在外部中斷所對應的引腳上。2.2.任務分析任務分析 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用
27、外中斷控制的彩燈設計XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P
28、2.5/A1326P2.6/A1427U1AT89S51R8510R7510R6510R5510R4510R3510R2510R1510D1D2D3D4D5D6D7D8KX1CRYSTALC122pC222pR91kC310uF中斷控制LED電路圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計由于中斷函數(shù)與主函數(shù)之間的運行相當于兩個程序并行運行,而將一個任務分為兩個部分處理的具體分解方法有多種,因此用中斷函數(shù)控制彩燈的顯示,具體實現(xiàn)方法和實現(xiàn)程序也是多種多樣的。3 3程序設計分析程序設計分析 單片機
29、單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計(a a)主函數(shù)流程圖)主函數(shù)流程圖 b b)中斷函數(shù)流程圖)中斷函數(shù)流程圖 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計 /文件名xm5-3.c#include #define uchar unsigned charuchar light,a,b;void delay05s() /延時0.5s子函數(shù)uchar i,j,k;for(i=5;i0;i-) for(j=2
30、00;j0;j-)for(k=250;k0;k-);4源程序編寫 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計void delay10ms()uchar i,k;for(i=20;i0;i-) for(k=250;k0;k-); void left() /左移點亮LEDlight=light1;if(light= =0) light=0 x01;P2=light;4源程序編寫 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中
31、斷控制的彩燈設計void assum() /用戶自定義LED點亮方式uchar code dispcode8=0 xff,0 x7e,0 xbd,0 xdb,0 xe7,0 xdb,0 xbd,0 x7e;if(b= =7)b=0;else b+;P2=dispcodeb;4源程序編寫 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計void main()IT0=1; /設置INT0為下降沿觸發(fā)EX0=1; /局部開中斷,即允許INT0中斷EA=1; /全局開中斷a=1;light=0 x01;b=0;
32、while(1)switch(a)case 1:left();break;case 2:right();break;case 3:assum();break;delay05s();4源程序編寫 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計void int_0() interrupt 0 / 中斷子函數(shù)delay10ms();if(INT0= =0)a+;if(a3)a=1;4源程序編寫 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設
33、計采用外中斷控制的彩燈設計 知識鏈接知識鏈接 1.中斷有關概念 所謂中斷就是利用硬件配合,根據(jù)某種需要斷開正在執(zhí)行的程序而轉向另一專門程序,結束后再返回到原斷開處繼續(xù)執(zhí)行被中止的程序,這個過程稱為中斷。 中斷后轉向執(zhí)行的程序叫中斷服務程序或中斷處理程序。原程序被斷開的位置(地址)叫作斷點。 發(fā)出中斷信號的設備稱為中斷源。中斷源要求中斷服務所發(fā)出的標志信號稱為中斷請示或中斷申請。 中斷源向CPU發(fā)出中斷申請,CPU經(jīng)過判斷認為滿足條件,則對中斷源作出答復,這叫中斷響應。中斷響應后就去處理中斷源的有關請求,即轉去執(zhí)行中斷服務程序。 對于計算機控制系統(tǒng)而言,中斷源是多種多樣的。不同的機器中斷源也有所
34、不同。一般情況,中斷包括:外部設備如鍵盤、打印機等,還有內(nèi)部定時器、故障源以及根據(jù)需要人為設置的中斷源等。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計2. 引入中斷的主要優(yōu)點(1)提高CPU工作效率CPU工作速度快,外設工作速度慢,形成CPU等待,效率降低。設置中斷后,CPU不必花費大量時間等待和查詢外設工作。(2)實現(xiàn)實時處理功能中斷源根據(jù)外界信息變化可以隨時向CPU發(fā)出中斷請求,若條件滿足,CPU會馬上響應,對中斷要求及時處理。若用查詢方式往往不能及時處理。(3)實現(xiàn)分時操作單片機應用系統(tǒng)通常
35、需要控制多個外設同時工作。例如鍵盤、打印機、顯示器、A/D轉換器、D/A轉換器等。這些設備工作有些是隨機的,有些是定時的,對于一些定時工作的外設,可以利用定時器,到一定時間產(chǎn)生中斷,在中斷服務程序中控制這些外設荼。例如動態(tài)掃描顯示,每隔一定時間,更換顯示字位碼和字段碼。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計3. AT89S51中斷源AT89S51單片機共有5個中斷源。它們分別是:2個外部中斷,即。和)3 . 3(P1INT)2 . 3(0TPIN3個片內(nèi)中斷,即定時器T0的溢出中斷、定時器T
36、1的溢出中斷和串行口中斷;這5個中斷源,可以根據(jù)需要隨時向CPU發(fā)出中斷申請。當外部中斷源超過兩個,還可以通過一定的方法擴充。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計(1)外部中斷源外部中斷是由外部信號引起的,請求有兩種信號觸發(fā)方式,即低電平觸發(fā)和下降沿觸發(fā)。外部中斷請求的這兩種信號方式,可通過設置寄存器TCON中的IT0和IT1位狀態(tài)的值來設定。TCOND7D6D5D4D3D2D1D0位符號TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H
37、寄存器寄存器TCONTCON的內(nèi)容及位地址的內(nèi)容及位地址 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計其中各位的含義如下: IT0和IT1 :外部中斷請求觸發(fā)方式控制位 IE0和IE1 :外中斷請求標志位。 TF0和TF1 :定時/計數(shù)器溢出中斷請求標志位 TR0(TR1):定時/計數(shù)器的運行控制位 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計(2)定時器溢出中斷源定時/計數(shù)器中斷由單片機內(nèi)部定時器產(chǎn)生,
38、屬于內(nèi)部中斷。AT89S51內(nèi)部有兩個16位的定時器/計數(shù)器T0和T1,它們以計數(shù)的方法來實現(xiàn)定時或計數(shù)的。當它作為定時器使用時,其計數(shù)信號來自于CPU內(nèi)部的機器周期脈沖,當它作為計數(shù)器使用時,其計數(shù)信號來自于CPU的T0(P3.4)、T1(P3.5)引腳。在啟動定時/計數(shù)器后,每來一個機器周期或在對應的引腳上每檢測到一個脈沖信號時,定時/計數(shù)器就加1一次,當計數(shù)器的值從全1變?yōu)槿?時,就去置位一個溢出標志位,CPU查詢到后就知道有定時/計數(shù)器的溢出中斷的申請。(3)串行中斷源串行口中斷請求是在單片機芯片內(nèi)部自動發(fā)生的,不需在芯片上設置引入端。串行口中斷源分為串行口發(fā)送中斷和串行口接收中斷兩種
39、。串行中斷是為串行數(shù)據(jù)傳送的需要而設置的。每當串行口發(fā)送完一組串行數(shù)據(jù)時,就會使串行口控制寄存器SCON中的串行發(fā)送中斷標志位TX置1,每當串行口接收完一組串行數(shù)據(jù)時,就會使寄存器SCON中的串行接收中斷標志位RX置1,作為串行口中斷請求標志,產(chǎn)生一個中斷請求。 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計SCOND7D6D5D4D3D2D1D0位符號SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H寄存器寄存器SCONSCON的內(nèi)容及位地址的內(nèi)容及位
40、地址其中與中斷請求標志有關的位如下:TI:串行口發(fā)送中斷請求標志位RI:串行口接收中斷請求標志位 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計4中斷控制51系列單片機中斷系統(tǒng)的硬件結構如下圖所示。對中斷信號進行鎖存、屏蔽、優(yōu)先級控制是通過設置一些特殊功能寄存器,如寄存器TCON、SCON、IE和IP來進行的。EX0EAPX001ET0PT001EX1PX101ET1PT101ESPS011RITISCONTCONIE0TF0IE1TF110101IT0IT1INT0INT1T0T1RXTXIEIP1
41、11111110硬件查詢自然優(yōu)先級自然優(yōu)先級中斷入口中斷入口高級低級中斷源中斷源 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計IED7D6D5D4D3D2D1D0位符號EA-ESET1EX1ETOEX0位地址AFHAEHADHACHABHAAHA9HA8H寄存器寄存器IEIE的內(nèi)容及位地址的內(nèi)容及位地址 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計其中各位的含義如下:EA:中斷允許/禁止位,它是中斷請求的
42、總開關。0為禁止,1為允許。當EA=O時,將屏蔽所有中斷請求。ES:允許禁止串行口中斷,當ES位為0時,禁止串行口中斷。當ES位為時,允許串行口中斷。ETl:允許禁止定時器T1中斷,當ETl位為0時,禁止定時計數(shù)器Tl中斷,當ETl位為時,允許定時計數(shù)器Tl中斷。EXl:允許/禁止 中斷,當EXl位為0時,禁止 中斷,當EXl位為0時,禁止 中斷。ET0:允許禁止定時器T0中斷,當ET0位為0時,禁止定時/計數(shù)器T0中斷,當ET0位為時,允許定時/計數(shù)器T0中斷EX0:允許/禁止 中斷,當EX0位為0時,禁止 中斷,當EX0位為時,允許 中斷。 AT89S51單片機復位后,將IE寄存器清零,單
43、片機處于關中斷狀態(tài)。若要開放中斷,必須使EA=l且響應中斷允許位也為1。開中斷既可使用置位指令,也可使用字節(jié)操作指令實現(xiàn)。INT1INT1INT1INT0INT0INT0 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計(2)中斷優(yōu)先級控制寄存器IP單片機的中斷系統(tǒng)通常允許多個中斷源,當幾個中斷源同時向CPU發(fā)出中斷請求時,就存在CPU優(yōu)先響應哪一個中斷源請求的問題。AT89S51單片機只有兩個中斷優(yōu)先級,即低優(yōu)先級和高優(yōu)先級,對于所有的中斷源均可由軟件設置為高優(yōu)先級中斷或低優(yōu)先級中斷,當寄存器IP中相
44、應位的值為0時表示該中斷源為低優(yōu)先級,為l時表示為高優(yōu)先級。高優(yōu)先級中斷源可以中斷一個正在執(zhí)行的低優(yōu)先級中斷源的中斷服務程序,即可實現(xiàn)兩級中斷嵌套,但同級或低優(yōu)先級中斷源不能中斷正在執(zhí)行的中斷服務程序。IPD7D6D5D4D3D2D1D0位符號-PSPT1PX1PTOPX0位地址BFHBEHBDHBCHBBHBAHB9HB8H寄存器寄存器IPIP的內(nèi)容及位地址的內(nèi)容及位地址 單片機單片機C C語言應用技術與實踐語言應用技術與實踐 張永格 何乃味主編 任務任務3 3 采用外中斷控制的彩燈設計采用外中斷控制的彩燈設計各位含義如下:PS:串行口中斷優(yōu)先級控制位。若PS=1,則串行口指定為高優(yōu)先級,否
45、則為低優(yōu)先級。PTl:定時/計數(shù)器T1中斷優(yōu)先級控制位。若PTl=1,則定時/計數(shù)器T1指定為高優(yōu)先級,否則為低優(yōu)先級。PXl:外部中斷1中斷優(yōu)先級控制位。若PXl=1,則外部中斷1指定為高優(yōu)先級,否則為低優(yōu)先級。PT0:定時/計數(shù)器T0中斷優(yōu)先級控制位。若PT0=1,則定時/計數(shù)器T0指定為高優(yōu)先級,否則為低優(yōu)先級。PX0:外部中斷0中斷優(yōu)先級控制位。若PX0=1,則外部中斷0指定為高優(yōu)先級,否則為低優(yōu)先級。AT89S51單片機中,當幾個同級的中斷源提出中斷請求,CPU同時收到幾個同一優(yōu)先級的中斷請求時,哪一個的請求能夠得到服務取決于單片機內(nèi)部的硬件查詢順序,其硬件查詢順序便形成了中斷的自然優(yōu)先級,CPU將按照自然優(yōu)先級的順序確定該響應哪個中斷請求,自然優(yōu)先級是按照外部中斷0、定時/計數(shù)器0、外部中斷1、定時/計數(shù)器1、串行口的順序依次來響應中斷請求。 單片機單片機C C語言應用技術與實踐語言應用技術與
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輕鋼龍骨制作工崗前趨勢考核試卷含答案
- 機動車檢測工安全知識宣貫評優(yōu)考核試卷含答案
- 通信移動終端設備裝調工崗前潛力考核試卷含答案
- 儀表拆解工沖突解決評優(yōu)考核試卷含答案
- 刨花板調施膠工崗前工作改進考核試卷含答案
- 區(qū)塊鏈應用操作員安全宣貫強化考核試卷含答案
- 保健刮痧師崗前創(chuàng)新思維考核試卷含答案
- 板帶箔材精整工操作模擬考核試卷含答案
- 豎井鉆機工標準化知識考核試卷含答案
- 印染燒毛工崗前溝通協(xié)調考核試卷含答案
- (高清版)DB43∕T 1591-2019 鋰電池正極材料單位產(chǎn)品能源消耗限額及計算方法
- 塵埃粒子95%置信上限UCL計算公式
- 臨床微生物實驗室血培養(yǎng)操作規(guī)范解讀課件(WS-T-503-2017)
- GB/T 3830-2024軟聚氯乙烯壓延薄膜和片材
- 中醫(yī)內(nèi)科學智慧樹知到答案2024年浙江中醫(yī)藥大學
- 縫紉機銷售協(xié)議范例
- 2022年中國-東盟博覽會秘書處招聘考試試題及答案
- DZ∕T 0283-2015 地面沉降調查與監(jiān)測規(guī)范(正式版)
- 2024-2030中國半導體旋轉接頭市場現(xiàn)狀研究分析與發(fā)展前景預測報告
- WB/T 1131-2023汽車零部件入廠物流質損判定及處理規(guī)范
- 安全工器具登記臺賬
評論
0/150
提交評論