单片机程序解疑,题目:使第一个发光二极管以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;
}
#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);程序在刚配置完定时器,又重新返回第一句,即不断地配置定时器,不断给定时器赋初值,这样定时器永远不会溢出,也就永远不会进入中断程序,你看到的灯也就不闪了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯