首先你要寫中斷函數(shù)
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,七臺河網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:七臺河等地區(qū)。七臺河做網(wǎng)站價格咨詢:18980820575
然后在主程序中像調(diào)用子函數(shù)一樣調(diào)用就可以了
舉個例子吧
#define uchar unsigned char
#define uchar unsigned char
sbit D1=P1^0;
uchar aa;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(aa==20)
{
D1=~D1;
aa=0;
}
}
}
void T0time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
外部中斷的常用功能
外部中斷經(jīng)常用來記錄外部脈沖的個數(shù),也就是當(dāng)我們使用外部中斷1時,如果想記錄自身單片機(jī)的某個引腳的下降沿個數(shù),只需用杜邦線把這個引腳和P3.3連接即可。
比如P2.3引腳產(chǎn)生這樣的電平無規(guī)律跳轉(zhuǎn),則下降沿的個數(shù)為5
所以我們就用外部中斷1來實現(xiàn)記錄K4按鍵從按下到松手的抖動過程中經(jīng)歷了多少個下降沿,把下降沿的個數(shù)顯示在數(shù)碼管上。
2.程序思路
我們定義一個16位的全局變量pulse用來記錄P2.3下降沿的個數(shù),在中斷函數(shù)中的任務(wù)就是簡單的pulse自加,因為引腳遇到下降沿就會進(jìn)入中斷函數(shù)。
在主函數(shù)里就是負(fù)責(zé)數(shù)碼管顯示即可。
3.代碼#include?
#include?//詳見第六章第8講
u16?pulse=0;
void?main()
{
u16?x,PULSE_buf;
IT1?=?1;???//下降沿觸發(fā)模式
EX1?=?1;
EA??=?1;
LED_Init();//初始化LED硬件模塊
KEY_Init();//初始化按鍵功能模塊
ShowNumber(pulse);
while(1)
{
SEG_Scan();
if(PULSE_buf!=pulse)ShowNumber(pulse);//pulse不再是前一次的值,也就是pulse數(shù)值更新了,所以數(shù)碼管緩存區(qū)也要更新pulse的數(shù)值以便顯示出來
x++;
if(x=50)//隔一段時間過來記錄此時的pulse數(shù)值
{
x=0;
PULSE_buf=pulse;
}
}
}
//請把P3.3和P2.3用杜邦線連接起來
void?EXTI1_IRQHandler()?interrupt?2
{
pulse++;
}
大家多按幾次K4,發(fā)現(xiàn)按下后松手的一個動作里有時pulse就自加了幾次,顯示在數(shù)碼管上的數(shù)加了好幾下。
對于C51單片機(jī),其內(nèi)部總共有五級中斷源
分別為外部中斷0、定時器0、外部中斷1、定時器1及串行中斷。
C51單片機(jī)的中斷使用時,主要是通過中斷服務(wù)號來決定的。
如你定義一個中斷服務(wù)函數(shù):
void KEY(void) intterrupt 0
{
}
當(dāng)外部中斷0申請中斷時
會自動根據(jù)interrupt后面的0,找到上面定義的這個中斷服務(wù)函數(shù)。
對于其他四個中斷源,其對應(yīng)的中斷號分別為1、2 、3、4
二樓的說得很對。它是一個中斷處理函數(shù),與一般的函數(shù)的區(qū)別在于他被調(diào)用的方式。一般的函數(shù)是由其上一層函數(shù)調(diào)用而得到執(zhí)行。而中斷函數(shù)是是外圍設(shè)備觸發(fā)它執(zhí)行的。比如說:spi接收到一字節(jié)的數(shù)據(jù)、adc采樣完成、定時器發(fā)生溢出等等。一旦這些事件發(fā)生了,只要中斷處于使能狀態(tài),就會觸發(fā)對應(yīng)的中斷。
不管主程序執(zhí)行到什么地方,cpu都會暫停它并立即執(zhí)行這種中斷處理函數(shù)。中斷處理函數(shù)執(zhí)行完成后又恢復(fù)之前的程序位置繼續(xù)執(zhí)行。
中斷的產(chǎn)生,不是由調(diào)用引起的,是由外界觸發(fā)的。就像,有人敲門,你就要去開門,這不等于你去開門了,就一定有人敲門。
另,中斷函數(shù)不能被直接調(diào)用,否則會出錯。
網(wǎng)頁題目:c語言中斷處理函數(shù) c語言 中斷
本文地址:http://vcdvsql.cn/article44/dopjjhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、云服務(wù)器、商城網(wǎng)站、軟件開發(fā)、靜態(tài)網(wǎng)站、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)