hc595.c
来自「频率合成器加数字调制芯片ADF7012的应用 CRC校验C程序 扩展I/O口」· C语言 代码 · 共 69 行
C
69 行
#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 + =
减小字号Ctrl + -
显示快捷键?