標(biāo)題: 求大神指導(dǎo),寫的一個(gè)51單片機(jī)用定時(shí)器0方式一60倒計(jì)時(shí)程序跑不了 [打印本頁]

作者: zlc哈哈哈    時(shí)間: 2017-7-14 09:34
標(biāo)題: 求大神指導(dǎo),寫的一個(gè)51單片機(jī)用定時(shí)器0方式一60倒計(jì)時(shí)程序跑不了
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num,second;
unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

void delay1ms(uint i)
        {
        uchar j;
        while(i--)
        for(j=0;j<115;j++)
                {
                ;
                }
        }

void display(uchar k)
        {
        P2=0xfe;
        P0=Tab[k/10];
        delay1ms(5);

        P2=0xfd;
        P0=Tab[k%10];
        delay1ms(5);

        P2=0xff;
        P0=0xff;
        delay1ms(5);



        }
       
       

               

        void main(void)
                {
                  
                   TMOD=0x01;
            TH0=(65536-50000)/256;
                TL0=(65536-50000)%256;
                EA=1;
                ET0=0;
                TR0=0;
                num=0;
                second=60;
                while(1)
                        {
                        display(second);
                }
                       
               
               
                         
                }

                void timer0(void) interrupt 1
                {
                   TR0=0;
                   num++;
                                  if(num==20)
                        {
               
                                num=0;
                               
                             second--;
                       
                       
                                if(second==0)
                          
                          second=60;
               

                          }

                        TH0=(65536-50000)/256;
                        TL0=(65536-50000)%256;
                        TR0=1;
                       
                       

                       
                }


作者: MAPPLE    時(shí)間: 2017-7-14 10:16
看著沒什么錯(cuò)誤


作者: wulin    時(shí)間: 2017-7-14 10:51
初始化定時(shí)器中 ET0=1;  TR0=1;,中斷程序中取消對(duì)TR0的操作
作者: 孤城之戀    時(shí)間: 2017-7-14 16:53
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,second,tab1[2],TOH = 0,TOL = 0;
bit flag = 0;
unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

void display( )
        {
                  static uchar i = 0;
    P0 = 0xff;
    P2 = ~(0x01 << i);
    P0 = Tab[tab1[i]];
    if ( i< 1)
        i++;
    else
        i = 0;
        }

//定時(shí)函數(shù)
void Timer( uchar t)
{
    unsigned long temp;
    temp = 11059200 / 12;          
    temp = (temp * t) / 1000;
    temp = 65536 - temp;
    TOH = (uchar)(temp >> 8);
    TOL = (uchar)temp;
    TH0 = TOH;
    TL0 = TOL;
    TMOD &= 0XF0;
    TMOD |= 0X01;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
   
}      
void main(void)
{                 
                    Timer(1); //定時(shí)一毫秒
                second=60;
                                tab1[0] = second / 10;
                                tab1[1] = second % 10;
                while(1)
                {
                   if(flag)                //一秒鐘就減一次
                                   {
                                         flag = 0;
                                         second--;
                                         tab1[0] = second / 10;
                                        tab1[1] = second % 10;
                                         if (second == 0)
                                         second = 60;
                                   }
                }                                 
                }
void timer0(void) interrupt 1
                {
                                  static unsigned int num = 0;
                                  TH0 = TOH;
                                  TL0 = TOL;
                                   display();
                   num++;
                  if(num>= 1000)   //一秒鐘就減一次
                   {
                                       num = 0;
                       flag = 1;        
                   }

                        
                                               
                }





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1