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

📄 hc595.c

📁 频率合成器加数字调制芯片ADF7012的应用 CRC校验C程序 扩展I/O口芯片HC595程序
💻 C
字号:

#include "includess.h"


//--------------------写I/O口扩展芯片HC595函数------------------------
void write_to_595(unsigned int shiftdata, unsigned char switch_order) 
{
      unsigned char i;
	  
	  unsigned int j;
 
	  for (i=0; i<16; i++)         //将2字节数据转移进HC595的移位寄存器中
	  {  
	     if ((shiftdata & 0x8000) == 0)
	     {
	        PORTB = PortB50;
	     }
	     else
	     {
	        PORTB = PortB51;
	     }
		 
		 shiftdata <<= 1;          //数据左移一位
		 
		 Delay(10);                  //延时135ns
		 PORTB = PortB41;          //SRCLK为高电平,数据转移进HC595的移位寄存器中
		 
		 Delay(10);                    //延时135ns
		 PORTB = PortB40;          //SRCLK为低电平
		 	  	 
	  }
	  
	 //  Delay(10);
	   if (switch_order == 1)  //先高8位输出,再低八位输出(先开射频开关,再开功放开关)
	   {
	       PORTE = PortE31;            //RCLK为高电平,数据从移位寄存器中转移到存储器并输出
	       Delay(10);
	       PORTE = PortE30;
	       for (j = 0; j < 30000; j++)
		   {
	  	      Delay(30);   //先设置射频开关,再设置功放开发,延时
	       }
	       PORTB = PortB61;            //RCLK为高电平,数据从移位寄存器中转移到存储器并输出
	       Delay(10);
	   
	       PORTB = PortB60;             //RCLK为低电平
	    }
		else if (switch_order == 2)  //先低8位输出,再高八位输出(先关功放开关,再关射频开关)
		{
		   PORTB = PortB61;            //RCLK为高电平,数据从移位寄存器中转移到存储器并输出
	       Delay(10);
	       PORTB = PortB60;
	 
	  	   for (j = 0; j < 30000; j++)
		   {
	  	      Delay(30);   //先设置射频开关,再设置功放开发,延时
	       }
	   
	       PORTE = PortE31;            //RCLK为高电平,数据从移位寄存器中转移到存储器并输出
	       Delay(10);
	   
	       PORTE = PortE30;             //RCLK为低电平
		}
	  
}
		  
		 
	  

⌨️ 快捷键说明

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