永发信息网

单片机程序解疑,题目:使第一个发光二极管以200ms间隔闪烁!

答案:2  悬赏:80  手机版
解决时间 2021-12-28 06:55
  • 提问者网友:容嬷嬷拿针来
  • 2021-12-27 17:02
#include
最佳答案
  • 五星知识达人网友:痴妹与他
  • 2021-12-27 18:26
#include
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
void main()
{
TMOD=0x01;

TH0=(65536-18348)/256;

TL0=(65536-18348)%256;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void T0_time() interrupt 1
{

TH0=(65536-18348)/256;
TL0=(65536-18348)%256;
led=~led;
}
全部回答
  • 1楼网友:毛毛
  • 2021-12-27 19:50
你没有理解错。 while(1);的确是个死循环,你的程序在main中运行时先进行了定时器的初始化操作,并在初始化完成后进入死循环,此时单片机只能执行中断程序了,因此你能看到灯闪烁,这是中断程序在起作用。 但你把这个死循环去掉后,就出问题了,因为main本身就是个大循环。如果你去掉了while(1);程序在刚配置完定时器,又重新返回第一句,即不断地配置定时器,不断给定时器赋初值,这样定时器永远不会溢出,也就永远不会进入中断程序,你看到的灯也就不闪了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯