wozhoujue 发表于 2012-2-21 22:42:08

求大侠指点,看看我那程序的毛病,数码管只显示0;

#include<reg52.h>
                   #define uint unsigned int
                   #define uchar unsigned char
                   sbit dul=P2^6;
                   sbit wel=P2^7;
                   uchar code table[]={0x3f,0x06,0x5b,0x4f,
                                     0x66,0x6d,0x7d,0x07,
                                0x7f,0x6f,0x77,0x7c,
                                0x39,0x5e,0x79,0x71};
                void delay(uchar ms);
                void display(uchar shi,uchar ge);
                uchar num,shi,ge;
                void main()
                {
                        TMOD=0x01;
                        TH0=(65535-50000)/256;
                        TL0=(65535-50000)%256;
                        EA=1;
                        ET0=1;
                        TR0=0;
                        while(1)
                        {
                                        P1=0xff;
                                delay(1000);
                                P1=0x00;
                                delay(1000);
                                shi=num/10;
                                ge=num%10;
                                dul=1;
                                P0=table;
                                dul=0;
                                P0=0xff;
                                wel=1;
                                P0=0xfd;
                                wel=0;
                                delay(100);
                                dul=1;
                                P0=table;
                                dul=0;
                                P0=0xff;
                                wel=1;
                                P0=0xfe;
                                wel=0;
                                delay(100);
                        }
                               
                }
                void delay(uchar ms)
                {
                        uchar i,j;
                        for (i=ms;i>0;i--)
                                for (j=110;j>0;j--);
                }
                        void time1() interrupt 1
                {
                        TH1=(65535-50000)/256;
                        TL1=(65535-50000)%256;
                              num++;
                                if(num==99)        num=0;               
                }

outlaw 发表于 2012-2-22 08:39:34

TR0=0,这句,应该定时器没有启动,
delay(1000),超出uchar的长度了。

lcw_swust 发表于 2012-2-22 09:37:58

究竟用Timer0还是Timer1?

wozhoujue 发表于 2012-2-22 16:51:46

回复【4楼】lcw_swust 小李飞刀
-----------------------------------------------------------------------

回复【3楼】superAFE
-----------------------------------------------------------------------

首先非常感谢啊将TR0=0是不是使得定时器无法启动从而无法进入中断 是吧;再则关于实参范围的限制是应为类型是 unsigned char吧改为unsigned int 就ok了?还有我本想在主函数里调用显示值函数的发现不行 不知道是什么原因   还有在按前辈修改的程序后 发现各位显示很不稳定 是延时的问题吗?回复【3楼】superAFE
-----------------------------------------------------------------------
页: [1]
查看完整版本: 求大侠指点,看看我那程序的毛病,数码管只显示0;