完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
按手册上说,是按下降沿来判断操作数据的在用C语言写的时候,确实如是(E = 1; E = 0)
但用汇编的时候,却只有用上升沿才可以正常工作(clr E , setb E) 实在是很困惑,只是用的语言不同,为什么需要完全不同的写法,或者说是理论? |
|
相关推荐
15个回答
|
|
|
楼主你解决了?同求
|
|
|
|
|
|
没法通过实验解决,我汇编试了下降沿,C语言试了上升沿,都无法工作,只有我主楼说的那2种情况可以,实在是搞不懂 |
|
|
|
|
|
|
|
|
|
|
|
手册上肯定不会错的,看你的整体逻辑图,不要只看一个,几次下来才能知道
|
|
|
|
|
|
本帖最后由 风之追逐 于 2015-12-15 14:58 编辑
可能是你用的单片机速度比例程中的硬件速度快了,适当增加延时看看。(程序是建立在硬件基础上的,你不了解人家,怎样和人家正常沟通呢?) |
|
|
|
|
|
busy:
mov p0,#0ffh clr rs setb rw clr e nop setb e *** p0.7,busy ret 这是判忙部分的程序,其他的写指令或写数据,对e都用的同样的写法 我觉得能工作的原因可能是这样的: 因为在闲暇时E始终都是置1的,所以在执行下一个指令时(写数据,写指令或判忙),会先置0,就会产生一个下降沿,就在此时LCD工作,之后又置1,恢复常态 但是这却不能解释为什么我在闲暇时E置0,在执行指令时先置1再置0无法工作的情况。有可能是因为单片机速度太快,置1之后迅速置0,电压攀升没有达到规定的高电平的数值就已经在此置0,所以单片机判定不出这是一个下降沿,等我回去实验一下 |
|
|
|
|
|
|
|
|
|
|
|
实验了,加了延时还是无法工作 因为我用C语言写的时候也没有加任何延时,所以我觉得可能问题不出在这里 void LCDwaitready(void) { unsigned char sta; DB = 0xff; RS = 0; RW = 1; do { EN = 1; sta = DB; EN = 0; }while(sta & 0x80); } 这里C51 的判忙函数 |
|
|
|
|
|
看你的C程序,我的理解是检测的上升沿。 所以,“按下降沿来判断操作数据”,是手册上的原话?还是你根据图形或程序,自己说的? |
|
|
|
|
|
这个是判忙标志的时序图
|
|
|
|
|
|
|
|
|
|
|
|
学习啊。 太学习了。
|
|
|
|
|
|
按手册上来准没错,
|
|
|
|
|
|
回去看看手册或者相关历程,1602是比较常用的,IO口控制的屏应该不难
|
|
|
|
|
|
出现什么什么问题,什么现象是什么样子的,建议直接用别人的程序,毕竟高手写的东西还是比较好
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16901 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:01 , Processed in 0.961634 second(s), Total 103, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2132