1. 幾種單片機c語言的中斷程序寫法
關於c的中斷使用一般是,定義函數的時候在後面加上interrupt
n
其中
n
對應中斷源的編號,其值從
0
開始,以
80c51
單片機為例,編號從
0~4,分別對應外中斷
0.
定時器0
中斷.外部中斷
1
.定時器1
中斷.和串列口中斷
.
void
xxxx(void)interrupt
n//中斷服務函數
{
要寫的中斷服務程序.
}
2. 凌陽單片機 用C語言寫中斷的格式 該怎麼寫啊
#include
"spce061a.h"
//功能:IOA接LED燈,低電平亮,高電平滅。每隔1S閃爍1次
void
IRQ5(void)
__attribute__
((ISR));//4HZ中斷在IRQ5裡面
unsigned
int
count_1s=0;//1秒計數
int
main()
{
__asm("INT
OFF");//關閉總中斷
*P_IOA_Dir=0xffff;//IOA為輸出
*P_IOA_Attrib=0xffff;//IOA為無反相
*P_IOA_Data=0xffff;//先初始化輸出1
*P_INT_Ctrl=C_IRQ5_4Hz;//允許4HZ中斷
__asm("INT
IRQ");//打開IRQ總中斷
while(1)
{
*P_Watchdog_Clear=1;//不停清狗,等待中斷
}
return
0;
}
void
IRQ5(void)//IRQ5中斷包含2HZ中斷和4HZ中斷
{
if((*P_INT_Ctrl)&C_IRQ5_4Hz)//判斷是否由4HZ引起的中斷
{
if(++count_1s==4)//是否進入4次中斷了?
{
count_1s=0;//計數清零
*P_IOA_Data^=0xffff;//IOA取反,使得LED燈閃爍
}
*P_INT_Clear=C_IRQ5_4Hz;//清除4HZ中斷標志
}
else//否則是由2HZ引起的。(該else可以不用寫的,因為之前沒有允許2HZ中斷,所以IRQ5必然是因4HZ中斷進入)
{
*P_INT_Clear=C_IRQ5_2Hz;//沒用到2HZ,直接清除2HZ中斷標志
}
}
3. 單片機用C語言編寫中斷的範例,順便簡述電路
#include <reg52.h> //包括一個52標准內核的頭文件
sbit P10 = P1^0;
void main(void)// 主程序
{
IT0=1; //外中斷跳變產生中斷
EX0=1;
EA=1; //打開總中斷
while(1) //主程序循環
{
;
}
}
//interrupt 0 代表0號中斷,也就是外部中斷0
int0() interrupt 0
{
P10=~P10; //在中斷里取反P1.0,翻轉LED燈狀態
}
電路很簡單,一LED加限流電阻,正極+5V,負極連P1.0。再用一按鈕,一端接地,另一端接P3.2。
4. 單片機用C語言編寫中斷的範例
#include
sbit
csb_sat=
p1^0;
//定義超聲波發生腳
void
delay(void)
//延時25微秒,12t晶元用12m誤差
0us
{
unsigned
char
a;
for(a=11;a>0;a--);
}
void
csb_fs(int
dat)
{while(dat--){csb_sat=1;delay();csb_sat=0;delay();}}
//發射
void
main()
{
ea=1;
while(1)
{
csb_fs(10);
delay();delay();delay();delay();delay();delay();delay();delay();delay();
ie=0x83;
//int0允許中斷
while(ie);
p1_1=1;delay();p1_1=0;delay();p1_1=1;delay();p1_1=0;delay();p1_1=1;delay();p1_1=0;delay();
}
}
void
int0_chuankou(void)
interrupt
0
using
1
//外部int0中斷子程序
{
ie=0;//禁止int0中斷
}
5. 求教一個簡單的C語言定時器中斷程序
每中斷一次,程序就會執行一次中斷程序,也就是會執行「void t0_rpt() interrupt 1」這個程序
6. c語言怎麼編寫單片機的中斷
標准c語言沒有中斷調用機制,但是不同編譯器都有相應的中斷處理方式,可以使用戶實現中斷功能。
解決方案:
1、採取輪詢的方式解決,就是每10毫秒檢查一下是否有鍵盤請求,總的來說,這樣基本上可以解決問題,而且簡單易行,但每10毫秒都要檢查,系統消耗太大。
2、採取中斷的方式:
(1)用高級語言調用中斷來處理問題。中斷是cpu響應一個中斷外圍設備8259A的一個過程,當鍵盤敲擊,cpu保存斷點暫停執行並且跳到相應的中斷處理程序繼續執行,結束後根據斷點再跳回來。通過這種方式可以輕松+愉快地解決這個問題。但是需要用到高級語言調用匯編,根據編譯器的不同而有所差別。
(2)自己模擬中斷。可以另外建立一個線程專門響應鍵盤的敲擊,如果有敲擊則打斷主線程。這樣做實現起來很復雜,而且涉及到不少復雜的關鍵技術,比如信號量之類的東西。
3、強大的vc
vc採取了消息映射的機制來處理外部設備的請求,比如時鍾中斷、鍵盤中斷等等。通過此可以灰常灰常容易的處理外部中斷。
7. 幾種單片機C語言的中斷程序寫法
外部中斷0:void ext0() interrupt 0
定時器0:void timer0() interrupt 1
外部中斷1:void ext1() interrupt 2
定時器1:void timer1() interrupt 3
串口; void uart() interupt 4
8. S3C2440的外部中斷程序怎麼寫(用C語言)
先初始化中斷,我一外部中斷1-4為例,中斷程序請看下方:
void Key_Init(void)
{
rGPFCON&=~((3<<2)|(3<<4)|(3<<6)|(3<<8));//初始化GPF1,GPF2,GPF3,GPF4(分別對應KEY2,KEY3,KEY4,KEY5)
rGPFCON|=(2<<2)|(2<<4)|(2<<6)|(2<<8);//將GPF1,GPF2,GPF3,GPF4分別設置為EINT
}
然後設置中斷控制寄存器:
void Irq_Init(void)
{
rINTMSK &= ~((1<<2)|(1<<3)|(1<<4)|(1<<5));//將INTMSK(中斷屏蔽寄存器)中的EINT1-4_7設置為可服務狀態
rEINTMASK &= ~((1<<4));//外部中斷屏蔽寄存器(KEY1,KEY2,KEY3和KEY4分別對應EINT4)
}
然後就要寫中斷服務函數了。
void Isr_Init(void)
{
pISR_EINT1=(unsigned int)Eint1_Isr;
}
void __irq Eint1_Isr(void)
{
unsigned long val;
val=rEINTPEND;
if(val&(1<<1))
{
rEINTPEND |=1<<8;
Led1_On();
Delay1s();
Led1_Off();
}
rSRCPND |=1<<1;
rINTPND |=1<<1;
}
不明白的可以追問我。
9. 單片機c語言中斷程序
關於C的中斷使用一般是,定義函數的時候在後面加上interrupt n 其中 n 對應中斷源的編號,其值從 0 開始,以 80C51 單片機為例,編號從 0~4,分別對應外中斷 0. 定時器0 中斷.外部中斷 1 .定時器1 中斷.和串列口中斷 .
void XXXX(void)interrupt n//中斷服務函數
{
要寫的中斷服務程序.
}