OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 我用的是AT89S52 用c编程时不知道头文件怎么加!请各位大虾指教 急!!

共1条 1/1 1 跳转至

我用的是AT89S52 用c编程时不知道头文件怎么加!请各位大虾指教 急!!

菜鸟
2008-08-07 14:44:05    评分

     现在正在做一个程控滤波器。是一个07年全国大学生电子设计竞赛的题目 在编程方面 自己找资料中 只有一个c程序 用keil编译后有点问题 估计是因为没有加头文件 后来加了一个头文件也有一点问题 之前因为开始学的时候用的就是汇编 因此肯请各位大虾指教!!急!!本系统以51单片机和FPGA为核心,完成程控放大电路和程控滤波电路,同时设计完成了简易幅频特性测试仪。

单片机c程序清单

#include <ZLG7289.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int

uchar code LF[20]={40,7,28,14,7,27,20,14,10,6,31,27,23,19,16,13,11,9,7,6};
uchar code HF[20]={63,27,60,40,27,60,48,39,32,26,62,59,53,47,42,38,34,30,27,25};


sbit con1 = P1^7;
sbit con0 = P1^4;
sbit WR0= P1^3;

sbit a0=P3^0;
sbit a1=P3^1;
sbit a2=P3^3;
sbit a3=P3^4;
sbit a4=P3^5;
sbit a5=P3^6;
sbit a6=P3^7;
uchar mod;      // 模式  : 高通,低通,扫频    
uchar key;                      //  键值  :
uchar Ldat;                     //  
uchar Gdat;                     //
uchar  a;
/*  函数:  Delay(uint t)
  功能:  延时 0.01-655.36 s
  参数:   t   类型 uint
*/
void Delay(uint t)
{
 do
 {
  TH0 = 0xDC;
  TL0 = 0x00;
  TR0 = 1;
     while ( !TF0 );
  TF0 = 0;
  TR0 = 0;
 } while (--t);
}
void Init();
uchar Set_value();
void  Load_date(uchar modd ,uchar datt);
void   saoping();
void read_key() interrupt 0

  key =  ZLG7289_Key();
  Delay(2);
  TR0=1;
}
void main()
{  Init();
  ZLG7289_Init(4);
  while(1)
  {
          if(key == 14)
           { key =17;
             a++;
             if(a==7)
             {
               a=0;
               }
             ZLG7289_Hide(0x0f);
             ZLG7289_Download(1, 0, 0, 11);
             ZLG7289_Download(1, 1, 0, 13);
             ZLG7289_Download(1, 2, 0, 0);
             ZLG7289_Download(1, 3, 0, a);
           
             Delay(10);
             if(a==0)
             {  a6=0;a5=0;a4=0;a3=0;a2=0;a1=0;a0=1;}
             if(a==1)
             {  a6=0;a5=0;a4=0;a3=0;a2=0;a1=1;a0=0;}
             if(a==2)
             {  a6=0;a5=0;a4=0;a3=0;a2=1;a1=0;a0=0;}
             if(a==3)
             { a6=0;a5=0;a4=0;a3=1;a2=0;a1=0;a0=0;}
             if(a==4)
             { a6=0;a5=0;a4=1;a3=0;a2=0;a1=0;a0=0;}
             if(a==5)
             {  a6=0;a5=1;a4=0;a3=0;a2=0;a1=0;a0=0;}
             if(a==6)
             {  a6=1;a5=0;a4=0;a3=0;a2=0;a1=0;a0=0;}
            
               Delay(100);  
            }       
          
        
           if(key == 15)
           { key =17;
             a--;
             if(a==0xff)
             {
               a=6;
               }
             ZLG7289_Hide(0x0f);
             ZLG7289_Download(1, 0, 0, 11);
             ZLG7289_Download(1, 1, 0, 13);
             ZLG7289_Download(1, 2, 0, 0);
             ZLG7289_Download(1, 3, 0, a);
             Delay(10);
             if(a==6)
             {  a6=1;a5=0;a4=0;a3=0;a2=0;a1=0;a0=0;}
             if(a==5)
             { a6=0;a5=1;a4=0;a3=0;a2=0;a1=0;a0=0;}
             if(a==4)
             {  a6=0;a5=0;a4=1;a3=0;a2=0;a1=0;a0=0;}
             if(a==3)
             { a6=0;a5=0;a4=0;a3=1;a2=0;a1=0;a0=0;}
             if(a==2)
             {  a6=0;a5=0;a4=0;a3=0;a2=1;a1=0;a0=0;}
             if(a==1)
             {  a6=0;a5=0;a4=0;a3=0;a2=0;a1=1;a0=0;}
             if(a==0)
             {  a6=0;a5=0;a4=0;a3=0;a2=0;a1=0;a0=1;}
            
               Delay(100);  
            }          
             
             
                 
           if(key == 11)   //设置低通频率
          {
      key=17;
      ZLG7289_Hide(0x73);
      ZLG7289_Download(0, 6, 0, 13);
      ZLG7289_Download(0, 5, 0, 14);
      ZLG7289_Download(1, 4, 0, 15);
      Ldat = Set_value();
      Load_date(0,Ldat);
         
           }
       if(key == 12)   //设置高通频率
           {
      key=17;
      ZLG7289_Hide(0x73);
      ZLG7289_Download(0, 6, 0, 12);
      ZLG7289_Download(0, 5, 0, 14);
      ZLG7289_Download(1, 4, 0, 15);
      Gdat = Set_value();
      Load_date(2,Gdat);
            }
       if(key == 13)            //扫频开关
            {
         ZLG7289_Hide(0x00);
         saoping(); 
            
             }
  }
}
void Init()

  IE = 0x81;
  IP = 0x01;
     TMOD = 0x01;
    key = 17;
    ZLG7289_Flash(0x00);
    Delay(100);
    ZLG7289_Flash(0xff);
    a=0;
    a0=0;
    a1=1;
    a2=0;
    a3=0;
    a4=0;
    a5=0;
    a6=0;
   
   
}

uchar Set_value()
{
  uchar a=0;
  ZLG7289_Download(1, 0, 0, 0);
  ZLG7289_Download(1, 1, 0, 0);
  ZLG7289_Flash(0xfc);
  Delay(200);
  while(key>9){}
  a = key;
  ZLG7289_Download(1, 0, 0, key);
  ZLG7289_Flash(0xfd);
  key = 17;
  while((key>2)||((key==2)&&(a>0))||((key==0)&&(a==0))){}
  a=key*10+a;
  if(a<3)
     {
      con1=0;
      con0=1;
      }
  else
       {
        if(a>10)
          {
           con1=0;
           con0=0;
           }
        else
          {
             if((a==3)||(a==4)||(a==5))
        {
          con0=1;
          con1=1;
          }
     else
      {
                 con1=1;
                 con0=0;
                }
          }
        } 
  ZLG7289_Download(1, 1, 0, key);
  key = 17;
  ZLG7289_Flash(0xff);                
  return(a);
 }
 
 void  Load_date(uchar modd ,uchar datt)
 {
   
   uchar a[8]={0,0,0,0,0,0,0,0},k=0;
   uchar i=2;
   if(modd==0)
    {  
       a[0]=0;
       a[1]=0;
       k=LF[datt-1];
       for(;i<8;i++)
         {
         a[i]=k>>(i-2)&0x01;
         }
      }
   if(modd==2)
     {
       a[0]=1;
       a[1]=0;
       k=HF[datt-1];
       for(;i<8;i++)
         {
         a[i]=k>>(i-2)&0x01;
         }
     }
   for(i=0,k=0;k<4;k++,i++)
   {
     P0 = a[i]*32+a[i++]*16+k;
     WR0=0;
     WR0=1;         
   }

    P0  = 0xf4;
 WR0 = 0;
 WR0 = 1;
 P0  = 0xe5;
 WR0 = 0;
 WR0 = 1;
 P0  = 0xe6;
 WR0 = 0;
 WR0 = 1;
 P0  = 0xe7;
 WR0 = 0;
 WR0= 1;
 
}   
  
void saoping()
{
  uint i,j;
  P2=0;
  for(i=0;i<20;i++)
  {
   P2++;
     for(j=0;j<10000;j++)
     {_nop_();}
   }
  

 




关键词: 用的     AT89S52     编程     不知道     文件     怎么         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]