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

📄 chengxu.txt

📁 该 程序 ADUC824
💻 TXT
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h> // Standard I/O Functions
#include <ADUC824.h> // ADuC824 Header File
#include <math.h>
//#include <string.h>
//#include <intrins.h>
#define X24C44_WRDS 0x80 //RESET WRITE ENABLE LATCH
#define X24C44_STO 0x81 //TRANSFERS FROM RAM TO EEPROM
#define X24C44_WRITE 0x83 //RAM WRITE
#define X24C44_WREN 0x84 //SET WRITE ENABLE LATCH
#define X24C44_RCL 0x85 //TRANSFERS FROM EEPROM TO RAM, RESETS WRITE ENABLE LATCH
#define X24C44_READ 0x86 //RAM READ</P><P>
#define NOP() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
#define uchar unsigned char
#define uint  unsigned int
//extern uchar TT;  // 输入类型
extern uchar k;
extern uchar Chlnum;
//extern void Chlint();
extern void  feeddog();
extern void  InitCAN();
extern void  InitVar();
//extern void  Stack_Read();
extern float  Eng_Calc();//多通道
//extern void Eng_Calc();//单通道
//extern void  Stack_Init();
extern bit   Changed;
//extern bit   InputDetect;  //  输入开路 0=ok  1=fail.
//extern uchar TT;  // 输入类型
extern void Read_Para();
extern void Write_Para();
extern float idata Val[8];
//extern long  Span;
//extern long  Zero;
sbit  SET=P2^6;
//sbit  DO0=P2^4;
//sbit  DO1=P1^0;
sbit  A0=P2^0;
sbit  A1=P2^1;
sbit SPI24C44_CS=P2^5;
sbit SPI24C44_DO=P3^4;
sbit CH451_sdi=P2^2;
sbit CH451_clk=P2^4;

sbit  cs5045=P2^3;
extern bit leijidsp;
//extern SPI24C44_Write(unsigned char address,unsigned int dat);
//extern unsigned int SPI24C44_Read(unsigned char address);
extern void TRBYTE(unsigned char);
extern void TRBYT(unsigned char);
//extern unsigned char REVBYTE(void);
uchar storc;
extern void CH4511_write(unsigned int tdata1);
extern void CH4512_write(unsigned int tdata2);
//sbit  A2=P2^2;
long  ai_code;// memory array of chars
long  fv_temp;
//extern uchar FF;

void BTRSET();//SET BTR
extern uchar idata btreg0,btreg1;
extern uchar CC;
extern union{
  uchar B[4];
  uint  ui;
  long  li;
     }EEI;

extern void Read_Page(uchar p);
extern uint idata xishu;
extern bit   EC;

uchar SystemError;
lag(unsigned int Time){while(Time--);}
//void delayms(){ unsigned char i=255; while(i--);}
void ch451_init()
{

CH4511_write(0x0201);//ch451 reset
CH4511_write(0x0401);//ch451 only display mode
CH4511_write(0x05FA);//ch451 display canshu*/

CH4512_write(0x0201);//ch452 reset
CH4512_write(0x0401);//ch452 only display mode
CH4512_write(0x05FA);//ch452 display canshu

}
/*void Cal_savLL(unsigned char k1,unsigned char ch0,unsigned char cl0)//save data to 24c45
{
	 save chip config 
	SPI24C44_CS=0;//P2_3=0;	  
	SPI24C44_CS=1;//P2_3=1;
	k1=k1<<3;
	k1=k1|0x83;   //write
	TRBYTE(k1);
	TRBYTE(ch0);    
	TRBYTE(cl0);
	//TRBYTE(0x81);//store RAM data to e2rom   
	SPI24C44_CS=0;//P2_3=0;             
	
}
unsigned int Get_chip(unsigned char k1)//from 24c44 get data
{
	unsigned char k2;
	unsigned int getvalue;
	bit outbit;
	SPI24C44_CS=0;//P2_3=0;
	SPI24C44_CS=1;//P2_3=1;
	k1=k1<<3;
	k1=k1|0x86;     
	TRBYT(k1);  
	CH451_clk=1;//P3_1=1;
	CH451_clk=0;//P3_1=0;
	for(k2=0;k2<16;k2++)
	    {
		outbit=SPI24C44_DO;//P3_0;
		getvalue=(getvalue<<1)|outbit;
		CH451_clk=1;//P3_1=1;
		CH451_clk=0;//P3_1=0;
 	    }
    SPI24C44_CS=0;//	P2_3=0;
	return getvalue;
}*/
void SPI24C44_WriteByte(unsigned char dat)
{ 
    unsigned char count; 
	for(count=0;count<8;count++) 
	{
		//dat<<=1; 
		CH451_sdi= ((dat&0x80) == 0x80);//CY; 
		lag(50);	
		CH451_clk=1; ///上升 
		lag(50);
		CH451_clk=0; //开始上升 NOP(); 
		dat = (dat<<1);
	}
}
/*unsigned char  SPI24C44_ReadByte()
{
	unsigned char count; 
	unsigned int dat=0x0;
	for(count=0;count<8;count++)
	{ 
		//dat<<=1; 
		dat = (dat<<1);

		//NOP();
        if(SPI24C44_DO) //dat++; //为"0"读出一个字 
		    dat = (dat|0x01);
       	CH451_clk=1; 
		lag(10);
		CH451_clk=0; 
		lag(10);
	} 
	return(dat);      
}*/
unsigned int SPI24C44_ReadWord()
{ 
	unsigned char count; 
	unsigned int dat=0x0;
	for(count=0;count<16;count++)
	{ 
		//dat<<=1; 
		dat = (dat<<1);
		
		//NOP();
        if(SPI24C44_DO) //dat++; //为"0"读出一个字 
		    dat = (dat|0x01);
        CH451_clk=1; 
		lag(50);
		CH451_clk=0; 
		lag(50);
	} 
	return(dat);
}
//从24C44(EEPROM)里面读取一字
//address: 0-15
unsigned int SPI24C44_Read(unsigned char address)
{ 
	unsigned char temp; 
	unsigned int dat = 0x3;
	SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 
	lag(50);
	SPI24C44_CS=1;
	SPI24C44_WriteByte(X24C44_WREN);//PERFORM A RECALL TO SET THE RECALL LATCH 
	SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 
	lag(50);
	SPI24C44_CS=1;
	SPI24C44_WriteByte(X24C44_RCL); //PERFORM A RECALL TO SET THE RECALL LATCH
    SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 

    address=address<<3; 
	temp= X24C44_READ | address;
	SPI24C44_CS=1; 
	SPI24C44_WriteByte(temp); //Read Data from RAM Address
    dat=SPI24C44_ReadWord(); 
    //dat=SPI24C44_ReadByte();
	//dat= dat<<8;
    //dat=SPI24C44_ReadByte() + dat;
    SPI24C44_CS=0;
	return(dat);
}//向24C44里(EEPROM)写一字
SPI24C44_Write(unsigned char address,unsigned int dat)
{ 
	unsigned char temp; 
	unsigned int moon; 
    SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 
	lag(50);
	SPI24C44_CS=1;  
	SPI24C44_WriteByte(X24C44_WREN); //PERFORM A RECALL TO SET THE RECALL LATCH 
    SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 
	lag(50);
	SPI24C44_CS=1;
  /*  SPI24C44_WriteByte(X24C44_RCL); //PERFORM A RECALL TO SET THE RECALL LATCH 
	SPI24C44_CS=0;
    lag(10);
    SPI24C44_SK=0; 
	lag(10);
	SPI24C44_DI=0; 
	lag(10);
	SPI24C44_CS=1; */
	address=address<<3; 
	temp=X24C44_WRITE | address;
	//SPI24C44_CS=1; 
	SPI24C44_WriteByte(temp); //WRITE(1AAAA011): Write Data into RAM Address AAAA 
	SPI24C44_WriteByte( (unsigned char)(dat>>8) ); 
	SPI24C44_WriteByte( (unsigned char)dat ); 
	SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 
	lag(50);
	SPI24C44_CS=1; 
	SPI24C44_WriteByte(X24C44_STO ); 
	//STO(1XXXX001):Store RAM Data in E2PROM 
	SPI24C44_CS=0;
    lag(50);
    CH451_clk=0; 
	lag(50);
	CH451_sdi=0; 
	lag(50);
	/*SPI24C44_CS=1; 
	SPI24C44_WriteByte(X24C44_WRDS ); 
	//STO(1XXXX001):Store RAM Data in E2PROM 
	SPI24C44_CS=0; 
	lag(500); */
	moon=SPI24C44_Read(address>>3); 
	if(moon==dat) SystemError=0; 
	else SystemError=1;
}//非标准SPI口驱动,比较难调注意芯片与CPU接口!!呵呵 X24C44一款老的EEPROM,调试很久才成功的!!呵呵(C语言) 

void Jisuan(void)
{
      unsigned char m,l;
      unsigned char idata c[20]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};//15,
     // 16,17,18};//,19,20,21,22,23};
      float code d[72]={0.12578,0.19391,0.08302,0.1247,
      0.20313,0.3043,0.1302,0.1903,
      0.3178,0.4637,0.1982,0.2824,
      0.4829,0.6882,0.2933,0.4087,
      0.7149,0.9969,0.4235,0.5780,
      1.0332,1.4125,0.5977,0.8008,
      1.4609,1.9613,0.8265,1.089,
      2.0246,2.6732,1.122,1.455,
      2.7546,3.582,1.497,1.915,
      3.685,4.725,1.967,2.484,
      4.854,6.144,2.548,3.182,
      6.303,7.883,3.260,4.029,
      8.076,9.991,4.123,5.048,
       // cs[0]=cs[3]+(cs[4]-cs[3])*(cs[5]-cs[1])/(cs[2]-cs[1]);
      10.224,12.521,5.160,6.264,
      //12.799,15.526,6.397,7.706,
     // 15.855,19.068,7.864,9.408,
      //19.454,23.206,9.593,11.41,
      //23.656,28.008,11.62,13.74
     // 28.528,33.542,14.00,16.47,
     // 34.138,39.875,16.76,19.64,
     // 40.560,47.096,19.99,23.33,
     // 47.869,55.270,23.73,27.63,
     // 56.144,64.486,28.10,32.65
	  };
      unsigned int n,n1;
      float idata cs[6];

⌨️ 快捷键说明

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