求大家帮我看看这段定时器程序,菜鸟写得不知哪里有问题

2019-07-16 04:56发布

#include <STC.h>
#define cs_duan   P27         //定义管脚
#define cs_wei   P26
#define cs_data  P0
unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数码管位置1-8
unsigned char code duan[]={0x06,0x5b,0x4f,0x00,0x00,0x00,0x00};//数码管的显示
//延时函数
void delayms(unsigned int ms)
{
  unsigned char y;
  for(;ms;ms--)
  {
        for(y=0;y<127;y++)
              ;
  }
}

void tline() //开启定时器0
   { TMOD=0x01;
         EA=1;
         ET0=1;
         TR0=1;
   
   }

void thing() interrupt 1
{   unsigned char i;
  unsigned char j=0;
  TH0=0x00;
  TL0=0x00;
  i=j%8;
  cs_data=wei[i];
  cs_wei=1;
  cs_wei=0;
  cs_data=duan[i];
  cs_duan=1;
  cs_duan=0;
  j++;
}
//主函数
void main()
{
  tline();
  delayms(2600);
  while(1) ;

}
我是八位共阴的数码管。上面写进去,只在第一位显示了1。能指出我的问题吗。谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
zhihuizhou
1楼-- · 2019-07-16 08:51
原理图?
草根白骨精
2楼-- · 2019-07-16 11:39
 精彩回答 2  元偷偷看……
wuchangwei
3楼-- · 2019-07-16 14:26
草根白骨精 发表于 2012-8-8 15:25
J是要全局变量才可以,而你那个在中断里
每次你都初始化成0,没有增减,当然只有一位显示 ...

用全局变量貌似能解决,我想再问一下,每次中断不是只是执行TH0和TL0两句下面的内容吗?他是把整个函数重新执行一遍?
年少者
4楼-- · 2019-07-16 17:53
还没学呢

一周热门 更多>