ic4094.c
来自「当微处理器的I/O端口不够使用,可用IC4094来扩充.」· C语言 代码 · 共 100 行
C
100 行
//IC4094扩充端口的应用
#include "reg51.h"
#include "intrins.h"
typedef unsigned char Byte;
typedef unsigned int Word;
typedef unsigned long Dword;
typedef bit Bool ;
sbit STROBEl_PIN = P1^0; //闸门
sbit DATA_PIN = P1^1; //数据脚
sbit CLK_PIN = P1^2; //时钟
sbit OE_PIN = P1^3; //使能脚
void Out_Put4094_1(Byte value)
{
OE_PIN = 1; //使能
Data_Tx8bit(value);
Strobel();
OE_PIN = 0; //不使能
}
//1位输出
void Out_Put4094_2(void)
{
OE_PIN = 1; //使能
OutPutData |= 0x02; //Q2输出1
Data_Tx8bit(OutPutData1);
Strobel();
OE_PIN = 0; //不使能
}
void Out_Put4094_3(void)
{
OE_PIN = 1; //使能
OutPutData &= ~(0x02); //Q2输出0
Data_Tx8bit(OutPutData1);
Strobel();
OE_PIN = 0; //不使能
}
//2位输出
void Out_Put4094_4(void)
{
OE_PIN = 1; //使能
OutPutData |= 0x02; //Q2输出1
OutPutData &= ~(0x02); //Q3输出0
Data_Tx8bit(OutPutData1);
Strobel();
OE_PIN = 0; //不使能
}
void Out_Put4094_5(void)
{
OE_PIN = 1; //使能
OutPutData |= 0x02;
Data_Tx8bit(OutPutData1);
Strobel();
OE_PIN = 0; //不使能
}
void Data_Tx8bit(Byte value)
{
Byte i;
for(i=0; i<8; i++)
{
if(value&80)
{
DATA_PIN = 1;
}
else
{
DATA_PIN = 0;
}
value <<=1;
Clk_Delay();
CLK_PIN = 1;
Clk_Delay();
CLK_PIN = 0;
Clk_Delay();
}
}
void Strbel(void)
{
STROBE1_PIN = 0; //P10=0--1--0
Clk_Delay();
STROBE1_PIN = 1;
Clk_Delay();
STROBE1_PIN = 0;
Clk_Delay();
}
//50us
void Clk_Delay(void)
{
Byte i;
for(i=0; i<6; i++)
;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?