51单片机用定时器来做延迟,数码管仅仅显示0,不跳动

#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义//sbitLED=P1^3;//定义LED端口sbitwela=P1... #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
//sbit LED=P1^3;
//定义LED端口
sbit wela=P1^0;
sbit dula=P1^1;
unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned int num,k;
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
/*void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;t>0;t--)
for(j=110;j>0;j--);
}*/
void Init_Timer1(void)
{
TMOD |= 0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH1=(65536-50000)/256; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
TL1=(65536-50000)%256;
EA=1; //总中断打开
ET1=1; //定时器中断打开
TR1=1; //定时器开关打开
}
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{ num=0;
k=0;
Init_Timer1();
wela=1;
P0=0xaa;
wela=0;
dula=1;
P0=0x3f;
dula=0;

while(1)
{

if(k==20)
{
num++;
k=0;
wela=1;
P0=0xaa;
wela=0;
dula=1;
P0=duan[num];
dula=0;
// delay(1000);
}
}

}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH1=(65536-50000)/256; //重新赋值 2ms
TL1=(65536-50000)%256;
k++;

}
谁能帮我看看 ,咋回事
我没多少分了 但希望还是帮我看看哦
帮我看看哦 我去吃饭了 拜托了
展开
 我来答
jmhyys
2014-07-12 · TA获得超过524个赞
知道小有建树答主
回答量:1052
采纳率:62%
帮助的人:288万
展开全部
  1. TF0最好每次进中断函数就清零。

  2. 显示部分只负责显示。感觉NUM累加,显示都放一起有点乱。

  3.  if(k==20)
      {
    num++;
    k=0;这部分放到中断里好了,你怎么保证一定是k等于20时就能进行判断,万一是21呢?

  4. 你用的是两位数码管吧?你这样扫描速度太快,可能看起来都显示8或则都没显示。。每个送了显示数据就要延时一段时间再关闭!!

    大概看出这些。。。。。

追问
  1. 那个TF1在定时器的情况下,不用人为去清零。

  2. 对 这个提议好  谢谢咯

  3. 这倒没有,用8位数码管,选用四位显示。

谢谢回复,有时间可以再请教你哦

lcstudio75
2014-07-12 · TA获得超过139个赞
知道小有建树答主
回答量:92
采纳率:100%
帮助的人:62.9万
展开全部
代码看不太出很多问题,中断模式1是循环触发模式还是单次模式?单次就有问题。想办法在Timer0_isr输出点什么确认中断有效被调用
另外,存在num跑飞的可能num一直被++没有被置位过,会导致duan[num]访问溢出。
追问
如果我没理解错的话,是循环触发。
num确实没对齐进行束缚,会给它加个if判断
谢谢回复,问题已经解决 ,脑抽了一下午,中断号写错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式