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

📄 cunchu.#1

📁 ad准确采集
💻 #1
字号:

#include<main.H>
//#include <stdio.h>
#include <intrins.h>
//#include <string.h>
//#include <stdarg.h>
void PORT_Init (void)
{
   SFRPAGE=0x0F;
   XBR0 = 0x05; //UART0,SMbus0接到端口引脚
   XBR1 = 0x04; //外部中断0接到端口引脚(P0.4)
   //XBR0 = 0x04; //使能UART0
   //XBR1 = 0x00;
   XBR2 = 0x40; // 使能交叉开关和弱上拉
   //P0MDOUT |=0x0D;
  
}

 void cunchu_Init()
 {
   SFRPAGE=0x0F;
                  // Enable crossbar and weak pull-ups
                  
   P7MDOUT =0xFF;
   P6MDOUT =0xFF;
   P5MDOUT =0xFF;
   P4MDOUT |=0xCF;
   P1MDOUT|= 0x80;//P1.7为160D的片选端 
   P3MDOUT|= 0x01;//P3.0为160D的RESET端
   P3MDOUT&= 0xFD;//P3.1为160D的BUSY端
   P3|=0x02;
   SFRPAGE=0x00;
   EMI0TC  = 0x21;   
   EMI0CN  = 0xFF;
   EMI0CF  = 0x34;   //EMIF0CF=00110100 使用P4到P7口 非复用方式 不带块选择的分片方式   
 }


//-----------------------------------------------------------------------
//        读写子程序
//-----------------------------------------------------------------------

unsigned char flash_readchar(unsigned int addrh,unsigned int ADDR)      //读SRAM子程序
  {   
      unsigned char ch;
     SFRPAGE=0x0F;
       RDY_BUSY
      chip_select  //enable DataFlash
	  P4=(P4&0xF0)|(addrh&0x0F);     //定义地址A16--A19
	 ADDRHL = ADDR>>8;           //输出要读数据的地址高8位
     ADDRL = ADDR;               //输出要读数据的地址低8位
     P7MDOUT=0x00;   //使能P7数据口为输入状态,先将P7口设置为漏极开路,
     DATA = 0xFF ;               //再向P7口写入‘1’
	 NOWR 
	  RD;
	   _nop_();                    //使能读信号
      ch = DATA;                //读入数据
       NORD;                 //使读信号无效
      chip_noselect
    return ch;
   }
//----------------------------------------------------------
  void flash_writechar(unsigned long addr,unsigned char ch)
  {  
     SFRPAGE=0x0F;
      RDY_BUSY 
      chip_select              //enable DataFlash
	  P4=(P4&0xF0)|((addr>>16)&0x0F);     //定义地址A16--A19
	  ADDRHL = addr>>8;  //输出要读数据的地址高8位
      ADDRL = addr;         //输出要读数据的地址低8位
       P7MDOUT=0xFF;         //使能P7数据口为推挽输出状态
	   DATA = ch;                //输出数据
	   
        NORD
	    WR      //使能写入信号
	 
	    _nop_();
		                     
    	NOWR                   //是写入信号无效
       chip_noselect
   }
   void flash_writecom(unsigned int ADDR,unsigned char ch)
  {
     SFRPAGE=0x0F;
      RDY_BUSY 
      chip_select              //enable DataFlash
	  ADDRHL = ADDR>>8;  //输出要读数据的地址高8位
      ADDRL = ADDR;         //输出要读数据的地址低8位
      P7MDOUT=0xFF;         //使能P7数据口为推挽输出状态
	   DATA = ch;                //输出数据
	   
        NORD
	    WR      //使能写入信号
	 
	    _nop_();
		                     
    	NOWR                   //是写入信号无效
       chip_noselect
   }
/*void sram_write ( unsigned int addh ,unsigned int addr,unsigned int in )
{  unsigned char ch11,ch22;
   
   ch11=in&0x00FF;
   ch22=in>>8;
   sram_writechar(addh,addr,ch11);
   addr++;
   sram_writechar(addh,addr,ch22);

}*/
//-------------------------------------------------------------
//参数addr是起始地址,Inarry是数组名,arry是传送数据的长度
void flash_write( unsigned long addr,unsigned int *Inarry,unsigned int arry)
{ 
   unsigned char ch11,ch22;
   unsigned int i;
   flash_writecom(0xAAA,0xAA); //write program command
   flash_writecom(0x555,0x55);
   flash_writecom(0xAAA,0xA0);
   
   for(i=0;i<arry;i++)
   {ch11=Inarry[i]&0x00FF;
   ch22=Inarry[i]>>8;
   flash_writechar(addr+i,ch11);
   addr++;
   flash_writechar(addr+i,ch22);
   }
}
/*void flash_writesample ( unsigned long addr,unsigned int number,unsigned int *Inarry,unsigned int arry)
{ 
   
   flash_writeyizhu (addr+number*arry,Inarry, arry);
     
}*/
unsigned int flash_read(unsigned int addh,unsigned int addr)
{ volatile unsigned  char ch1=0,ch2=0;
  volatile unsigned int ch=0,ch3=0,ch4=0;
  ch1=flash_readchar(addh,addr);
  addr++;
  ch2=flash_readchar(addh,addr);
  ch3=ch2;
  ch4=ch1;
  ch=((ch3<<8)|ch4);
  
  return ch;


} 

⌨️ 快捷键说明

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