⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 805ac8f3a13f001b19ae8cd3dda9ff5e

📁 在DE2上显示时间的程序
💻
字号:
#include <io.h>
#include "system.h"
void spi_txd(int data)
{
   while(!(IORD(SPI_0_BASE,2)&0x40));
      IOWR(SPI_0_BASE,1,data);
}
void spi_led(int data_1,int data_2,int data_3)
{
  IOWR(SPI_0_BASE,1,0x800+(data_1&0x0f));
  IOWR(SPI_0_BASE,1,0x900+((data_1&0xf0)>>4));
  IOWR(SPI_0_BASE,1,0x0a00+((data_2&0x0f))+(data_3<<7));
  IOWR(SPI_0_BASE,1,0x0b00+((data_2&0xf0)>>4)); 
}
int main(void)
{ 
  int a,i,j=0;
  spi_txd(0x201);//CH452内部复位
  spi_txd(0x413);//设置452系统参数
  spi_txd(0x5c0);//设置CH452显示参数,BCD译码方式,扫描极限4
  int year=0x2006,mon=0x1,day=0x2,hou=0x3,min=0x4,sec=0x6,hse=0,flg=4;                     // 定时器变量
  int code_convert[16]={0xfc0,0xfe0,0xfd0,0xff0,0xfc4,0xfe4,0xfd4,0xff4,0xfc2,0xfe2,0xfd2,0xff2,0xfc6,0xfe6,0xfd6,0xff6};
  int buf[10]={0};
  IOWR(TIMER_0_BASE,1,6);                                            // 启动定时器
  while(1)
  {
    //定时器程序
    if(IORD(TIMER_0_BASE,0)&1)                                       // 500ms定时时间到
    {
      if(++hse==2)                                                   // 1秒钟时间到
      {
        hse=0;++sec;                                                 // 秒加1
        if((sec&0xf)==0xa)
          sec+=6;                                                    // 二-十进制调整
        if(sec>=0x60)                                                // 1分钟时间到
        {
          sec=0;++min;                                               // 分加1
          if((min&0xf)==0xa)
            min+=6;                                                  // 二-十进制调整
          if(min>=0x60)                                              // 1小时时间到
          {
            min=0;++hou;                                             // 时加1
            if((hou&0xf)==0xa)
              hou+=6;                                                // 二-十进制调整
            if(hou>=0x24)                                            // 1日时间到
            {
              hou=0;++day;                                           // 日加1
              if((day&0xf)==0xa)
                day+=6;                                              // 二-十进制调整
              if(day>=0x31)                                          // 1月时间到
              {
                day=1;++mon;                                         // 月加1
                if((mon&0xf)==0xa)
                  mon+=6;                                            // 二-十进制调整
                if(mon>=0x13)                                        // 1年时间到
                  mon=1;
                  ++year;
              }
            }
          }
        }
      }
      IOWR(TIMER_0_BASE,0,0);                                  // 清除时间到标志
  }
  IOWR(SPI_0_BASE,1,0x000);
  a=IORD(SPI_0_BASE,0); 
  if(!IORD(SPI_0_BASE,0))
  {
    IOWR(SPI_0_BASE,1,0x700); 
    IOWR(SPI_0_BASE,1,0x000);//读取按键  
    a=IORD(SPI_0_BASE,0);  
    //break;
 }
  for(i=0;i<16;i++)
  {
    if(IORD(SPI_0_BASE,0)==code_convert[i])
    { flg=i;
      if(i<10)
       {flg=0;
       buf[j++]=i;
       }
      break;
     }
  }

  switch(flg)
  {
    case 0:
    {
      flg=4;
      
   spi_txd(0x300);
   spi_txd(0x800+i);
   break;
    }
   case 10:
  { flg=4;
    spi_txd(0x302);
    break;
  } 
  case 11:
  { flg=4;
  
   mon=(buf[0])*16+buf[1];
   day=(buf[2])*16+buf[3];
   hou=(buf[4])*16+buf[5];
   min=(buf[6])*16+buf[7];
   sec=(buf[8])*16+buf[9];
    break;
  }
      
    

   case 12:                                                       
    {
      IOWR(SPI_0_BASE,1,(0x800+(year&0x000f)));
      IOWR(SPI_0_BASE,1,(0x900+((year&0x00f0)>>4)));
      IOWR(SPI_0_BASE,1,(0x0a00+((year&0x0f00)>>8)));
      IOWR(SPI_0_BASE,1,(0x0b00+((year&0xf000)>>12)));
      break;
    }
    case 13:                                                        // 显示月日
    {spi_led(day,mon,hse);break;}
    case 14:                                                        // 显示月日
    {spi_led(min,hou,hse);break;}
    case 15:                                                        // 显示时分
    {spi_led(sec,min,hse);break;}
   
    }
  }
}





  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -