📄 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 + -