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

📄 guess1.c

📁 这是HOLTEK HT 48系列单片机应用实例
💻 C
字号:
unsigned char ACC  @0x05;
unsigned char _TMR0   @0x0d;
unsigned char _TMR0C  @0x0e;
unsigned char _INTC   @0x0b;
unsigned char _pa  @0x12;
unsigned char _pac @0x13;
unsigned char _pc  @0x16;
unsigned char _pcc @0x17;
#define _LCD_DATA      _pa
#define _LCD_DATA_CTRL _pac
#define _LCD_CTRL      _pc
#define _LCD_CTRL_CTRL _pcc
#define _RS _16_0
#define _RW _16_1
#define _E _16_2
#define _LCD_CTRL_RS   _17_0
#define _LCD_CTRL_RW   _17_1
#define _LCD_CTRL_E    _17_2
#define _BUSY_TEST     _12_7
#pragma vector timer0 @ 0x8
const unsigned char row_1[17]={0x4c,0x43,0x44,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x21,0x21,0x20,0x20,0x20,0x20,0x00};
const unsigned char row_2[17]={0x54,0x65,0x73,0x74,0x20,0x4f,0x4b,0x20,0x21,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x00};
const unsigned char page1_1[17]={0x57,0x65,0x6c,0x63,0x6f,0x6d,0x65,0x20,0x54,0x68,0x65,0x20,0x47,0x61,0x6d,0x65,0x00};
const unsigned char page2_1[17]={0x4b,0x65,0x79,0x69,0x6e,0x20,0x34,0x20,0x4e,0x75,0x6d,0x62,0x65,0x72,0x20,0x20,0x00};
const unsigned char page3_1[9]={0x59,0x6f,0x75,0x20,0x4c,0x6f,0x73,0x65,0x00};
const unsigned char page3_2[8]={0x41,0x6e,0x73,0x77,0x65,0x72,0x3a,0x00};
const unsigned char page4_1[9]={0x59,0x6f,0x75,0x20,0x57,0x69,0x6e,0x21,0x00};
const unsigned char time[4]={0x74,0x69,0x6d,0x65};
unsigned char ACCregister;
unsigned char number;
unsigned long int i;
unsigned int j,k,l,A,B,time1;
int guess[4],ans[4];
void delay()
{
 for(i=0;i<20000;i++);
}
void initial()
{
 write_instruction(0x01);
 write_instruction(0x06);
 write_instruction(0x0f);
 write_instruction(0x38);
 delay();
}
void write_LCDDATA()
{
 busy();
 _LCD_CTRL=0x01;
 _LCD_DATA=ACCregister;
 _E=1;
 _E=0;
}
void busy()
{
 _LCD_DATA_CTRL=0x80;
 _LCD_CTRL=0x02;
 _E=1;
 while(_BUSY_TEST == 1);
 _LCD_DATA_CTRL=0x00;
}
void  write_instruction(char c)
{
 busy();
 _LCD_DATA=0x00;
 _LCD_CTRL=0x00;
 _LCD_DATA=c;
 _E=1;
 _E=0;
}
void main()
{
 _LCD_DATA_CTRL=0x00;
 _LCD_DATA=0x00;
 _LCD_CTRL_CTRL=0x00;
 initial();
 //display_1
 write_instruction(0x80);
 k=0;
 for(;;)
 {
  l=page1_1[k];
  if(!(l == 0x00))
  {
   ACCregister=page1_1[k];
   write_LCDDATA();
   k=k+1;
  }
  else
  {
   break;
  }
 }
 do
 {
  number=check_key();
 }while(number != 0x3c);
 while(number == 0x3c)
 {
  number=check_key();
 }
//page2
 do
 {
  k=0;
  _TMR0=0x00;
  _TMR0C=0x90;
  _INTC=0x05;
  do
  {
   for(j=0;j<4;j++)//////////////////////
   {
    ans[j]=(_TMR0%10);
   }//////////////////////////
   for(i=0;i<3;i++)
   {
    for(j=i+1;j<4;j++)
    {
     if(ans[i]==ans[j])
     {k=1;}
    }
   }
  }while(k);
  _TMR0C=0x80;
  for(time1=0;time1<10;time1++)
  {
   write_instruction(0x01);
   write_instruction(0x80);
   k=0,A=0,B=0;
   for(;;)
   {
    l=page2_1[k];
    if(!(l == 0x00))
    {
     ACCregister=page2_1[k];
     write_LCDDATA();
     k=k+1;
    }
    else
    {
     break;
    }
   }
   k=0;
   write_instruction(0xc0);
   for(j=0;j<4;j++)
   {
    l=scan();
    ACCregister=l;
    write_LCDDATA();
    guess[j]=(0x0f & l);
   }
   for(i=0;i<4;i++)
   {
    for(j=0;j<4;j++)
    {
     if(ans[i] == guess[j])
     {
      if(i == j)
      {
       A++;
      }
      else
      {
       B++;
      }
     }
    }
   }
   ACCregister=0x20;
   write_LCDDATA();
   ACCregister=0x20;
   write_LCDDATA();
   ACCregister=A+0x30;
   write_LCDDATA();
   ACCregister=0x41;
   write_LCDDATA();
   ACCregister=B+0x30;
   write_LCDDATA();
   ACCregister=0x42;
   write_LCDDATA();
   ACCregister=0x20;
   write_LCDDATA();
   ACCregister=time1+0x30;
   write_LCDDATA();
   for(i=0;i<4;i++)
   {
    ACCregister=time[i];
    write_LCDDATA();
   }
   do
   {
   number=check_key();
   }while(number != 0x3d);
   while(number == 0x3d)
   {
    number=check_key();
   }
   if(A == 4)
   {
    write_instruction(0x01);
    write_instruction(0x80);
    k=0;
    for(;;)
    {
     l=page4_1[k];
     if(!(l == 0x00))
     {
     ACCregister=page4_1[k];
     write_LCDDATA();
     k=k+1;
     }
     else
     {
      break;
     }
    }
    break;
   }
   write_instruction(0x01);
   write_instruction(0x80);
   k=0;
   for(;;)
   {
    l=page3_1[k];
    if(!(l == 0x00))
    {
     ACCregister=page3_1[k];
     write_LCDDATA();
     k=k+1;
    }
    else
    {
     break;
    }
   }
  }
  do
   {
   number=check_key();
   }while(number != 0x3c);
   while(number == 0x3c)
   {
    number=check_key();
   }
 }while(number != 0x3c);
}
void timer0()
{
 //for(i=j;i<100;i++);
 _TMR0=0x00;
 _TMR0C=0x90;
 _INTC=0x05; 
}

⌨️ 快捷键说明

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