
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口电瓶没有变化,就是那个中断函数没有被执行,想知道这个是为什么 展开
#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口电瓶没有变化,就是那个中断函数没有被执行,想知道这个是为什么 展开
4个回答
展开全部
外部中断,是需要用开关来触发的。
----
你的延时函数,写的有毛病。
编译,根本不过去。
改好后,程序就正常了,可以进入中断。
#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 高电平
}
----
你的延时函数,写的有毛病。
编译,根本不过去。
改好后,程序就正常了,可以进入中断。
#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口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
TR0=1,TMOD=0x09;我记得是这样 。。。你可以试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没开中断 中断怎么运行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询