单片机的中断问题
时间:10-02
整理:3721RD
点击:
请问,那个执行中断的时候是不是主程序就会停止呀?
但是我的程序烧进去之后为什么主程序没有停止而且还变慢了(主程序是流水灯)
求解!
代码如下
#include<reg52.h>
#include <intrins.h> //注意使用_crol_函数时包含的头文件
#define uint unsigned int //宏定义,注意:宏名在前
#define uchar unsigned char
uchar temp; //定义一个全局变量
sbit d1=P1^0; //位定义
void delay(uint); //延时子函数申明
void main()
{
EA=1;//开总中断
EX0=1;//开外部中断0
//IT0=1;
//TCON=0x01;
temp=0xfe; //改变0xfe的值能改变参加流水灯的二极管的个数
P1=temp; //如果把这一句解释掉流水灯就会从第二个开始
while(1)
{
temp=_crol_(temp,1); //注意_crol_函数的使用
delay(2000);
P1=temp;
}
}
void delay(uint z) //定义一个延时的子程序,带参数
{
uint x,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}
void exter0() interrupt 0 //中断服务程序
{
d1=0;
}
但是我的程序烧进去之后为什么主程序没有停止而且还变慢了(主程序是流水灯)
求解!
代码如下
#include<reg52.h>
#include <intrins.h> //注意使用_crol_函数时包含的头文件
#define uint unsigned int //宏定义,注意:宏名在前
#define uchar unsigned char
uchar temp; //定义一个全局变量
sbit d1=P1^0; //位定义
void delay(uint); //延时子函数申明
void main()
{
EA=1;//开总中断
EX0=1;//开外部中断0
//IT0=1;
//TCON=0x01;
temp=0xfe; //改变0xfe的值能改变参加流水灯的二极管的个数
P1=temp; //如果把这一句解释掉流水灯就会从第二个开始
while(1)
{
temp=_crol_(temp,1); //注意_crol_函数的使用
delay(2000);
P1=temp;
}
}
void delay(uint z) //定义一个延时的子程序,带参数
{
uint x,y;
for(x=10;x>0;x--)
for(y=z;y>0;y--);
}
void exter0() interrupt 0 //中断服务程序
{
d1=0;
}
按道理你的主程序是会停止的,看是不是的时间设置的不对,或者什么原因,我看你的程序中断后,感觉是不是时间太短,你根本就看不到效果
应该不是吧
这个程序总体有问题啊,中断方式都没用啊!~
it0=1?
呵呵,好象是哦,没说外部还是定时中断!
没E币啦!
it0=1难道不是开定时器中断的吗