74ls165程序问题 高手请进 程序执行完总是和原来输入的数不一样。

74ls165程序问题 高手请进 程序执行完总是和原来输入的数不一样。,第1张

#include <intrins.h>

#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脚移出的数据是反相的.

74LS165

74ls165是八位并行输入/串行输出移位寄存器.当1脚为低电平时,将输入数据D0 - D7存入Q0 - Q7,数据存入后,使1脚为高电平,DS10脚=0, /CE15脚=0, CP2脚的8个时钟脉冲就能将并行数据从

Q7=9脚,串行移出./Q7=7脚移出的数据是反相的

74LS165也 是位串行移位寄存器,时钟受控时,数据从QA向QH转移。八个单独的直接数据输入端使对每一 级的并行输入存取得以实现,直接数据输入端由移位/负载输入端的低电平赋能。这种寄存器也具有门控时 钟输入端和第八位互补输出端的特点。为使传输线效应变得最小,输入都是二极管钳位,因而简化了系统 设计。

时钟控制是通过一个 2 输入正或非门来实现的,这使一个输入羰可用作时钟禁止功能输入端。保持两 个时钟输入端的任何一个为高电平,则禁止时钟控制。保持任何一个时钟输入端为低电平,而移位/负载输 入端为高电平,则使另一个时钟输入端赋能,仅在这个时钟输入端为高电平时,时钟禁止输入端才应被变 到高电平,只要移位/负载输入为高电平就禁止并行输入。并行输入端的数据在移位/负载输入端从高电平 到低电平跃变时直接输入寄存器,而与时钟、时钟禁止或串行输入端三者的电平无关


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11086199.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存