标题:
单片机中断执行不了,求大神解答
[打印本页]
作者:
LFC123
时间:
2018-10-29 20:01
标题:
单片机中断执行不了,求大神解答
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint count;
sbit LED1 = P1^0;
void q(uchar a)
{
uchar x,y;
for(x = a; x > 0;x--)
{
for(y = 114;y > 0;y--);
}
}
void init()
{
TMOD=0x01;
TH0=0x4b;
TL0=0xfd;
TR0=1;
ET0=1;
EA = 1;//开总中断
}
void main()
{
init();
while(1)
{
P1 = 0;
}
}
void timer() interrupt 1
{
LED1 = ~LED1;
TH0=0x4b;
TL0=0xfd;
count++;
if(count == 8)
{
P1 = 0xff;
q(10);
count = 0;
}
}
作者:
dingddhh
时间:
2018-10-30 08:52
你的While循环,把P1限制为低电平了,中断刚生效,While就马上把电平拉低,你的灯应该一直亮。While循环里,放点别的语句,只要不是对P1的改动就行。
作者:
HC6800-ES-V2.0
时间:
2018-10-30 08:57
谁说中断没有执行?灯在闪啊
程序有点小问题,我已经修改了,在我的板子了运行通过
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint count;
sbit LED1 = P1^0;
void q(uchar a)
{
uchar x,y;
for(x = a; x > 0;x--)
{
for(y = 114;y > 0;y--);
}
}
void init()
{
TMOD=0x01;
TH0=0x4b;
TL0=0xfd;
TR0=1;
ET0=1;
EA = 1;//开总中断
}
void main()
{
init();
while(1)
{
}
}
void timer() interrupt 1
{
LED1 = ~LED1;
TH0=0x4b;
TL0=0xfd;
count++;
if(count == 8)
{
q(10);
count = 0;
}
}
不知道你为什么要将P1置0或ff,我把它们去掉,就可以看到灯闪了。如果不去掉,灯就以PWM方式亮,亮度很暗。
作者:
lhx
时间:
2018-10-30 10:48
膜拜楼上大神
作者:
yebingzheng
时间:
2018-10-30 14:56
谁说中断没有执行?灯在闪啊
程序有点小问题,我已经修改了,在我的板子了运行通过
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint count;
sbit LED1 = P1^0;
void q(uchar a)
{
uchar x,y;
for(x = a; x > 0;x--)
{
for(y = 114;y > 0;y--);
}
}
void init()
{
TMOD=0x01;
TH0=0x4b;
TL0=0xfd;
TR0=1;
ET0=1;
EA = 1;//开总中断
}
void main()
{
init();
while(1)
{
}
}
void timer() interrupt 1
{
LED1 = ~LED1;
TH0=0x4b;
TL0=0xfd;
count++;
if(count == 8)
{
q(10);
count = 0;
}
}
作者:
jajie
时间:
2018-10-30 15:43
你的While循环,把P1限制为低电平了,中断刚生效,While就马上把电平拉低,你的灯应该一直亮。While循环里,放点别的语句,只要不是对P1的改动就行。
作者:
hzh2008
时间:
2018-10-30 17:11
不要while 里面的P1=0;如果要它的初值是0的话可以直接放在while上面。你这样写的确跟定时器中断有冲突。
作者:
你知道吗
时间:
2018-10-30 18:56
修改一下循环语句
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1