找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1519|回复: 4
打印 上一主题 下一主题
收起左侧

单片机Proteus仿真的时候灯为啥停不下来?

[复制链接]
跳转到指定楼层
楼主
ID:1007607 发表于 2022-3-1 19:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main(void)                                          
{
TMOD=0x01; //使用定时器 T0 的模式 2
EA=1; //开总中断
ET0=1; //定时器 T0 中断允许
TR0=1; //定时器 T0 开始运行
TH0=256-200; //定时器 T0 赋初值,每 200 微妙来 1 次中断请求
TL0=256-200;
speed=2; //默认流水灯流水点亮延时 20ms×3=60ms
i=0;
t=1;
while(t>i)
{
P1=0x7f; //第一个灯亮
delay(speed); //调用延时可调子程序
P1=0xbf; //第二个灯亮
delay(speed);
P1=0xdf; //第三个灯亮
delay(speed);
P1=0xef; //第四个灯亮
delay(speed);
P1=0xf7; //第五个灯亮
delay(speed);
P1=0xfb; //第六个灯亮
delay(speed);
P1=0xfd; //第七个灯亮
delay(speed);
P1=0xfe; //第八个灯亮
delay(speed);
P1=0xff;
i++;

}

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2022-3-1 23:37 | 只看该作者
  1. void main(void)                                          
  2. {
  3. TMOD=0x01; //使用定时器 T0 的模式 2
  4. EA=1; //开总中断
  5. ET0=1; //定时器 T0 中断允许
  6. TR0=1; //定时器 T0 开始运行
  7. TH0=256-200; //定时器 T0 赋初值,每 200 微妙来 1 次中断请求
  8. TL0=256-200;
  9. speed=2; //默认流水灯流水点亮延时 20ms×3=60ms
  10. i=0;
  11. t=1;P1=0x7f; //第一个灯亮
  12. delay(speed); //调用延时可调子程序
  13. P1=0xbf; //第二个灯亮
  14. delay(speed);
  15. P1=0xdf; //第三个灯亮
  16. delay(speed);
  17. P1=0xef; //第四个灯亮
  18. delay(speed);
  19. P1=0xf7; //第五个灯亮
  20. delay(speed);
  21. P1=0xfb; //第六个灯亮
  22. delay(speed);
  23. P1=0xfd; //第七个灯亮
  24. delay(speed);
  25. P1=0xfe; //第八个灯亮
  26. delay(speed);
  27. P1=0xff;
  28. while(1);
  29. }
复制代码


回复

使用道具 举报

板凳
ID:121859 发表于 2022-3-2 07:16 | 只看该作者
之所以停不下来,是因为当从while(t>i)这个循环退出之后,程序就跑飞了,单片机又从“复位”状态开始运行。因此需要在程序末尾加一个while(1);来保证程序处于可控状态。
回复

使用道具 举报

地板
ID:1007607 发表于 2022-3-2 09:47 | 只看该作者
回复

使用道具 举报

5#
ID:1007607 发表于 2022-3-2 09:47 | 只看该作者
zhxiufan 发表于 2022-3-2 07:16
之所以停不下来,是因为当从while(t>i)这个循环退出之后,程序就跑飞了,单片机又从“复位”状态开始运行 ...

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表