----------------
接收一字节的程序如下:
ORG 0000H
LJMP KIN
ORG 0100H
KIN:
MOV SCON, #0
CLR P1.0令165并入.
SETB P1.0令165锁定数据、且允许移位.
SETB REN 令其串入单片机.
JNB RI, $ 等待.
CLR RI
CLR REN 不收了.
MOV A, SBUF 取出数据.
MOV P0, A 显示.
SJMP KIN
END
程序中for循环里的或运算的作用,INT_data是由引脚P1.7输入的74HC165的每一个位,要转换成并行数据。或运算是与1或结果是1。假如,开始 indata=0,INT_data=1,或结果就是,indata=0000 0001,读进一位。向左移一位,indata=0000 0010,再或一位,indata=0000 0011。依此类推读完8位。
问题应该出在:实际接线时开关并了104电容,这会产生延迟的。当程序读按键时,因延时按键还没有接触上。
解决方法,换成小一些电容,在调用读键盘子程序时,加延时。
因为仿真是没有延迟的,就算是加了电容,仿真时也不起作用。所以,仿真可以通过。但实物,电容就起作用了。
或者,先拿掉电容,执行一下程序,看能不能通过,就知道,是不是因为电容的原因了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)