标题:
单片机程序 为什么进不了中断? 谢谢啦
[打印本页]
作者:
蜕变
时间:
2017-5-4 16:17
标题:
单片机程序 为什么进不了中断? 谢谢啦
#include<reg52.h>sbit led=P2^0;
#define uchar unsigned char;
uchar x,y,t;
void main()
{
TMOD=0X01;//定时器0 工作方式1
TH0=(65536-50000)/256;//高八位赋初值
TL0=(65536-50000)%256;//低八位赋初值
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器
if(t==20)
{
t=0;
led=0;
};
led=1;
}
void exter0() interrupt 1
{
TH0=(65536-50000)/256;//高八位赋初值
TL0=(65536-50000)%256;//低八位赋初值
t++;
}
哪位大神能告知一下程序为什么进不了中断?
作者:
蜕变
时间:
2017-5-4 16:18
有好心人 解惑吗?
作者:
51Lovers
时间:
2017-5-4 22:33
1.建议t赋个初值;2.f(t==20)改为f(t>=20)
作者:
归依龙井
时间:
2017-5-4 22:57
没出错吗
作者:
wodedzw
时间:
2017-5-4 23:26
可以试试将主函数tr0=1;后面的语句放入while(1)死循环中。
作者:
bencha
时间:
2017-5-4 23:53
同问,
作者:
erlengzi
时间:
2017-5-4 23:59
什么编译器?
作者:
liuzhen191
时间:
2017-5-5 11:54
应该是没while循环导致定时器只溢出一次,所以灯没变化
作者:
寰观气宇
时间:
2017-5-5 13:39
个人感觉在主程序最后需要加一个循环命令,即最后加一个while();
作者:
灰蒙天空
时间:
2017-5-5 16:21
没有死循环 程序跑飞了!!!!!!!!!!!!!
作者:
sageliu
时间:
2017-5-8 11:27
#include<reg52.h>sbit led=P2^0;
#define uchar unsigned char;
uchar x,y,t;
void main()
{
TMOD=0X01;//定时器0 工作方式1
TH0=(65536-50000)/256;//高八位赋初值
TL0=(65536-50000)%256;//低八位赋初值
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器
while(1)
{
if(t==20)
{
t=0;
led=0;
};
led=1;
}
}
void exter0() interrupt 1
{
TH0=(65536-50000)/256;//高八位赋初值
TL0=(65536-50000)%256;//低八位赋初值
t++;
}
作者:
你像风儿来了
时间:
2017-5-8 13:07
程序最后一句加上while(1);
作者:
通天塔直达
时间:
2017-5-8 13:49
加个while(1)循环!
作者:
通天塔直达
时间:
2017-5-8 14:07
程序要加死循环!
作者:
3760609865
时间:
2017-5-8 16:37
应该主程系if语句前加上while(1)
作者:
wuai0314
时间:
2017-5-8 17:38
if(t==20)
{
t=0;
led=0;
};
这里太快,人眼识别不了,几乎led一直等于1
作者:
永冰
时间:
2017-5-8 20:06
程序要加死循环 不然一直在装初值 本来加到要益处 结果有赋值了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1