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

📄 40ed1dcf6c41001b18b1e5c96de21705

📁 在DE2上显示时间的程序
💻
字号:
#include <io.h>
#include "system.h"
int buf[17]={0};
void write(int data)
{
   while(!(IORD(SPI_0_BASE,2)&0x40));
   IOWR(SPI_0_BASE,1,data);
}
void toled(int one,int two,int thr)
{
  IOWR(SPI_0_BASE,1,0x800+(one&0x0f));
  IOWR(SPI_0_BASE,1,0x900+((one&0xf0)>>4));
  IOWR(SPI_0_BASE,1,0x0a00+(two&0x0f)+thr);
  IOWR(SPI_0_BASE,1,0x0b00+((two&0xf0)>>4)); 
}
int main(void)
{ 
  IOWR(SPI_0_BASE,1,0x201);
  write(0x413); 
  write(0x5c0);
  int year1=0x06,year2=0x20,mon=0x12,day=0x30,hou=0x23,min=0x59,sec=0x35,hse=0,flg=14,flg1=14,flg2=30,kv,i=3,j;  
  int led[16]={0xfc0,0xfe0,0xfd0,0xff0,0xfc4,0xfe4,0xfd4,0xff4,0xfc2,0xfe2,0xfd2,0xff2,0xfc6,0xfe6,0xfd6,0xff6};
  IOWR(TIMER_0_BASE,1,6);                                         
  while(1)
  {
    if(IORD(TIMER_0_BASE,0)&1)                                      
    {
      if(++hse==2)                                                 
      { hse=0;++sec; }                                              
      if((sec&0xf)==0xa)
        sec+=6;                                                  
      if(sec>=0x60)                                              
      { sec=0;++min; }                                              
      if((min&0xf)==0xa)
        min+=6;                                                 
      if(min>=0x60)                                             
      { min=0;++hou; }                                            
      if((hou&0xf)==0xa)
        hou+=6;                                               
      if(hou>=0x24)                                          
      { hou=0;++day; }                                          
      if((day&0xf)==0xa)
        day+=6;                                           
      if(day>=0x31)                                         
      { day=1;++mon; }                                      
      if((mon&0xf)==0xa)
        mon+=6;                                         
      if(mon>=0x13)                                     
      { mon=1;++year1; }
      if((year1&0xf)==0xa)
        year1+=6;                                         
      if(year1>=0x0a0)                                     
      { year1=0;++year2; }      
      if((year2&0xf)==0xa)
        year2+=6;                                         
      if(year2>=0x0a0)                                     
      { year2=0; }                                                              
      IOWR(TIMER_BASE,0,0);                                  // 清除时间到标志                                
    }
  IOWR(SPI_0_BASE,1,0x000);
  kv=IORD(SPI_0_BASE,0);
  if(!IORD(SPI_0_BASE,0))
  {
    IOWR(SPI_0_BASE,1,0x700); 
    IOWR(SPI_0_BASE,1,0x000);
    kv=IORD(SPI_0_BASE,0);  
 }   
   while(!IORD(SPI_0_BASE,2)&0x40);
   for(j=0;j<16;j++)
   {
    if(!(kv-led[j]))
    {flg=j;j=17;}//break;}   
   }
   if(flg>=0 && flg<=9)
    {flg1=9;}
   else 
    {flg1=flg;}
    if(flg1>=12 && flg1<=15)
    flg2=flg;
  switch(flg1)
  {   
    case 12:                                                       
    {
      if(i==3)
      {
      IOWR(SPI_0_BASE,1,(0x800+(year1&0x0f)));
      IOWR(SPI_0_BASE,1,(0x900+((year1&0x0f0)>>4)));
      IOWR(SPI_0_BASE,1,(0x0a00+(year2&0x0f)));
      IOWR(SPI_0_BASE,1,(0x0b00+((year2&0x0f0)>>4)));
      }
      break;
    }
    case 13:                                                      
    {
      if(i==3)
      toled(day,mon,0x80);      
      break;
    }
    case 14:                                                       
    {
      if(i==3)
      toled(min,hou,(hse<<7));      
      break;
    }
    case 15:                                                       
    {  
      if(i==3)
      toled(sec,min,0x80);       
      break;
    }
    case 10:                                                       
    {
      if(i>3)
      {        
        i--;
        write(0x800+buf[i-1]);      
        write(0x900+buf[i-2]);
        write(0x0a00+buf[i-3]); 
        write(0x0b00+buf[i-4]); 
        flg=14;   
      }
      flg=flg2;
      break;
    }
  case 11:                                                      
  {
    if(i==17)
    {
      year1=(buf[5]<<4)+buf[6];
      year2=buf[4]+(buf[3]<<4);
      mon=buf[8]+(buf[7]<<4);
      day=buf[10]+(buf[9]<<4);
      hou=buf[12]+(buf[11]<<4);
      min=buf[14]+(buf[13]<<4);
      sec=buf[16]+(buf[15]<<4);
      i=3;flg=14;
    }flg=flg2; break;
  }
  case 9:
  {
    if((!(kv-led[flg]))&&(i<=16))
    {
      buf[i]=flg;
      write(0x000);
      i++;     
      write(0x800+buf[i-1]);  
      write(0x900+buf[i-2]);
      write(0x0a00+buf[i-3]);
      write(0x0b00+buf[i-4]);                               
    } break;         
  }}}}




⌨️ 快捷键说明

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