版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單元5按鍵模塊設(shè)計(jì)
2021/5/91回顧1,數(shù)碼管顯示原理?
2,靜態(tài)數(shù)碼管工作原理?3,動(dòng)態(tài)數(shù)碼管工作原理?4,AT89C51有幾個(gè)定時(shí)器?各是多少位的?請(qǐng)簡(jiǎn)述定時(shí)器實(shí)現(xiàn)定時(shí)原理?5,8051單片機(jī)定時(shí)/計(jì)數(shù)器工作方式有多少種?6,如何設(shè)置8051單片機(jī)工作在定時(shí)/計(jì)數(shù)模式下?7,如何啟動(dòng)定時(shí)器工作?8,請(qǐng)簡(jiǎn)述DS1302讀取時(shí)間的編程過(guò)程?2021/5/92本單元任務(wù)任務(wù)1獨(dú)立式鍵盤設(shè)計(jì)任務(wù)2鍵盤中斷設(shè)計(jì)任務(wù)3矩陣式鍵盤設(shè)計(jì)任務(wù)4多個(gè)外部中斷設(shè)計(jì)2021/5/93任務(wù)1獨(dú)立式鍵盤設(shè)計(jì)任務(wù)描述:任務(wù)分析:
眾多嵌入式單片機(jī)系統(tǒng)、嵌入式單片機(jī)產(chǎn)品設(shè)備中,鍵盤模塊都是必不可少的,比如手機(jī)及各種智能家電等。本任務(wù)通過(guò)按鍵控制點(diǎn)亮流水燈(8個(gè)按鍵分別對(duì)應(yīng)控制8個(gè)LED),學(xué)習(xí)最簡(jiǎn)單的鍵盤—獨(dú)立式按鍵設(shè)計(jì)方法。
鍵盤實(shí)際上是一組開(kāi)關(guān)的集合:當(dāng)鍵按下時(shí),兩根導(dǎo)線接通;釋放時(shí),兩根導(dǎo)線不通。8個(gè)按鍵的鍵盤電路可考慮在P2口上設(shè)計(jì),8個(gè)LED電路仍然安裝在單片機(jī)P1口。8個(gè)按鍵分別對(duì)應(yīng)控制8個(gè)LED,按下按鍵則點(diǎn)亮對(duì)應(yīng)的燈。
2021/5/94獨(dú)立式鍵盤工作原理及應(yīng)用獨(dú)立式鍵盤的組成是由若干個(gè)按鍵與單片機(jī)的I/O口一一的對(duì)應(yīng)連接,然后通過(guò)讀取單片機(jī)I/O的電平狀態(tài)來(lái)確認(rèn)哪個(gè)對(duì)應(yīng)的按鍵被按下,一般一個(gè)獨(dú)立式按鍵對(duì)應(yīng)一個(gè)功能,可以通過(guò)按鍵的組合來(lái)實(shí)現(xiàn)多個(gè)功能。P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7key1key2key3key0key4key5key6key72021/5/95抖動(dòng):當(dāng)用手按下一個(gè)鍵時(shí),往往出現(xiàn)按鍵在閉合和斷開(kāi)位置之間來(lái)回跳動(dòng)多次才能到閉合穩(wěn)定狀態(tài)的現(xiàn)象;在釋放一個(gè)鍵時(shí),也會(huì)出現(xiàn)類似的情況,這種情況就是抖動(dòng)。按下一個(gè)鍵時(shí)產(chǎn)生前沿抖動(dòng),釋放一個(gè)鍵時(shí)產(chǎn)生后沿抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間隨鍵盤簧片的材料和操作員而異,通常在5~10ms。而5~10ms已經(jīng)對(duì)程序進(jìn)行多次循環(huán)掃描執(zhí)行,顯而易見(jiàn),抖動(dòng)問(wèn)題不解決,就會(huì)引起對(duì)閉合鍵的多次識(shí)別。。鍵按下前沿抖動(dòng)后沿抖動(dòng)閉合穩(wěn)定2021/5/96應(yīng)用舉例:例5-12021/5/97 #include"AT89X51.H" voidmain() { while(1) { if(P2_0==0)//判斷key0被按下
{ key_delay();//去抖延時(shí)10ms if(P2_0==0) //再次判斷key0按下
{ while(!P2_0);//等待閉合釋放
P1_0=0;//點(diǎn)亮LED } } if(P2_1==0) //判斷key1被按下
{ key_delay();//去抖延時(shí)10ms if(P2_1==0) //再次判斷key1按下
{ while(!P2_1);//等待閉合釋放
P1_0=1;//熄滅LED } } } }2021/5/981.Proteus電路設(shè)計(jì)2.KeilC51程序設(shè)計(jì)3.Proteus-Keil聯(lián)合調(diào)試仿真任務(wù)實(shí)施2021/5/99硬件電路圖2021/5/910(1)程序流程
由獨(dú)立式鍵盤工作原理得知,按鍵是否按下是通過(guò)讀取按鍵對(duì)應(yīng)的IO的電平變化而判斷的,在程序設(shè)計(jì)上,即通過(guò)讀取按鍵對(duì)應(yīng)IO口的電平是否為低(軟件去抖)來(lái)決定哪個(gè)按鍵被按下,當(dāng)判斷key0被按下,則點(diǎn)亮LED0;當(dāng)判斷key1被按下,則點(diǎn)亮LED1……。
2021/5/911主程序設(shè)計(jì):
#include"AT89X51.H" unsignedcharcodeled_light[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; //點(diǎn)亮LED對(duì)應(yīng)的編碼
voidmain() { while(1) { if(P2_0==0)//判斷key0被按下
{ key_delay();//去抖延時(shí)10ms if(P2_0==0) //再次判斷key0按下
{ while(!P2_0);//等待閉合釋放
P1=led_light[0];//點(diǎn)亮LED0 } } if(P2_1==0) //判斷key1被按下
{ key_delay();//去抖延時(shí)10ms if(P2_1==0) //再次判斷key1按下
{ while(!P2_1);//等待閉合釋放
P1=led_light[1];//點(diǎn)亮LED1 } } ……; } }2021/5/912運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真2021/5/913任務(wù)2鍵盤中斷設(shè)計(jì)任務(wù)描述:任務(wù)分析:
項(xiàng)目組掌握獨(dú)立式鍵盤設(shè)計(jì)后,現(xiàn)要求用1個(gè)按鍵控制流水燈運(yùn)行樣式,初始時(shí)8個(gè)LED按從頭到尾方式循環(huán)運(yùn)行,當(dāng)按下按鍵,首尾兩燈點(diǎn)亮向中間,到中間后返回首尾的循環(huán)運(yùn)行,再次按下按鍵又轉(zhuǎn)為從頭到尾循環(huán)運(yùn)行……,即1個(gè)按鍵交替切換流水燈的兩種運(yùn)行樣式。
此任務(wù)設(shè)計(jì)有兩個(gè)主要功能模塊,一是按鍵的判斷,二是LED流水燈的運(yùn)行。通過(guò)前面單元的學(xué)習(xí)得知,這兩個(gè)功能在主程序中無(wú)限循環(huán)判斷執(zhí)行,正常人完成一次按鍵的時(shí)間需要20ms,而LED流水燈運(yùn)行頻率應(yīng)小于50Hz(即應(yīng)大于20ms走一個(gè)燈,否則運(yùn)行太快人眼無(wú)法識(shí)別),那么如果單片機(jī)CPU在執(zhí)行流水燈顯示延時(shí)程序期間,正好發(fā)生按鍵,CPU無(wú)法運(yùn)行按鍵掃描程序而導(dǎo)致按鍵判斷的丟失,如果1s或更長(zhǎng)時(shí)間走一個(gè)燈,那么丟失按鍵的現(xiàn)象將更加嚴(yán)重。由此可見(jiàn)普通的程序查詢獨(dú)立式按鍵設(shè)計(jì)方法在此任務(wù)設(shè)計(jì)是無(wú)法勝任的。本任務(wù)將介紹單片機(jī)重要的內(nèi)部資源—中斷系統(tǒng),它將有效解決上述問(wèn)題。
2021/5/9141,中斷的概念【例5-2】電路如5-10示,8個(gè)LED流水燈安裝在P1口,按鍵K0安裝在P2.0上,采用獨(dú)立式按鍵識(shí)別,實(shí)現(xiàn)任務(wù)描述中要求的功能。 程序分析:主程序有兩個(gè)功能模塊,一方面按鍵判斷程序,另一方面LED流水燈程序。由于按鍵是兩種流水燈運(yùn)行方式的交替按鍵,因此可考慮設(shè)置按鍵控制標(biāo)志位狀態(tài),LED流水燈則判斷標(biāo)志位狀態(tài)決定運(yùn)行方式,即按鍵通過(guò)標(biāo)志位間接控制LED流水燈的運(yùn)行方式。每次按下按鍵則把標(biāo)志位取反,以達(dá)到控制LED流水燈的運(yùn)行。2021/5/9152021/5/9162021/5/917voidmain(){ while(1) { if(P2_0==0)//判斷key0被按下
{ key_delay();//去抖延時(shí)10ms if(P2_0==0) //再次判斷key0按下
{ while(!P2_0);//等待閉合釋放
i=0; //編碼下標(biāo)i清0 run_flag=~run_flag; //標(biāo)志位取反
} } if(run_flag==0) //判斷LED運(yùn)行標(biāo)志位
{ P1=led_light1[i++];//點(diǎn)亮LED流水燈
led_delay(); //點(diǎn)亮延時(shí)
if(i==8)i=0; } else { P1=led_light2[i++];//點(diǎn)亮LED流水燈
led_delay(); //點(diǎn)亮延時(shí)
if(i==7)i=0; } } }
2021/5/9182,8051單片機(jī)中斷系統(tǒng)結(jié)構(gòu)2021/5/919(1)哪些事件可以引發(fā)中斷
8051單片機(jī)有5個(gè)中斷源。外部中斷0():由連接在P3.2引腳的外部信號(hào)觸發(fā)定時(shí)/計(jì)數(shù)器0(T0)溢出中斷外部中斷1():由連接在P3.3引腳的外部信號(hào)觸發(fā)定時(shí)/計(jì)數(shù)器1(T1)溢出中斷串行口中斷:由發(fā)送中斷TXD和接收中斷RXD組成 當(dāng)它們有中斷請(qǐng)求發(fā)出時(shí),將相應(yīng)的中斷標(biāo)志IE0、TF0、IE1、TF1、TI、RI自動(dòng)置位,單片機(jī)CPU根據(jù)中斷標(biāo)志位情況判別是哪個(gè)中斷源發(fā)出的中斷請(qǐng)求。中斷標(biāo)志位存放在特殊功能寄存器TCON、SCON中。2021/5/920(2)中斷標(biāo)志
TCON2021/5/921 SCON2021/5/922(3)中斷允許與禁止
IE2021/5/923(1)EA:總中斷允許控制。當(dāng)EA=1時(shí),開(kāi)放所有中斷,此時(shí)各中斷源的允許和禁止通過(guò)相應(yīng)的中斷允許位單獨(dú)加以控制;當(dāng)EA=0時(shí),禁止所有中斷。(2)ES:允許或禁止串行口中斷控制位。ES=1,允許中斷;ES=0,禁止中斷。(3)ET1:允許或禁止定時(shí)器T1溢出中斷控制位。ET1=1,允許中斷;ET1=0,禁止中斷。(4)EX1:允許或禁止中斷控制位。EX1=1,允許中斷;EX1=0,禁止中斷。(5)ET0:允許或禁止定時(shí)器T0溢出中斷控制位。ET0=1,允許中斷;ET0=0,禁止中斷。(6)EX0:允許或禁止中斷控制位。EX0=1,允許中斷;EX0=0,禁止中斷。2021/5/924(4)中斷的響應(yīng)條件
首先中斷源有請(qǐng)求。其次編程設(shè)置單片機(jī)CPU允許所有中斷源請(qǐng)求(EA=1),并且中斷允許寄存器IE相應(yīng)位置為1。這樣,在每個(gè)機(jī)器周期內(nèi),單片機(jī)對(duì)所有中斷源進(jìn)行順序檢測(cè),并找到所有有效的中斷請(qǐng)求,對(duì)其優(yōu)先級(jí)排隊(duì)。單片機(jī)在緊接著下一個(gè)機(jī)器周期響應(yīng)中斷條件是:1無(wú)同級(jí)或更高級(jí)中斷占用CPU控制權(quán);2當(dāng)前指令執(zhí)行完畢;3如果當(dāng)前指令為RETI或需訪問(wèn)IE、IP的指令,執(zhí)行完該指令且緊隨其后的一條指令也已執(zhí)行完畢。否則,單片機(jī)將放棄對(duì)中斷請(qǐng)求的響應(yīng)。2021/5/925(5)中斷響應(yīng)過(guò)程
中斷的響應(yīng)過(guò)程由單片機(jī)CPU控制,自動(dòng)完成,具體有如下幾個(gè)步驟:執(zhí)行一個(gè)硬件子程序調(diào)用,處理優(yōu)先級(jí)最高的中斷請(qǐng)求,清除中斷請(qǐng)求標(biāo)志位(TI和RI除外);硬件子程序?qū)纹瑱C(jī)當(dāng)前執(zhí)行的內(nèi)容的地址壓入堆棧,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序的第一條指令。中斷處理程序從入口地址開(kāi)始一直執(zhí)行到最后為止;系統(tǒng)返回原來(lái)被打斷的程序處開(kāi)始繼續(xù)執(zhí)行。2021/5/9263,中斷編程結(jié)構(gòu)(1)編寫中斷初始化程序 為使單片機(jī)CPU在執(zhí)行主程序過(guò)程中能夠響應(yīng)中斷,就必須先對(duì)使用中斷的相關(guān)寄存器(TMOD、SCON、IE等)進(jìn)行初始化。
【例5-3】假設(shè)單片機(jī)系統(tǒng)允許外部中斷0、定時(shí)/計(jì)數(shù)器T0中斷,并設(shè)定采用邊沿觸發(fā),則主程序中的中斷初始化程序如下:
IT0=1; //設(shè)置為下降沿觸發(fā)
EX0=1; //允許中斷
ET0=1; //允許T0中斷
EA=1; //開(kāi)放所有中斷2021/5/927(2)編寫中斷服務(wù)程序中斷程序入口。C51規(guī)定了8051單片機(jī)每種中斷類型對(duì)應(yīng)中斷服務(wù)程序的入口編號(hào)中斷類型C51中斷處理程序的中斷號(hào)外部中斷00定時(shí)/計(jì)數(shù)器0溢出中斷1外部中斷12定時(shí)/計(jì)數(shù)器1溢出中斷3串行口中斷42021/5/928現(xiàn)場(chǎng)保護(hù)。如果中斷服務(wù)程序中要使用與主程序有關(guān)的寄存器,那么CPU在執(zhí)行中斷服務(wù)程序之前要保護(hù)這些寄存器的內(nèi)容,即“保護(hù)現(xiàn)場(chǎng)”,中斷返回時(shí)再恢復(fù)它們的值。在使用KeiluVison4集成開(kāi)發(fā)環(huán)境時(shí),其C51編譯器為中斷服務(wù)程序提供自動(dòng)現(xiàn)場(chǎng)保護(hù)以及返回時(shí)內(nèi)容恢復(fù)的功能,為用戶編程提供了方便。2021/5/929常用的中斷服務(wù)程序的結(jié)構(gòu)如下。void中斷程序名()interrupt中斷號(hào)usingn { ……;}
其中“中斷程序名”最好依據(jù)中斷服務(wù)程序的功能,取一個(gè)比較直觀淺顯的名稱;“interrupt”是中斷服務(wù)程序的關(guān)鍵字;“中斷號(hào)”則根據(jù)表5-1所示,如果使用外部事件0中斷,則“中斷號(hào)”為0;using定義工作寄存器組;n為寄存器組編號(hào)(0~3),默認(rèn)為0;“{}”內(nèi)部為中斷服務(wù)要執(zhí)行的程序。2021/5/9304,按鍵與外部事件中斷(1)IT0:設(shè)置為1,選擇外部中斷0由下降沿觸發(fā),即當(dāng)出現(xiàn)一個(gè)下降沿表示有一個(gè)外部中斷0的請(qǐng)求信號(hào)。為什么將IT0設(shè)置為1呢?任務(wù)1學(xué)習(xí)得知(圖6-3),按鍵按下將會(huì)產(chǎn)生一個(gè)從高電平到低電平的邊沿跳變(稱為“下降沿”),按鍵松開(kāi)產(chǎn)生從低電平到高電平的邊沿跳變(稱為“上升沿”)。因此1次按鍵信號(hào)(產(chǎn)生一次下降沿)正好轉(zhuǎn)化成外部中斷0信號(hào)。(2)IE0:無(wú)需初始,它由硬件自動(dòng)設(shè)置。(3)EX0:設(shè)置為1,即允許CPU響應(yīng)外部中斷0請(qǐng)求。(4)EA:設(shè)置為1,允許CPU響應(yīng)所有中斷請(qǐng)求。2021/5/9311.Proteus電路設(shè)計(jì)2.KeilC51程序設(shè)計(jì)3.Proteus-Keil聯(lián)合調(diào)試仿真任務(wù)實(shí)施2021/5/932硬件電路圖2021/5/933(1)程序流程 主程序根據(jù)標(biāo)志位狀態(tài),無(wú)限循環(huán)執(zhí)行LED流水燈程序;按鍵的判斷轉(zhuǎn)化成中斷處理,按下按鍵則意味著一次中斷事件發(fā)生,單片機(jī)處理按鍵任務(wù),即跳轉(zhuǎn)到INT0中斷處理程序中,交替將LED流水燈標(biāo)志位置1/清0。2021/5/934主程序設(shè)計(jì):
voidmain(){ IT0=1; //設(shè)置外部中斷0觸發(fā)方式位,1為邊沿觸發(fā)
EX0=1; //外部中斷0中斷允許位
EA=1; //允許總中斷標(biāo)志位
while(1) { if(run_flag==0) //判斷運(yùn)行標(biāo)志位狀態(tài)
{ P1=led_light1[i++]; delay(); if(i==8)i=0; } else { P1=led_light2[i++];//點(diǎn)亮LED流水燈
delay(); //點(diǎn)亮延時(shí)
if(i==7)i=0; } } }2021/5/935中斷程序:voidint0()interrupt0 //中斷服務(wù)函數(shù)入口{ EX0=0; i=0; run_flag=~run_flag; //每按一下按鍵,行標(biāo)志位取反
EX0=1; }2021/5/936運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真2021/5/937任務(wù)3矩陣式鍵盤設(shè)計(jì)任務(wù)描述:任務(wù)分析:
當(dāng)嵌入式產(chǎn)品、設(shè)備中的按鍵數(shù)目較多時(shí),將采用更普遍的按鍵設(shè)計(jì)方法—矩陣式鍵盤。本任務(wù)要求運(yùn)用矩陣式鍵盤的設(shè)計(jì)方法設(shè)計(jì)9個(gè)按鍵控制點(diǎn)亮1個(gè)數(shù)碼管分別顯示1~9。
獨(dú)立式鍵盤的每個(gè)按鍵都要獨(dú)占一位I/O,當(dāng)按鍵較多就會(huì)嚴(yán)重耗費(fèi)單片機(jī)的I/O資源。比如計(jì)算機(jī)的鍵盤功能有100多個(gè),如果采用獨(dú)立式方法設(shè)計(jì),就需要100多個(gè)I/O,因此獨(dú)立式鍵盤設(shè)計(jì)在按鍵較多的情況下不再適合。本任務(wù)將探討新的方法—矩陣式鍵盤設(shè)計(jì),盡可能少占用I/O資源又保證設(shè)計(jì)的效果。2021/5/938矩陣式鍵盤工作原理及應(yīng)用矩陣式鍵盤是利用幾根I/O口線作為列,幾根作為行,行跟列相交叉,在交叉點(diǎn)用按鍵連接列和行的I/O口線。2021/5/9392341掃描循環(huán)2021/5/940
矩陣式鍵盤的工作原理是單片機(jī)通過(guò)定時(shí)掃描的方式來(lái)查詢按鍵的狀態(tài),如先從行掃描,在掃描第一行的時(shí)候查詢?cè)谶@一行上與列相交叉的按鍵有沒(méi)有被按下,如果沒(méi)有按鍵按下就以掃描第一行的方式掃描第二行,這樣循環(huán)掃描所有的行,如果有就作出相應(yīng)的處理,處理實(shí)現(xiàn)后再繼續(xù)重新掃描。由于在掃描第1行的時(shí)候P2.3=0,但行P2.3與列P2.7交叉處的按鍵被按下時(shí),P2.7就會(huì)從本來(lái)的高電平變?yōu)榈碗娖?從而確定是哪個(gè)按鍵被按下.2021/5/941應(yīng)用舉例:例5-52021/5/942 #define Portkey P2 //鍵盤控制端列線P2.0P2.1 #define KeyColm1 P2_2 //行線P2.2P2.3 Portkey=0xff; //矩陣按鍵全輸出1 KeyColm1=0; //選擇掃描第一行
key_temp=Portkey; //讀按鍵控制端
key_temp=key_temp&0x03; //0000,0011讀取列線鍵值
if(key_temp!=0x03) //如果鍵值不等于0x03 { key_delay(); //去抖延時(shí)
key_temp=Portkey; //讀按鍵控制端
key_temp=key_temp&0x03; //0000,0111讀取列線鍵值
if(key_temp!=0x03) //如果鍵值仍不等于0x03 { switch(key_temp) //對(duì)讀取的鍵盤分配相應(yīng)鍵碼
{ case0x02: //00000010,key0被按下
break; case0x01: //00000001,key1被按
break; } } }2021/5/9431.Proteus電路設(shè)計(jì)2.KeilC51程序設(shè)計(jì)3.Proteus-Keil聯(lián)合調(diào)試仿真任務(wù)實(shí)施2021/5/944硬件電路圖2021/5/945(1)程序流程
程序設(shè)計(jì)最重要的部分就是矩陣鍵盤的掃描,此電路為3×3鍵盤,編程從行開(kāi)始逐行掃描,掃描至第三行,重新開(kāi)始循環(huán)第一行掃描。
2021/5/946
主程序設(shè)計(jì):
main() { key=9; //初始顯示關(guān)閉
while(1) { Portkey=0xff; //矩陣按鍵全輸出1 KeyColm1=0; //選擇掃描第一行
key_temp=Portkey; //讀按鍵控制端
key_temp=key_temp&0x07; //0000,0111讀取鍵值
if(key_temp!=0x07) //如果鍵值不等于0x07 { key_delay(); //去抖延時(shí)
key_temp=Portkey; //讀按鍵控制端
key_temp=key_temp&0x07; //0000,0111讀取鍵值
if(key_temp!=0x07) //如果鍵值仍不等于0x07 { switch(key_temp) //對(duì)讀取的鍵盤分配相應(yīng)鍵碼
{ case0x06: //00000110,k0被按下
key=0; //顯示內(nèi)容變量
break; case0x05: //00000101,k1被按下
key=1; break; case0x03: //00000011,k2被按下
key=2; break; } } }
……;2021/5/947運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真【課堂練習(xí)】構(gòu)建2×2矩陣式鍵盤(K0、K1、K2、K3),控制2個(gè)共陽(yáng)極數(shù)碼管對(duì)應(yīng)顯示23、68、77、19。2021/5/948任務(wù)4多個(gè)外部中斷設(shè)計(jì)任務(wù)描述:任務(wù)分析:
在實(shí)際項(xiàng)目設(shè)計(jì)中,有些時(shí)候可能需要將不止一個(gè)事件設(shè)計(jì)成中斷處理任務(wù),這就涉及到多個(gè)中斷并存的情況。本任務(wù)要求設(shè)計(jì)兩個(gè)按鍵分別控制LED流水燈工作流程,當(dāng)k0按下,流水燈從兩頭向中間運(yùn)行,達(dá)到中間返回兩頭,來(lái)回往返;當(dāng)k1按下,流水燈先點(diǎn)亮紅燈,再點(diǎn)亮藍(lán)燈,即重復(fù)點(diǎn)亮紅燈、藍(lán)燈。
按鍵控制流水燈工作狀態(tài),不能采用獨(dú)立式按鍵設(shè)計(jì)。因此兩個(gè)按鍵都應(yīng)運(yùn)用“中斷”的設(shè)計(jì)方法,89C51有INT0、INT1兩個(gè)外部中斷,可以滿足兩個(gè)按鍵的設(shè)計(jì)要求。
2021/5/949中斷優(yōu)先級(jí)當(dāng)幾個(gè)中斷源同時(shí)向單片機(jī)CPU發(fā)出中斷請(qǐng)求時(shí),CPU應(yīng)優(yōu)先響應(yīng)最需緊急處理的中斷請(qǐng)求。為此,需要規(guī)定各個(gè)中斷源的優(yōu)先級(jí),使CPU在多個(gè)中斷源同時(shí)發(fā)出中斷請(qǐng)求時(shí)能找到優(yōu)先級(jí)最高的中斷源,響應(yīng)它的中斷請(qǐng)求。高優(yōu)先級(jí)的中斷請(qǐng)求處理完畢以后,再響應(yīng)優(yōu)先級(jí)低的中斷請(qǐng)求。中斷源的響應(yīng)優(yōu)先級(jí)由寄存器IP確定,中斷系統(tǒng)可以在IP定義兩個(gè)優(yōu)先級(jí)水平,即高優(yōu)先級(jí)水平和低優(yōu)先級(jí)水平;同時(shí)規(guī)定了同一水平下不同中斷源的優(yōu)先級(jí)。2021/5/950特殊功能寄存器IP2021/5/9511.Proteus電路設(shè)計(jì)2.KeilC51程序設(shè)計(jì)3.Proteus-Keil聯(lián)合調(diào)試仿真任務(wù)實(shí)施2021/5/952硬件電路圖2021/5/953兩個(gè)按鍵對(duì)應(yīng)為外部中斷0、外部中斷1,因此鍵盤電路必須設(shè)計(jì)在外部中斷口上,如圖5-30示將按鍵k0、k1分別設(shè)計(jì)在P3.2/INT0、P3.3/INT1管腳上,LED電路依然設(shè)計(jì)在P1口上。2021/5/954(1)程序流程 由于兩個(gè)按鍵分別控制流水燈不同運(yùn)行狀態(tài),因此程序設(shè)計(jì)中采用兩個(gè)運(yùn)行標(biāo)志位進(jìn)行相應(yīng)的判斷;而兩個(gè)按鍵的都轉(zhuǎn)化成中斷處理,按下按鍵k0,代表INT0中斷事件發(fā)生,按下按鍵k1,代表INT1中斷事件發(fā)生,單片機(jī)響應(yīng)按鍵,即跳轉(zhuǎn)到響應(yīng)中斷的處理程序中,將對(duì)應(yīng)的運(yùn)行標(biāo)志位置1。在使用“中斷”時(shí),都應(yīng)初始兩個(gè)中斷相關(guān)的寄存器。2021/5/955主程序設(shè)計(jì):main(){ IT0=1; //設(shè)置外部中斷0觸發(fā)方式位,1為邊沿觸發(fā)
EX0=1; //外部中斷0中斷允許位
IT1=1;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度孟安與配偶離婚協(xié)議:共同財(cái)產(chǎn)分割及子女監(jiān)護(hù)協(xié)議4篇
- 導(dǎo)演與攝影師2025年度合作協(xié)議3篇
- 2025年銷售人員合同范本:旅游產(chǎn)品銷售合作協(xié)議2篇
- 城東小學(xué)2025年度智能調(diào)光窗簾紗窗采購(gòu)合同2篇
- 二零二五年度美發(fā)店員工培訓(xùn)與職業(yè)發(fā)展合同4篇
- 2025年度金融衍生品買賣合同標(biāo)的交易風(fēng)險(xiǎn)管理4篇
- 2025年度綠色能源餐館司爐員專項(xiàng)聘用合同3篇
- 鄭州城市職業(yè)學(xué)院《交通監(jiān)控系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版苗木種植保險(xiǎn)產(chǎn)品設(shè)計(jì)與銷售合同4篇
- 2025年度房地產(chǎn)租賃融資合同模板4篇
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢(shì)白皮書
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 2024年醫(yī)療器械經(jīng)營(yíng)質(zhì)量管理規(guī)范培訓(xùn)課件
- 高低壓配電柜產(chǎn)品營(yíng)銷計(jì)劃書
- 2024年4月自考02202傳感器與檢測(cè)技術(shù)試題
- 社會(huì)系統(tǒng)研究方法的重要原則
- 重癥醫(yī)學(xué)科健康宣教手冊(cè)
- 2022版《義務(wù)教育英語(yǔ)課程標(biāo)準(zhǔn)》解讀培訓(xùn)課件
- 五個(gè)帶頭方面談心談話范文三篇
- 互聯(lián)網(wǎng)的發(fā)展歷程
評(píng)論
0/150
提交評(píng)論