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

📄 main.c

📁 用三星的44b0控制的zlg7290的源码
💻 C
字号:
/*
;************************************************************************************************************
;*									    北京知天行科技有限公司
;*                                     	    研    发    部
;*
;*                                 	    http://www.zt-training.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;*
;* 文件名称 : MAIN.c	
;* 文件功能 : 所有应用程序的头文件均加在此文件中
;* 补充说明 : 
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM7开发小组
;* 修改日期 : 2004/04/25
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM7开发小组
;* 创建日期 : 2004/04/20
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/

#include "..\inc\config.h"


/*
*************************************************************************************************************
- 函数名称 : Main(void)
- 函数说明 : 系统的主程序入口
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/

unsigned int iiccount=4;
unsigned int iGetAck=0;
/*
char *date[8] = {"","SUN","MON","TUE","WED","THU","FRI","SAT"};
#define TESTYEAR 	(0x07)
#define TESTMONTH 	(0x09)
#define TESTDAY		(0x31)
#define TESTDATE    (0x06)  // SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7   
#define TESTHOUR	(0x23)
#define TESTMIN		(0x59)
#define TESTSEC		(0x30)
*/


unsigned char    TESTYEAR;
unsigned char    TESTMONTH;
unsigned char    TESTTDAY;	  // SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
unsigned char    TESTDATE;
unsigned char    TESTHOUR;
unsigned char    TESTMIN;
unsigned char    TESTSEC;


unsigned char key=0;  
void  __irq  IRQ_I2C2(void)
 {
   
	 if((iiccount--)==0)    //如果数据写完
	  {
	   rIICSTAT=0xd0;       //停止主设备发送传输
	   rIICCON=0xaf;        //恢复 IIC 操作
	   Delay(1);            //等待,直到停止条件起效
	  }
		 
	 //while (rIICSTAT & 0x01);
     rIICCON=0xaf;	        //释放 IIC 总线操作  
     rI_ISPC = BIT_IIC;
        
 }
 
 
/*
 unsigned char Receive()
 {
   unsigned KeyValue1=0;
   unsigned KeyValue2=0;
 //  unsigned KeyValue3=0;
    
//  rPCONF = 0x827EA;
//	rPUPF  = 0x03;
   
   rIICCON = 0xaf;
  
	//rIICDS  = 0x80; 			//07/10/05
 rIICDS  = 0x71;
   rIICSTAT= 0xf0;
   Delay(2);
   //while(rIICSTAT&0x01);
   
  // rIICDS  = 0x10;				//07/10/05
   rIICDS  = 0x01;
   rIICCON = 0xaf;
   
   Delay(2);
  // while(rIICSTAT&0x01);
//   rIICCON = 0xaf;
//  


	//rIICDS  = 0x80; 			//07/10/05
  rIICDS  = 0x71;
   rIICSTAT= 0xb0;
  // rIICSTAT= 0xD0;				//07/10/05
   rIICCON = 0xaf;
   Delay(2);
   //while(rIICSTAT&0x01);
//   rIICCON = 0x2f;
//   Delay(2);
   rIICCON = 0xaf; 
//   rIICCON = 0x2f;
   Delay(2);
   
   KeyValue1=rIICDS;
   rIICCON = 0x2f;
   Delay(2);
//   rIICCON = 0xaf;
   
   KeyValue2=rIICDS;
//   rIICCON = 0xaf ;
//   Delay(2);
//   rIICCON = 0xaf;
   
//   KeyValue3=rIICDS;
   //rIICCON = 0x2f ;
//   Delay(10);
//

//   KeyValue3=rIICDS;
   rIICSTAT= 0x90;
   rIICCON = 0xaf;
   Delay(6);
   return KeyValue1;
   
 
 }
unsigned char key1=0;  
void  __irq  IRQ_Iint0(void)
{

   
	 //    if((iiccount--)==0)    //如果数据写完
	 //    {
	//	   rIICSTAT=0xd0;         //停止主设备发送传输
	//	   rIICCON=0xaf;           //恢复 IIC 操作
	//	   Delay(1);             //等待,直到停止条件起效
	//	 }
		 
	  // while (rIICSTAT & 0x01);
     //  rIICCON=0xaf;	//释放 IIC 总线操作 
      key1=Receive(); 
       rI_ISPC = BIT_EINT0;
   
}
void  Init0_Init()
{    
   if (( rINTPND & BIT_EINT0) )
   {
      rI_ISPC = BIT_EINT0;
   }
   
   rINTMSK = ~(BIT_GLOBAL | BIT_EINT0 );
  // pISR_IIC = (unsigned int)IRQ_I2C1;	    // 设置I2C中断向量地址	
   pISR_EINT0 = (unsigned int)IRQ_Iint0;     
}


*/
void SendData(unsigned char addr,unsigned char data,unsigned char data1)
{
   
    iiccount  = 4;
    
    rIICCON  = 0xaf;             //使能I2C中断 enable ACK generation IICCLK=Fmclk/16
    rIICDS   = 0x70;             //write slave address to IICDS
    
    rIICSTAT = 0xf0;             //主设备发送模式,产生起始条件,使能发送/接收
    Delay(2);
    
    rIICCON  = 0xaf;  
    rIICDS   = addr;
    Delay(2);
    
    rIICCON  = 0xaf;  
    rIICDS   = data;
    Delay(2);
    
    rIICCON  = 0xaf;  
    rIICDS   = data1;
    Delay(2);
    
    rIICCON  = 0xaf; 
    rIICSTAT = 0xD0; 
}



/*
void SendData(unsigned char addr1,unsigned char addr2,unsigned char data)
{
   iGetAck=0;
    
   // rIICCON  = 0xaf;             //使能I2C中断 enable ACK generation IICCLK=Fmclk/16
   // rIICDS   = 0x80;
    rIICDS   = addr1;              //write slave address to IICDS
    rIICSTAT = 0xF0;               //主设备发送模式,产生起始条件,使能发送/接收
    
    Delay(5);
   // while(iGetAck==0);
    iGetAck=0;
    
    
    rIICDS   = addr2;
    rIICCON  = 0xaf;
    
    Delay(5);
   //  while(iGetAck==0);
    iGetAck=0;
    
    
    rIICDS   = data;
    rIICCON  = 0xaf;
    
    Delay(5);
   //  while(iGetAck==0);
    iGetAck=0;
    
    
     
    
    rIICSTAT = 0xd0;  
    rIICCON  = 0xaf; 
    Delay(5);
}

*/




void  I2C_Init()
{    
   if (( rINTPND & BIT_IIC) )
   {
      rI_ISPC = BIT_IIC;
   }
   
   rINTMSK = ~(BIT_GLOBAL | BIT_IIC );
   //pISR_IIC = (unsigned int)IRQ_I2C1;	     // 设置I2C中断向量地址	
   pISR_IIC = (unsigned int)IRQ_I2C2;     
}



void Rtc_Init(void)
  {
    rRTCCON = 0x01;	         // R/W enable, 1/32768, Normal(merge), No reset

    TESTYEAR  = rBCDYEAR;
    TESTMONTH = rBCDMON;
    TESTTDAY  = rBCDDAY;	 // SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
    TESTDATE  = rBCDDATE;
    TESTHOUR  = rBCDHOUR;
    TESTMIN   = rBCDMIN;
    TESTSEC   = rBCDSEC;
    
    rRTCCON &= ~1 ;		    //RTC read and write disable 
  }








/*** Display_Rtc(void)
{
    int year;
    int month,day,weekday,hour,min,sec;

    rRTCCON = 0x01;    // R/W enable, 1/32768, Normal(merge), No reset

    while(1)    //避免读入期间时间跳变引起时间错误
    {
	if(rBCDYEAR == 0x07) 
	    year = 0x2007;
	else 
	    year = 0x2000 + rBCDYEAR;
	    month=rBCDMON;
	    day=rBCDDAY;
	    weekday=rBCDDATE;
	    hour=rBCDHOUR;                                                 //2007/10/08
	    min=rBCDMIN;
	    sec=rBCDSEC;
	if(sec!=0)
	    break;
    }
    Uart_Printf("%4x,%2x,%2x,%s,%2x:%2x:%2x\n",year,month,day,date[weekday],hour,min,sec);	 
   rRTCCON = 0x0;    // R/W disable(for power consumption), 1/32768, Normal(merge), No reset
}
***/




void Main()                            
{  
 
  Target_Init();
  //Init0_Init();
  I2C_Init();
 
  

  
  while(1)
  {   	
    	Delay(1000);
    	rPDATB ^=0x30;   	
   
 // Rtc_Init();
 // Uart_Printf(0, "RTC time : %04x-%02x-%02x %02x:%02x:%02x\n", TESTYEAR, TESTMONTH, TESTDATE ,  TESTHOUR,TESTMIN, TESTSEC );
 // SendData(0x10,TESTDATE >> 4,TESTDATE & 0x0f);
 // SendData(0x12,TESTHOUR >> 4,TESTHOUR & 0x0f);
  //SendData(0x12,TESTMIN >> 4 , TESTMIN & 0x0f);
 // SendData(0x16,TESTSEC >> 4 , TESTSEC & 0x0f); 
 
  //Delay(5);
  //  key=Receive();
  //  SendData(0x10,0x6e,0x6E);
   //SendData(0x07,0x60,0xc0);
     //SendData(0x07,0x60,0xc1);
     // SendData(0x07,0x60,0xc2);
      // SendData(0x07,0x60,0xc3);
   // SendData(0x07,0x61,0x41);
    
    //SendData(0x70,0x10,0x6E);
    
    
  
    /*
    //Delay(5);
    key=Receive();
    //SendData(0x10,0x6e,0x6E);
    SendData(0x07,0x60,0xyear);
     SendData(0x07,0x60,0xmouth);
      SendData(0x07,0x60,0xday);
      SendData(0x07,0x60,0xdate);                     // 2007/10/08
      
   // SendData(0x07,0x61,0x41);
    
    //SendData(0x70,0x10,0x6E);
    */
   
  }
 	
}








⌨️ 快捷键说明

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