单片机没有反应,是程序哪里出错了吗?

2019-07-15 08:02发布

#include <STC12C5A60S2.H>

sbit ADDR0=P2^0;

sbit ADDR1=P2^1;

sbit ADDR2=P2^2;

sbit ADDR3=P2^3;

sbit ENLED=P1^1;

unsigned char code Ledrcha[]={0x90,0x80,0xF8,0x82,0x92,0x99,0xB0,0xA4,0xF9,0xC0};

unsigned char LedBuff[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};

unsigned char i=0;

unsigned char flagls=0;

unsigned char cnt=0;




void main()

{

      unsigned long sec=0;

      EA=1;

      ENLED=0;

      ADDR3=1;

      TMOD=0x01;

      TH0=0xF4;

      TL0=0x48;

      TR0=1;

      ET0=1;

      while(1)

      {

            if(flagls==1)

            {

                  flagls=0;

                  sec++;

                  

                        

                        LedBuff[0]=Ledrcha[sec%10];

                        

                        LedBuff[1]=Ledrcha[sec/10%10];

                        

                        LedBuff[2]=Ledrcha[sec/100%10];

                       

                        LedBuff[3]=Ledrcha[sec/1000%10];

                       

                        LedBuff[4]=Ledrcha[sec/10000%10];

                        LedBuff[5]=Ledrcha[sec/100000%10];

                  }

            }

      }

void Interrupttimer0() interrupt 1

{

      TH0=0xF4;

      TL0=0x48;

      cnt++;

      if(cnt>=1000)

      {

            cnt=0;

            flagls=1;

      }

          P0=0xFF;  




                  switch(i)

                  {

                        case 0: ADDR2=1;ADDR1=0;ADDR0=1;i++;P0=LedBuff[0];break;

                        case 1: ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[1];break;

                        case 2: ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[2];break;

                        case 3: ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[3];break;

                        case 4: ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[4];break;

                        case 5:
ADDR2=0;ADDR1=0;ADDR0=0;i=0;P0=LedBuff[5];break;

                        default :break;

                  }

            }


0条回答

一周热门 更多>