
#define uint unsigned int
sbit _165_clk=P2^0
//165的数据端
sbit _165_sda=P2^1
//165的锁存移位端,0锁存数据,1开始移位
sbit _165_sft=P2^2
delay(uint z)
{ uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
//从165中读数据
unsigned char read165(void)
{
unsigned char dat_buf,cnt
//数据锁存
_165_sft=0
dat_buf=0
cnt=8
//开始移位
_165_sft=1
do
{
_165_clk=0
//这里要先移位,否则会出现最低位被补0而最高位被移出的现象
dat_buf<<=1
if(_165_sda)
{
dat_buf|=0x01
}
_165_clk=1
}while(--cnt)
return dat_buf
}
void main()
{
unsigned char dat_buf
while(1)
{
read165()
if(dat_buf==0xfe)
{ P1=0x55
delay(4000)
}
}
}
这是以前的程序,应该可以用,你看下
74ls165是八位并行输入/串行输出移位寄存器,不是单片机.当1脚为低电平时,将输入数据D0 - D7存入Q0 - Q7,数据存入后,使1脚为高电平,DS10脚=0, /CE15脚=0, CP2脚的8个时钟脉冲就能将并行数据从
Q7=9脚,串行移出./Q7=7脚移出的数据是反相的.
74LS16574ls165是八位并行输入/串行输出移位寄存器.当1脚为低电平时,将输入数据D0 - D7存入Q0 - Q7,数据存入后,使1脚为高电平,DS10脚=0, /CE15脚=0, CP2脚的8个时钟脉冲就能将并行数据从
Q7=9脚,串行移出./Q7=7脚移出的数据是反相的
74LS165也 是位串行移位寄存器,时钟受控时,数据从QA向QH转移。八个单独的直接数据输入端使对每一 级的并行输入存取得以实现,直接数据输入端由移位/负载输入端的低电平赋能。这种寄存器也具有门控时 钟输入端和第八位互补输出端的特点。为使传输线效应变得最小,输入都是二极管钳位,因而简化了系统 设计。
时钟控制是通过一个 2 输入正或非门来实现的,这使一个输入羰可用作时钟禁止功能输入端。保持两 个时钟输入端的任何一个为高电平,则禁止时钟控制。保持任何一个时钟输入端为低电平,而移位/负载输 入端为高电平,则使另一个时钟输入端赋能,仅在这个时钟输入端为高电平时,时钟禁止输入端才应被变 到高电平,只要移位/负载输入为高电平就禁止并行输入。并行输入端的数据在移位/负载输入端从高电平 到低电平跃变时直接输入寄存器,而与时钟、时钟禁止或串行输入端三者的电平无关
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)