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

📄 50101586a63f001b19ae8cd3dda9ff5e

📁 在DE2上显示时间的程序
💻
字号:
#include <io.h>
#include "system.h"
int main(void)
{  
IOWR(SPI_0_BASE,1,0x201);
while(1)
  {
   if((IORD(SPI_0_BASE,2))&0x40)
    {IOWR(SPI_0_BASE,1,0x413);
      break;
    }
  }
while(1)
{
   if((IORD(SPI_0_BASE,2))&0x0040)
   {
    IOWR(SPI_0_BASE,1,0x5C0);
      break;
   }
}   
int mon=1,day=1,hou=0,min=0,sec=0,hse=0,flg=0,i;                           // 定时器变量
    IOWR(SPI_0_BASE,1,(0x800));
           IOWR(SPI_0_BASE,1,(0x900));
           IOWR(SPI_0_BASE,1,(0x0a00));
           IOWR(SPI_0_BASE,1,(0x0b00));
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;
              }
            }
          }
        }
      }
      IOWR(TIMER_0_BASE,0,0);                                  // 清除时间到标志
    }
 while(1)
 {   
 IOWR(SPI_0_BASE,1,0x700);
  IOWR(SPI_0_BASE,1,0);
i=IORD(SPI_0_BASE,0);
break;
 } 
 if(i-0xfc0==0)                                 // 键(1)
      flg=0;
  if(i-0xfe0==0)                                 // 键(2)
      flg=1;
  if(i-0xfd0==0)                                 // 月日键(3)
      flg=2;
  if(i-0xff0==0)                                 // 月日键(4)
      flg=3;
   if(i-0xfc4==0)                                 // 月日键(5)
      flg=4;
   if(i-0xfe4==0)                                 // 月日键(6)
      flg=5;
   if(i-0xfd4==0)                                 // 月日键(7)
      flg=6;
    if(i-0xff4==0)                                 // 月日键(8)
      flg=7;
   if(i-0xfc2==0)                                 // 月日键(9)
      flg=8;
   if(i-0xfe2==0)                                 // 月日键(0)
      flg=9;
   if(i-0xfd2==0)                                 // 月日键(A)
      flg=10;
   if(i-0xff2==0)                                 // 月日键(B)
      flg=11;   
   if(i-0xfd6==0)                                 // 月日键(C)
      flg=12;
 if(i-0xfe6==0)                                  // 时分键(D)
      flg=13;
  if(i-0xfc6==0)                                  // 分秒键(E)
      flg=14;
    switch(flg)
    {
      case 0:                                        
      { 
       IOWR(SPI_0_BASE,1,0x300); 
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 1:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 2:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 3:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 4:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 5:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 6:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 7:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 8:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 9:                                        
      {
      IOWR(SPI_0_BASE,1,0x300);
      IOWR(SPI_0_BASE,1,(0x800+(flg)));
      
        break;
      }
      case 10:                                        
      {
      IOWR(SPI_0_BASE,1,0x302);
      
        break;
      }
      case 12:                                                        // 显示月日
      {
        IOWR(SPI_0_BASE,1,(0x800+(sec&0x0f)));//显示秒个位
           IOWR(SPI_0_BASE,1,(0x900+((sec&0xf0)>>4)));//显示秒十位
           IOWR(SPI_0_BASE,1,(0x0a00+(min&0x0f)+0x80));//显示分个位
           IOWR(SPI_0_BASE,1,(0x0b00+((min&0xf0)>>4)));//显示分十位  
        break;
      }
      case 13:                                                        // 显示时分
      {
        IOWR(SPI_0_BASE,1,(0x800+(min&0x0f)));//显示秒个位
           IOWR(SPI_0_BASE,1,(0x900+(min&0xf0)>>4));//显示秒十位
           IOWR(SPI_0_BASE,1,(0x0a00+(hou&0x0f)+(hse<<7)));//显示分个位
           IOWR(SPI_0_BASE,1,(0x0b00+(hou&0xf0)>>4));//显示分十位
        break;
      }
      case 14:                                                        // 显示分秒
      {
        IOWR(SPI_0_BASE,1,(0x800+(day&0x0f)));//显示日个位
           IOWR(SPI_0_BASE,1,(0x900+(day&0xf0)>>4));//显示日十位
           IOWR(SPI_0_BASE,1,(0x0a00+(mon&0x0f)+0x80));//显示月个位
           IOWR(SPI_0_BASE,1,(0x0b00+(mon&0xf0)>>4));//显示月十位
        break;
      }
    }    
  }
}     

⌨️ 快捷键说明

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