完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ex6_mode0_input.zip
(15.84 KB, 下载次数: 19
)
仿真电路图见附件ex6_mode0_input.zip 程序是这样的: #include #include unsigned char read165 (void) { unsigned char uch = 0; P1_6 = 1; /* inhibit start */ _nop_ (); P1_7 = 0; /* 74LS166 load */ P3_1 = 0; /* LOW-to-HIGH transition */ P3_1 = 1; _nop_ (); _nop_ (); _nop_ (); P1_7 = 1; /* 74LS166 serial shift */ _nop_ (); _nop_ (); _nop_ (); P1_6 = 0; /* inhibit end */ SCON = 0x10; /* 串口方式0,允许接收 */ while (RI == 0); RI = 0; uch = SBUF; _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ (); return ch; } 如果将74LS165的CLOCK INHIBIT引脚接地时,注释掉程序中有关P1_6的语句,实验现象是一样的。 仿真时,实验现象为: 1. 试图读取D0 D1 D2 D3 D4 D5 D6 D7,但实际上读取的数据为 1 D0 D1 D2 D3 D4 D5 D6,也就是说,读取数据=真实数据右移一位然后最高位补1。明显偏了一位,而且不知道为什么高位要补1; 2. 轮询方式查询RI置位后,软件复位RI:RI=0;但是后面明显会看到RI会重新变为1. 奇怪的是,如果是语句_nop_(),RI并不会变为1;只要遇到非_nop_()语句,RI就会发生变化。为什么有这种变化? 小弟的软件环境是:keil c51 v9.06+proteus release 7.5 sp3 (build7401) 我猜多半是设计过程出了问题,比如电路图或者驱动程序时序问题,但目前没有任何思路。 请好心人帮忙看看,给个思路? 感激不尽!! |
|
相关推荐
|
|
{:9:}
|
|
|
|
|
|
图居然看不了。。。。。。
|
|
|
|
|
|
6101 浏览 3 评论
7371 浏览 1 评论
7609 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9400 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1276 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:26 , Processed in 0.656214 second(s), Total 77, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号