📄 ic4094.c
字号:
//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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -