74HC165编程与PROTEUS仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.3 74HC165输入扩展

汇编、C 语言编程。

简介:

首先shld 置低电平,延时大约1ms ,完成数据读取,然后拉高。接着进入一个8次的循环,首先clk=0;读取so 的值,在clk=1;依次循环8次。(首先读取的是高位,依次递减) 注意:本例采用的是显示哪个按键被按下,即将读取的状态赋值给P3口,再由P3口通过数码管显示!!!!(共阴极)

(1)汇编:

ORG 0000H

//------主函数-------

MAIN: CLR P2.1 //读入按键信号

NOP

NOP

SETB P2.1

CALL READ //读取第D7键值

MOV P3.7,C//赋值显示

CALL READ //读取第D6键值

MOV P3.6,C

CALL READ //读取第D5键值MOV P3.5,C

CALL READ //读取第D4键值MOV P3.4,C

CALL READ //读取第D3键值MOV P3.3,C

CALL READ //读取第D2键值MOV P3.2,C

CALL READ //读取第D1键值MOV P3.1,C

CALL READ //读取第D0键值MOV P3.0,C

SJMP MAIN //返回主函数

//----读信号子函数------- READ:

CLR P2.0

MOV C,P2.2 //读取信号SETB P2.0

RET

END

(2)C语言

#include

sbit shld=P2^1;

sbit clk=P2^0;

sbit so=P2^2;

int n=0;

//-------延时子程序------ void delay(int i)

{

int j;

while(i--)

for(j=100;j>0;j--)

;

}

//-----读信号子程序------ void read()

int i,m=0;

shld=0;//低电平读入信号

delay(10);//延时

shld=1;//置高电平

for(i=0;i<8;i++)//循环八次

{

clk=0; //拉低

n=n<<1; //左环移

n=n|so; //将位依次排列,组成16进制数clk=1; //拉高

}//首先读最高位信号再一次往低

}

//-----主函数--------

void main()

{

while(1)

{

read();//读信号

P3=n; //P3口赋值

}

}

相关文档
最新文档