完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机实验课,要求做交通灯的程序,我编了一个,主程序应该是对的,但是延时程序有问题,灯闪的特别快,相当于没有延迟的。请问我的程序哪里有问题吗?是用8255芯片来实验的
#include #include #define com8255 XBYTE[0xf0003] #define pa8255 XBYTE[0xf0000] #define pb8255 XBYTE[0xf0001] #define pc8255 XBYTE[0xf0002] #define uchar unsigned char void delay(unsigned int time) { unsigned int i,z; for(z=0;z for(i=0;i<1000;i++); } void main () { com8255=0x80; pa8255=0x7b; delay(10); while(1) { uchar count=5,a=5; pa8255=0x7e; delay(10); while(count--) { pa8255=0x7e; delay(1); pa8255=0x7f; delay(1); } pa8255=0x7d; delay(6); pa8255=0xdb; delay(10); while(a--) { pa8255=0xdb; delay(1); pa8255=0xfb; delay(1); } pa8255=0xbb; delay(6);} } |
|
相关推荐
7个回答
|
|
云汉达人 楼主把这个delay(1)里面的数字加大一点试试,延时应该会改变……具体多少合适看你自己需求,要精确延时建议用定时器……
|
|
|
|
延时是要看晶振的,,建议先用示波器来测试一下。。。
|
|
|
|
延时程序写错了。正确应该是
void delay(unsigned int time) { unsigned int i,z; for(z=0;z for(i=0;i<1000;i++); } 注意你那上面那个分号,相当于没有嵌套循环了。 |
|
|
|
云汉达人 void delay(unsigned int time)
{ unsigned int i,z; for(z=0;z for(i=0;i<1000;i++); } 第一个分号去掉 |
|
|
|
云汉达人 可以用示波器测试一下你的delay(1)的时间有多少 你可以将一个管脚先置高 然后delay(1000)拉低 示波器测试延迟了多少 除以100就是delay(1)的时间 然后基本就可以做精确延时了
|
|
|
|
云汉达人
|
|
|
|
你那个delay的值要计算一下
|
|
|
|
只有小组成员才能发言,加入小组>>
722 浏览 0 评论
1123 浏览 1 评论
2505 浏览 5 评论
2840 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2685 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
664浏览 9评论
679浏览 7评论
682浏览 5评论
665浏览 5评论
imx6dl芯片与imx6q芯片互换启动无反应请问是什么问题呢
286浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 17:57 , Processed in 1.221470 second(s), Total 92, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号