请教高人C51单片机C语言中的中断优先级怎么设置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教高人C51单片机C语言中的中断优先级怎么设置?相关的知识,希望对你有一定的参考价值。

如果是同时用到几个中断像T0,T1,外部中断0,串口的,这么多个如果要按指定的优先顺序进行处理中断,只设置IP就可以了吗?具体怎么设置?

C51中设置中断优先级,需要对中断寄存器IP进行配置。具体值需要根据用户需要的优先级顺序进行确定,具体的设置方法就是直接写如下C语言语句:

IP = 06H; // 如果5个中断同时发生,则响应次序为:定时器0 -> 外中断1 -> 外中断0 -> 定时器1 -> 串行中断

下面给出IP寄存器中每位(共8位)的含义:
PX0(IP.0),外部中断0优先级设定位;
PT0(IP.1),定时/计数器T0优先级设定位;
PX1(IP.2),外部中断0优先级设定位;
PT1(IP.3),定时/计数器T1优先级设定位;
PS (IP.4),串行口优先级设定位;
PT2 (IP.5), 定时/计数器T2优先级设定位(80C52的T2)
IP.6和IP.7无意义,均为0(在C51中PT2也设置为0)。

ps:IP默认值为00H,此时优先级顺序为:
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断
参考技术A 具体设置看书就知道了,自己解决问题,才能真正掌握。优先级,只有两个优先级,也就是说,如果有多个中断,那只能是有一个是最优先的,其它的按照同等处理。 参考技术B 单片机已经定好了中断优先级,你可以进入中断处理函数的时候关掉总中断 参考技术C http://wenku.baidu.com/view/062f262acfc789eb172dc835.html本回答被提问者采纳

C语言中,用于设置中断、中断信号的函数都有哪些?怎么设置一个发送中断信号(自己定义的)的函数?

函数要比较新的,dos时代的函数最好不要了。如何设置一个到了一定时间间隔自动发送中断信号在函数?不要alarm(),要精度高一点的。
//分数就这么点了,能帮的前辈尽量帮帮我……

对于C51单片机,其内部总共有五级中断源
分别为外部中断0、定时器0、外部中断1、定时器1及串行中断。
C51单片机的中断使用时,主要是通过中断服务号来决定的。
如你定义一个中断服务函数:
void KEY(void) intterrupt 0



当外部中断0申请中断时
会自动根据interrupt后面的0,找到上面定义的这个中断服务函数。
对于其他四个中断源,其对应的中断号分别为1、2 、3、4
参考技术A 设置一个定时器,然后安装信号处理函数。
以下是一个用定时器写的程序

#include<stdio.h>
#include<time.h>
#include<sys/time.h>
#include<stdlib.h>
#include<signal.h>

static int count=0;

void set_timer()//设置定时器

struct itimerval itv;
itv.it_value.tv_sec=3;
itv.it_value.tv_usec=0;
itv.it_interval.tv_sec=2;
itv.it_interval.tv_usec=0;
setitimer(ITIMER_REAL,&itv,NULL);//启动定时器


void signal_handler(int m)//信号处理函数

count++;
//printf("%d\n",count);

int main()

signal(SIGALRM,signal_handler);//安装信号
set_timer();
while(count<10);
exit(0);
追问

谢谢回答,函数写的很好。为什么我没有学到过这些结构体呢?这些结构体很有用,siganal.h.sys/time 我也知道,可就是这些可以用的结构、函数不知道。请问哪本书讲这些常用函数比较多呢?不要纯列举函数的,要讲原理的。没学过单片机,谢谢!

追答

推荐UNIX环境高级编程,linux程序设计

追问

确实好书

怎么这个函数在时间到了之后显示了个alarm clock就把函数结束了呢?不应该重新开始计时吗?

本回答被提问者和网友采纳

以上是关于请教高人C51单片机C语言中的中断优先级怎么设置?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,用于设置中断、中断信号的函数都有哪些?怎么设置一个发送中断信号(自己定义的)的函数?

c51单片机中断程序中的interrupt1,2,3是由啥决定的?

请教C51单片机,C语言编程,怎样把一个四位数存入(读取)外部数据存储器?请举例说明。

单片机中的中断是怎么实现的?

51单片机c语言中断函数不能进行参数传递,是啥意思,谁能解释一下

我想用C51单片机的定时器0工作方式2输出一个PWM。它的频率要怎么设置???