51单片机 ,,外部中断后,中断函数没有运行 #include <reg52.h> #include

#include<reg52.h>#include<intrins.h>//启用循环左移(_crol_),循环右移(_cror_)函数#defineuintunsigne... #include <reg52.h>
#include <intrins.h> //启用 循环左移(_crol_),循环右移(_cror_)函数
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0; //
char i,m,n,temp,k; //
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x83,0xa7,0xa1,0x06,0x8e
}; //定义共阳极数码管
//void delay(int x); //延时
void main() //主函数
{
EA=1;
EX0=1;
IT0=0;
while(1)
{
for(i=0;i<16;i++)
{
P0=table[i]; //数码管显示
delay(500);
}
}
}

void delay(int x) //延时函数
{
uchar i;
while(x--);
for(i=0;i<110;i++)
}

void my_int0() interrupt 0 //中断函数
{
temp=0xfe; //定义temp 1111 1110 即 P1.0 低电平
P1=temp; //让第一个灯点亮

for(k=0;k<3;k++) //循环3次
{
for(m=0;m<7;m++) //左移7次
{
delay(500);
temp=_crol_(temp,1); //库函数里面的循环左移函数,将temp的值左移一位后重新赋给temp
P1=temp; //将左移一位后的temp值送P1口显示
}
for(n=0;n<7;n++) //右移7次
{
delay(500);
temp=_cror_(temp,1); //库函数里面的循环右移函数,将temp的值左移一位后重新赋给temp
P1=temp;
}
}
delay(200);
d1=1; //P1.0 高电平
}
这个是外部开关低电平触发,但实际中,数码管停止了,可p1口电瓶没有变化,就是那个中断函数没有被执行,想知道这个是为什么
展开
 我来答
做而论道
高能答主

推荐于2016-06-13 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.2万
采纳率:86%
帮助的人:8809万
展开全部
外部中断,是需要用开关来触发的。
----
你的延时函数,写的有毛病。
编译,根本不过去。

改好后,程序就正常了,可以进入中断。

#include <reg52.h>
#include <intrins.h> //启用 循环左移(_crol_),循环右移(_cror_)函数
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^0; //
char i,m,n,temp,k; //
uchar code table[] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x83,0xa7,0xa1,0x06,0x8e};
//定义共阳极数码管
void delay(int x) //延时函数
{
uchar i;
while(x--) for(i=0;i<110;i++);
}
void main() //主函数
{
EA=1;
EX0=1;
IT0=0;
while(1) {
for(i=0;i<16;i++) {
P0=table[i]; //数码管显示
delay(500);
}
}
}
void my_int0() interrupt 0 //中断函数
{
temp=0xfe; //定义temp 1111 1110 即 P1.0 低电平
P1=temp; //让第一个灯点亮

for(k=0;k<3;k++) { //循环3次
for(m=0;m<7;m++) { //左移7次
delay(500);
temp=_crol_(temp,1); //库函数里面的循环左移函数,将temp的值左移一位后重新赋给temp
P1=temp; //将左移一位后的temp值送P1口显示
}
for(n=0;n<7;n++) { //右移7次
delay(500);
temp=_cror_(temp,1); //库函数里面的循环右移函数,将temp的值左移一位后重新赋给temp
P1=temp;
}
}
delay(200);
d1=1; //P1.0 高电平
}
意法半导体(中国)投资有限公司
2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
251wrj
2012-09-14 · 超过18用户采纳过TA的回答
知道答主
回答量:64
采纳率:0%
帮助的人:46.4万
展开全部
TR0=1,TMOD=0x09;我记得是这样 。。。你可以试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千的飞由19
2012-09-22
知道答主
回答量:6
采纳率:0%
帮助的人:9884
展开全部
没开中断!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
valkyrie1107
2012-09-13 · TA获得超过479个赞
知道答主
回答量:181
采纳率:100%
帮助的人:186万
展开全部
没开中断 中断怎么运行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式