完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 ytww19 于 2012-11-1 23:17 编辑
以下这个程序是来控制LED灯亮一个时间,灭是一个时间。怎么亮了一次就一直灭的状态?本来是控制LED灯P2口控制亮10S 灭5S一直这样循环下去。请高手指点啊 或者直接写个样板给我看看! #include #define uchar unsigned char #define uint unsigned int void ds(); uchar T=0; void ds() { TMOD = 0x01; TH0 = 0x3c; TL0 = 0xb0; TR0 = 1; ET0 = 1; EA = 1; } void main() { ds(); while(1); } void timer0() interrupt 1 { TH0 = 0x3c; //50MS TL0 = 0xb0; T++; if(T>=200) //10S { P2=1; T=0; T++; if(T>=60) { P2=0; T=0; } } } |
|
相关推荐
15个回答
|
|
很明显,T从0开始加,加到60后,你就把T给清零了,这样T永远也到不了200,所以P2一直等于0,至于亮了一次,估计就是初始化的时候p2=1了吧,以后就一直等于0了。
|
|
|
|
|
|
|
|
|
|
你的程序混乱不堪
|
|
|
|
|
|
|
|
首先T自加到200后清0,在自加到60 在清0,之后返回开始T=0那 大哥这样是不是错了 你是否可以帮修改一下? |
|
|
|
T>=60后就不会在返回原来的基础上吗? |
|
|
|
我刚学习,什么都不会,希望大家可以多指教多鼓励,谢谢! |
|
|
|
那个while 有问题
|
|
|
|
|
|
虚心请教 多多加油
|
|
|
|
|
|
|
|
|
|
|
|
#include
#define uchar unsigned char #define uint unsigned int void ds(); uchar T=0; uchar m=0; void ds() { TMOD = 0x01; TH0 = 0x3c; TL0 = 0xb0; TR0 = 1; ET0 = 1; EA = 1; } void main() { ds(); while(1); } void timer0() interrupt 1 { TH0 = 0x3c; //50MS TL0 = 0xb0; if(m==0) {T++; P2=1; if(T>=200) //10S { T=0; m=1; } } else { T++; P2=0; if(T>=100) //10S { T=0; m=0; } } } |
|
|
|
这个帖子是我以前写的,你写的这个OK。谢谢你! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1589 浏览 3 评论
777 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
908 浏览 0 评论
996 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
810 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10872 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-27 12:19 , Processed in 0.830613 second(s), Total 101, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191