永发信息网

小弟初学C51单片机,想请教大哥大姐们一个使用定时器的跑马灯程序,程序如下,错在了哪?

答案:6  悬赏:80  手机版
解决时间 2021-03-25 18:36
小弟初学C51单片机,想请教大哥大姐们一个使用定时器的跑马灯程序,程序如下,错在了哪?
最佳答案
你的程序有一个循环:  while(0){} ,这是一个死循环,真正的死循环,程序根本进不去。
你试试这个,我现在没法给你调试,你自己试试。
#include
void main()
{
 unsigned char cnt;
 unsigned char con;
 unsigned char num;
 P0 = 0x00;
 TMOD = 0x01;
 TH0 = 0xB2;
 TL0 = 0x63;
 TR0 =1;
 while(1)
 {
  con=0xfe;//LED左移初始状态
  num=7;
  while(1)
  {
   if(TF0 ==1)
   {
    TF0 = 0;
    TH0 = 0xB2;
    TL0 = 0x63;
    cnt++;
    if(cnt>=30)//计时器溢出30次移动一次
    {
     cnt=0;
     P0 = con << 1;
     num--;
     if(num==0)//8个LED移动完毕,跳出循环开始右移
     {
      break;
     }
    }
   }
  }  
  con=0x7f;//LED右移初始状态
  num=7;
  while(1)
  {
   if(TF0 ==1)
   {
    TF0 = 0;
    TH0 = 0xB2;
    TL0 = 0x63;
    cnt++;
    if(cnt>=30)//计时器溢出30次移动一次
    {
     cnt=0;
     P0 = con >> 1;
     num--;
     if(num==0)//8个LED移动完毕,跳出循环重新开始左移
     {
      break;
     }
    }
   }
  }
 }
}
全部回答
你根本就没打开定时器
跳不出循环啊追问恩,就是跳不出循环,一直在P0.0-P0.7之间,就是不执行下一条语句追答你的while有问题,改改
跑马灯?
咋编写这么长的程序?
while(0)这个程序不对。要么你就用定时器中断来写。
while(0) 里面的语句执行不了,你在哪里见过有人这样写
再理一下思路,那么多大括号不应该全在结尾处
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
250÷2个50的积所得的商再乘以4结果是多少
苏州市名人馆的介绍
男朋友太内向,不会哄人关心人,在一起半年多
中国狸花猫的性格怎么样?
PLAYCLUB的MOD怎么用啊,各位大神
这个世界再见了,没想到我会为了5000块钱放弃
有没有大哥大姐在MVC3中使用DevExpress的报表
ofo怎么退押金和余额?
第三题,求反函数。大神帮帮忙
当某个节点的紧前工序和紧后工序均有一个时,
桌面图标上莫名奇妙的出现叉号(在左下角)?
不见不散牌微型便携音箱就是(手拿低音炮),
兖州炮兵预备役师三团领导乱搞男女关系谁管?
从介休到中阳怎么走有少公里?
横滨轮胎怎么样,A380的,和邓禄普比较哪个好
推荐资讯
2oo2年什么时候立春
ppt动画怎么设置同个时间出现
搞汽车钣喷前途怎样
教育部为自考辟谣:自考会取消吗
华丽出场的四字词语
阀门中DN4inPN150ld意思
蒜香青豆吃了会不会上火
青岛李沧区有哪几所高中吖
求更高分辨率的这张eva壁纸 最好是1920*1200
粑粑买了三星s4 我要不要拿我滴街机5跟他换
几百二十三除以36,要使商是一位数括号里最大
如何PS把黑色的毛笔字变成一般写出来的那种金
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?