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

📄 i2c.c

📁 I2C实用源代码。KEIL C51编译器编写。
💻 C
📖 第 1 页 / 共 3 页
字号:

              		    case 21: /* write to alarm date register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		      		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(Al_DOM_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;

              		    case 22: /* write to alarm hour register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(Al_Hr_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		      		     I2CStop();
        	       		     break;

              		    case 23: /* write to alarm minute register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(Al_Min_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;

              		    case 24: /* write to alarm second register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(Al_Sec_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;

              		    case 25: /* write OF bit to the flags register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(Flags_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;

              		    case 26: /* read the flags register */
		       		     I2CStart();
 		       		     if (I2CMasterWrite(Dev_Add))
	   	   	 		I2CStop(); 

		       		     if (I2CMasterWrite(Flags_Add_Reg))
	      	   	 		I2CStop();      
		       		     
				     I2CStart();                 	                                          	
 		       		     if (I2CMasterWrite(Dev_Add+1))  	                                   
	   	   	 		I2CStop();
                                                   
		       		     Flags_Reg = I2CMasterRead(1);
		       		     putchar (Flags_Reg);
		       		     I2CStop();
        	       		     break;


/******************************************************************************/
/*									      */
/*   case 27-29 are not used (reserved registers)			      */
/*									      */
/******************************************************************************/


              		    case 30: /* write to SQW register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(SQW_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;

              		    case 31: /* write to Tamper1 register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

		       		     if (I2CMasterWrite(Tamper1_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;

              		    case 32: /* write to Tamper2 register */
		       		     RTC_Data = _getkey();	
		       		     I2CStart();
		       		     if (I2CMasterWrite(Dev_Add))
	   	          		I2CStop();    

\
		       		     if (I2CMasterWrite(Tamper2_Add_Reg))
	   	          		I2CStop();

        	       		     if (I2CMasterWrite(RTC_Data))
	   	          		I2CStop();

		       		     I2CStop();
        	       		     break;



/******************************************************************************/
/*							 		      */
/*  	case 40 - Reading the RTC Reg. of T0/T00/T11/T56 devices.	      */
/*							   		      */
/******************************************************************************/

              		    case 40: /* Read the RTC Reg. Map */
		       		     I2CStart();           	 	
				     if (I2CMasterWrite(Dev_Add))
	   	   	 		I2CStop(); 

		       		     if (I2CMasterWrite(Sec_Add_Reg))
	      	   	 		I2CStop();
        
		       		     I2CStart();                     	
                                     if (I2CMasterWrite(Dev_Add+1))  	                                   
	   	   	 		I2CStop();
        
		       		     Sec_Reg = I2CMasterRead(0);
		       		     Min_Reg = I2CMasterRead(0);
		       		     Hr_Reg =  I2CMasterRead(0);
		       		     DOW_Reg = I2CMasterRead(0);
                       		     DOM_Reg = I2CMasterRead(0);
		       		     Mon_Reg = I2CMasterRead(0);
		       		     Yr_Reg =  I2CMasterRead(0);
		       		     Cont_Reg = I2CMasterRead(1);
		       		     Interrupts = P1;
                       		     I2CStop();

 		       		     putchar (Sec_Reg);
		       		     putchar (Min_Reg);
		       		     putchar (Hr_Reg);
		       		     putchar (DOW_Reg);
		       		     putchar (DOM_Reg);
		       		     putchar (Mon_Reg);
		       		     putchar (Yr_Reg);
		       		     putchar (Cont_Reg);
		       		     putchar (Interrupts);	
        	       		     break;

/******************************************************************************/
/*							 		      */
/*  	case 41 - Reading the RTC Reg. of T80/T81/ST84/ST85 devices (I2C)     */	
/*							   		      */
/******************************************************************************/

              		    case 41: /* Read the RTC Reg. Map */
				     I2CStart();           	 	
				     if (I2CMasterWrite(Dev_Add))
	   	   	 		I2CStop(); 

		       		     if (I2CMasterWrite(Tenths_Sec_Add_Reg))
	      	   	 		I2CStop();
        
		       		     I2CStart();                     	
				     if (I2CMasterWrite(Dev_Add+1))  	                                   
	   	   	 		I2CStop();
        
		       		     Tenths_Sec_Reg = I2CMasterRead(0);	
		       		     Sec_Reg = I2CMasterRead(0);
		       		     Min_Reg = I2CMasterRead(0);
		       		     Hr_Reg =  I2CMasterRead(0);
		       		     DOW_Reg = I2CMasterRead(0);
                       		     DOM_Reg = I2CMasterRead(0);
		       		     Mon_Reg = I2CMasterRead(0);
		       		     Yr_Reg =  I2CMasterRead(0);
		       		     Cont_Reg = I2CMasterRead(0);
		        	     Wdog_Reg = I2CMasterRead(0);	
		       		     Al_Mon_Reg = I2CMasterRead(0);
		       		     Al_DOM_Reg = I2CMasterRead(0);
		       		     Al_Hr_Reg = I2CMasterRead(0);
		       		     Al_Min_Reg = I2CMasterRead(0);
		       		     Al_Sec_Reg = I2CMasterRead(1);
                                     I2CStop();

		       		     I2CStart();
 		       		     if (I2CMasterWrite(Dev_Add))
	   	   	 		I2CStop(); 

		       		     if (I2CMasterWrite(SQW_Add_Reg))
	      	   	 		I2CStop();
        
		       		     I2CStart();                 	                                          	
 		       		     if (I2CMasterWrite(Dev_Add+1))  	                                   
	   	   	 		I2CStop();
                                                   
		       		     SQW_Reg = I2CMasterRead(1);
 		       		     I2CStop();

		       		     Interrupts = P1;

		       	 	     putchar (Tenths_Sec_Reg);
 		       		     putchar (Sec_Reg);
		       		     putchar (Min_Reg);
		       		     putchar (Hr_Reg);
		       		     putchar (DOW_Reg);
		       		     putchar (DOM_Reg);
		       		     putchar (Mon_Reg);
		       		     putchar (Yr_Reg);
		       		     putchar (Cont_Reg);
		       		     putchar (Wdog_Reg);
		       		     putchar (Al_Mon_Reg);
		      		     putchar (Al_DOM_Reg);
		       		     putchar (Al_Hr_Reg);
		       		     putchar (Al_Min_Reg);
		       		     putchar (Al_Sec_Reg);
	                             putchar (SQW_Reg);
		       		     putchar (Interrupts);	
        	      		     break;



/******************************************************************************/
/*							 		      */
/*  	case 42 - Reading the RTC Reg. of ST87 device (I2C)		      */	
/*							   		      */
/******************************************************************************/

              		    case 42: /* Read the RTC Reg. Map */
				     I2CStart();           	 	
				     if (I2CMasterWrite(Dev_Add))
	   	   	 		I2CStop(); 

		       		     if (I2CMasterWrite(Tenths_Sec_Add_Reg))
	      	   	 		I2CStop();
        
		       		     I2CStart();                     	
				     if (I2CMasterWrite(Dev_Add+1))  	                                   
	   	   	 		I2CStop();
        
		       		     Tenths_Sec_Reg = I2CMasterRead(0);	
		       		     Sec_Reg = I2CMasterRead(0);
		       		     Min_Reg = I2CMasterRead(0);
		       		     Hr_Reg =  I2CMasterRead(0);
		       		     DOW_Reg = I2CMasterRead(0);
                       		     DOM_Reg = I2CMasterRead(0);
		       		     Mon_Reg = I2CMasterRead(0);
		       		     Yr_Reg =  I2CMasterRead(0);
		       		     Cont_Reg = I2CMasterRead(0);
		        	     Wdog_Reg = I2CMasterRead(0);	
		       		     Al_Mon_Reg = I2CMasterRead(0);
		       		     Al_DOM_Reg = I2CMasterRead(0);
		       		     Al_Hr_Reg = I2CMasterRead(0);
		       		     Al_Min_Reg = I2CMasterRead(0);
		       		     Al_Sec_Reg = I2CMasterRead(1);
                                     I2CStop();

		       		     I2CStart();
 		       		     if (I2CMasterWrite(Dev_Add))
	   	   	 		I2CStop(); 

		       		     if (I2CMasterWrite(SQW_Add_Reg))
	      	   	 		I2CStop();
        
		       		     I2CStart();                 	                                          	
 		       		     if (I2CMasterWrite(Dev_Add+1))  	                                   
	   	   	 		I2CStop();
                                                   
		       		     SQW_Reg = I2CMasterRead(0);
		       		     Tamper1_Reg = I2CMasterRead(0);
		       		     Tamper2_Reg = I2CMasterRead(1);	
 		       		     I2CStop();

		       		     Interrupts = P1;

		       	 	     putchar (Tenths_Sec_Reg);
 		       		     putchar (Sec_Reg);
		       		     putchar (Min_Reg);
		       		     putchar (Hr_Reg);
		       		     putchar (DOW_Reg);
		       		     putchar (DOM_Reg);
		       		     putchar (Mon_Reg);
		       		     putchar (Yr_Reg);
		       		     putchar (Cont_Reg);
		       		     putchar (Wdog_Reg);
		       		     putchar (Al_Mon_Reg);
		      		     putchar (Al_DOM_Reg);
		       		     putchar (Al_Hr_Reg);
		       		     putchar (Al_Min_Reg);
		       		     putchar (Al_Sec_Reg);
	                             putchar (SQW_Reg);
		       		     putchar (Tamper1_Reg);
		       		     putchar (Tamper2_Reg);
		       		     putchar (Interrupts);	
        	      		     break;


/*******************************************************************************/
/*							 		       */
/*  	case 45 - Write (Burst) Time to the RTC Reg. 			       */	
/*		  					 		       */
/*******************************************************************************/

              		    case 45: 
		       		     Sec_Data = _getkey();
				     Min_Data = _getkey();
		       		     Hr_Data =  _getkey();
				     DOW_Data = _getkey();

⌨️ 快捷键说明

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