为什么数据进不了缓存i【】

2019-03-24 18:29发布

#include "stc12le5a60s2.h"

//共阴数码管段码表
unsigned char code DispCode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,                                                                                                                                                       
                          //      0    1    2    3    4    5   6    7    8    9   
                                                           0x77,0x7C,0x39,0x5E,0x79,0x71,0x3D,0x76,0x74,0x30,       
                                          //      A           b    C         d          E           F   G        H         h          I          
                                                0x10,0x1E,0x38,0x54,0x5C,0x73,0x67,0x50,0x31,0x78,
                                          //      i    J    L         n    o           P   q        r    R          t            
                                                    0x3E,0x1C,0x40,0x48,0x08,0x00,0xff};
                                          //      U           V   一    二          _    灭
       
//HC595接口定义
sbit                         HC595_DAT                =        P4^4;           //HC595串行数据线
sbit                         HC595_SCK                =        P4^5;           //HC595移位时钟线
sbit                         HC595_RCK                =        P4^6;           //HC595锁存时钟线
sbit                         HC595_OE                =        P3^7;           //HC595输出允许线

//端口操作定义
#define                 SET                                   1                           //高电平
#define                 CLR                                   0                           //低电平

  //端口操作
#define                HC595_DAT_Clr()        {HC595_DAT=CLR;}
#define                HC595_DAT_Set()        {HC595_DAT=SET;}

#define                HC595_SCK_Clr()        {HC595_SCK=CLR;}
#define                HC595_SCK_Set()        {HC595_SCK=SET;}

#define                HC595_RCK_Clr()        {HC595_RCK=CLR;}
#define                HC595_RCK_Set()        {HC595_RCK=SET;}

#define                HC595_OE_Clr()        {HC595_OE=CLR;}
#define                HC595_OE_Set()        {HC595_OE=SET;}
         
//函数声明
void Delay_ms(unsigned int ms);
void HC595_Init(void);
void HC595_SendWord(unsigned char  dis,unsigned char dig);
int cout=0,miao=11,min=17,hour=10,*p;
int i[]={1,2,3,4,5,6,7,8};

//主方法
void main(void)
{
        unsigned char x;
        HC595_Init();
        TMOD=0x10;
        TH1=0x4B;
        TL1=0xFF;
        TR1=1;
        *p=i;                        //HC595初始化
        while(1)
        {                       
                for(x=0;x<8;x++)                //将37个段码全部显示出来
            {
                      //将待显示的字型码和点亮的数码管号送至锁存器。
                        //由于是共阴数码管,将八段数码管共阴极拉低,显示数据。
                        HC595_SendWord(DispCode[i[x]],~(0x01<<x));
                      Delay_ms(500);                 //延时0.5秒
            }
        }
}
/***********************************************
函数名称:HC595_SendWord
功    能:HC595发送两个字节数据。
入口参数:dis:显示的字型码
              dig:点亮的数码管号 dig中为0的位,则对应的数码管点亮
返 回 值:无       
备    注:两片HC595,发送两个字节数据,高字节
          为数码管段码,低字节为选择点亮哪个数码管。
                  该程序点亮数码管可以结合原理图来看,
                  否则不好理解,和电路原理关系密切。
************************************************/
void HC595_SendWord(unsigned char  dis,unsigned char dig)
{
        unsigned char i;               //定义计数器
        unsigned int temp=0;           //定义数据变量
        //将两个8位变量合并成一个16字节变量
        temp=dis;
        temp=temp<<8  | dig;
        HC595_OE_Set();                                   //禁止显示
        //送出数据
        for(i=0;i<16;i++)                        
    {                               
                HC595_SCK_Clr();               //置低时钟线
               
                if( (temp&0x8000)==0x8000 )//先发送高字节
                 {
                           HC595_DAT_Set();           //置高信号线
                 }
                 else
                 {
                        HC595_DAT_Clr();           //置低信号线
                 }       
                HC595_SCK_Set();                   //置高时钟线
               
            temp<<=1;                                   //数据左移                               
        }
        //锁存信号上升沿锁存数据                       
        HC595_RCK_Clr();                        
        HC595_RCK_Set();       
        HC595_OE_Clr();                                   //输出允许,开始显示
}
/***********************************************
函数名称:HC595_Init
功    能:显示初始化函数
入口参数:无
返 回 值:无       
备    注:单片机P4口默认不使用,如需启用,
          需软件设置。
************************************************/
void HC595_Init(void)
{       
        Delay_ms(10);                                //等待HC595上电稳定
        P4SW |=0x70;                                 //使用P4口
        //将端口置高,赋予端口固定电平
        HC595_DAT_Set();
        HC595_SCK_Set();
        HC595_RCK_Set();
        //输出允许,开始显示
        HC595_OE_Clr();
}
/***********************************************
函数名称:Delay_ms
功    能:STC 1T单片机1ms延时程序
入口参数:ms:延时的毫秒数
返 回 值:无       
备    注:示波器实测1.05ms 外部时钟11.0592MHz
************************************************/
void Delay_ms(unsigned int ms)
{
          unsigned int i;
          while( (ms--) != 0)
           {
            for(i = 0; i < 600; i++);
           }            
}

void time1(void) interrupt 1
{
     TH1=0x4B;
         TL1=0xFF;
         cout++;
         if(cout==20)
            {
                   cout=0;
                   miao++;
                      if(miao==60)
                               {  miao=0;
                                      min++;
                                           if(min==60)
                                               {  min=0;
                                                      hour++;
                                                       if (hour==12)
                                                              { hour=0;
                                                                   }
                            }
                    }
                                       
                                                                     
       }        i[0]=miao/10;
                                i[1]=miao%10;
                                i[2]=min/10;
                                i[3]=min%10;
                                i[4]=hour/10;
                                i[5]=hour%10;
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。