单片机中断函数怎么写

单片机中断怎么写

1. 51单片机中断程序怎么写

这个题不用中断更方便

#include<reg52.h>

#include<stdio.h>

int list[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

int list2[3] = {0x84,0x42,0x21};

int flag, i;

sbit s1 = P3^2;

void delay(int k)

{

int i, j;

for (i = 0; i < k; i++)

for (j = 0; j < k; j++);

}

void keyfind()

{

if (s1 == 0)

{

delay(3);

if (s1 == 0)

{

flag = 0;

}

}

}

void display()

{

if (flag == 0)

{

for (i = 0; i < 3; i++)

{

P1 = list2[i];

delay(120);

keyfind();

if (flag != 0)

{

break;

}

}

}

else

{

for (i = 0; i < 8; i++)

{

P1 = list[i];

delay(120);

keyfind();

if (flag !=1)

{

break;

}

}

}

}

void main()

{

flag = 1;

while(1)

{

display();

}

}

2. 单片机的中断应该怎样去写程序

单片机的中断程序一般都要写在特定的地方,或是有特定的格式要求。

中断的响应是程序指针跳转到这个中断入口地址的过程,所以最好结合你使用的单片机的手册看清楚中断向量编号,地址也可以。进入一个中断程序,首先一般都要清楚中断标志位,如果这个中断不允许被其他中断所中断,就需要禁止所有中断并在退出这个中断时允许中断。

在中端程序里尽量不要写比较长的代码,会严重影响单片机的效率,如果你不明白怎么写,就先了解你要用的单片机中关于中断的用法,仅仅是中端还是比较好理解的,如果是和定时器等相关特殊功能寄存器结合的中断你可能就需要更好地了解这块单片机。先可以看看别人用这块单片机写的程序,然后再查阅些相关资料,再自己写几个程序试验一下,就会熟悉的。

希望我说的这些可以帮到你。

3. 单片机中断,写中断程序的格式是什么,是固定的么,程序是怎么执

格式是固定的

void 中断名(void) interrupt n

这个中断名你可以随意取只要不是保留字就可以

n=0对应外部中断0

n=1对应定时器0

n=2对应外部中断1

n=3对应定时器1

n=4对应串口

。.

比如定时器0中断服务程序

void isr_timer0() interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

P0=~P0;

}

4. 单片机c语言写两个中断,两个中断怎么写

//任务6 显示按键按下的次数(中断方式)

//任务6 显示按键按下的次数(中断方式)

#include <reg51.h> //1 包含特殊功能寄存器定义头文件reg51.h

#define ledport P2 //2 宏定义:ledport代表P2(发光二极管接P2口)

#define uchar unsigned char //3 宏定义:uchar代表unsigned char

#define ulong unsigned int //3 宏定义:ulong代表unsigned long

#define unsigned int j;

uchar m=0xef; //5 定义变量m:m用来保存显示控制数据,初值为0xfe

ulong i;

sfr p1=0x90;

sbit led1=P1^0; //led引脚定义

sbit led2=P1^1;

sbit led3=P1^2;

sbit led4=P1^3;

void fun1_int() interrupt 0 using 1//5 定义中断服务函数:中断号为0,用第1组寄存器组

{

while(1) //while循环(永远为真,死循环)

{ //循环体开始

led1=~led1; //发光二级管的显示状态取反

led2=~led2;

led3=~led3;

led4=~led4;

for(j=0;j<12500;j++); //for循环,循环体为空,耗时 //延时500ms

}

} //循环体结束

void fun2_int() interrupt 1 using 2//5 定义中断服务函数:中断号为0,用第1组寄存器组

{

while(1) //7 while循环,条件表达式为1,永远为真,死循环

{ //8 while循环体开始

P1=m; //9 P1口输出当前显示控制数据

m=(m<<1)|(m>>7); //10 显示数据m向左循环移1位,为下次显示输出作准备

for(i=0;i<60000;i++); //11 for循环实现1s延时,循环体为空语句

} //12 while循环体结束

}

//8 中断服务函数结束

void main(void) //9 main函数

{

EA=1;

EX0=0; //12 开外部中断0

EX1=0;

IT1=1;

IT0=1; //11 设置外部中断0的触发方式:下降沿触发。见代码说明

while(1)

; //14 死循环,循环体为空语句

} //15 main函数结束

//任务1 控制1只发光二极管闪烁显示上面的注释可以省略不看,

这个需要设置不同的寄存器,注意依稀俺这里就可以了的,然后查一下数据手册。

5. 单片机中断函数如何编写

中断服务程序的入口地址是相对固定的,而普通的功能程序入口则是随意设置的,此外,中断服务程序的调用方式也不同于普通的功能程序,中断服务程序的调用是靠中断申请信号,而非普通的程序。

在C51中,中断服务程序同样是一种特殊的函数,其标准形式如下。

void 函数名(void)interrupt n using m

{

函数体语句

}

此处的interrupt和using是C51的关键字,interrupt表示该函数是一个中断服务函数,n表示该中断服务函数所对应的中断源,中断源与中断编号的对应关系见表

Using用指定该中断服务程序要使用的工作寄存器组号,m取值为0~3,当不使用关键字using时,编译系统将会把当前工作寄存器组的8个寄存器都压入堆栈,中断服务函数是由系统调用的,程序中的任何函数都不能调用中断服务函数。

一般可以不使用using m.

中断函数怎么写

1. 单片机中断函数如何编写

中断服务程序的入口地址是相对固定的,而普通的功能程序入口则是随意设置的,此外,中断服务程序的调用方式也不同于普通的功能程序,中断服务程序的调用是靠中断申请信号,而非普通的程序。

在C51中,中断服务程序同样是一种特殊的函数,其标准形式如下。

void 函数名(void)interrupt n using m

{

函数体语句

}

此处的interrupt和using是C51的关键字,interrupt表示该函数是一个中断服务函数,n表示该中断服务函数所对应的中断源,中断源与中断编号的对应关系见表

Using用指定该中断服务程序要使用的工作寄存器组号,m取值为0~3,当不使用关键字using时,编译系统将会把当前工作寄存器组的8个寄存器都压入堆栈,中断服务函数是由系统调用的,程序中的任何函数都不能调用中断服务函数。

一般可以不使用using m.

2. 如何写中断程序

中断函数不用进行函数声明,可以写在MAIN函数前面也可以写在MAIN函数后面。

一、中断服务程序,处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。

二、当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。

三、实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。

四、保护被中断进程现场。为了在中断处理结束后能够使进程准确地返回到中断点,系统必须保存当前处理机程序状态字PSW和程序计数器PC等的值。

五、分析中断原因,转去执行相应的中断处理程序。在多个中断请求同时发生时,处理优先级最高的中断源发出的中断请求。恢复被中断进程的现场,CPU继续执行原来被中断的进程。

3. 如何写中断程序

果你在程序里面对函数进行了声明的话,子程序可以写在任意地方(当然还是要在这个文件里面)。如果不进行声明的话,也不是仅仅写在MAIN函数之前这条规则这么简单,而是不能还让编译器没有编译到这个函数当时遇到了这个函数被其他函数调用,这样的话就会出错。

第二,中断函数不用进行函数声明,可以写在MAIN函数前面也可以写在MAIN函数后面。

第三,由于不知道你说的是那种单片机在那种编译器下面的写法,我在这里给你一个51内核的单片机79F168在KEIL里面的中断函数的写法给你。

void UART_ISR() interrupt 4

{

if(RI && REN)

{

}

if(TI && TXEN)//TXEN为自己定义的一个串口发送使能标志

{

}

}

void timer0_1ms_ISR() interrupt 1

{

TL0=LOBYTE(TIMER0);

TH0=HIBYTE(TIMER0);

}

这两个函数第一个是串口中断函数,第二个是定时器0中断函数,函数名可以自己定义,后面的interrupt必须写,紧着这最关键的就是这个中断号,可以查询数据手册得到这个中断号,每一个中断都会有一个中断号,对应着写在后面就可以了。

另提醒楼主基础很重要,所有的东西都是由最基本基础的东西叠加起来的。

4. stm32 ucos中断函数怎么写

要打开某个中断函数(usart1为例)先要

BSP_IntVectSet (BSP_INT_ID_USART1 , USART_ISR);

BSP_IntEn (BSP_INT_ID_USART1);

这里USART_ISR就是你的中断处理函数

我的原型函数是

(void)USART_ISR(void)

{}

os中的isr();应该是一个函数指针,指向你的中断处理函数

static void BSP_IntHandler (CPU_DATA int_id)

这个函数是进入中断前的一些必要的内核处理,他告诉内核你现在要进入中断了,不要XXX等,然后调用isr()进入你的中断函数,最后OSIntExit(); 告诉内核你现在退出中断了可以XXX了,里面的东西不要改动,你就写好你的中断函数USART_ISR()就好了

就像这样

void USART_ISR(void)

{

unsigned char i=0;

if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {

i=USART_ReceiveData(USART1);

}

}

附上关中断函数 BSP_IntDis (BSP_INT_ID_USART1);到bsp_init.c这个文件查看一下原型就知道得差不多了

转载请注明出处育才学习网 » 单片机中断函数怎么写

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21434)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10451)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9529)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7770)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9609)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(8013)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(8008)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(7009)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6541)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7123)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5406)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5836)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6521)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5429)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7595)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及