完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void LedCommunicate() 此函数一直在主函数中循环调用 { static unsigned char tmp=0xFE; static unsigned char tmep=0x7F; switch(RxdByte) RxdByte为串口调试助手下发的数据,一个字节的全局变量 { case 0:LedBuff[6]=0xFF;break; case 1:LedBuff[6]=0x00;break; //下发1,点亮所有小灯 case 2:LedBuff[6]=0xF0;break; //下发2,3点亮一半小灯 case 3:LedBuff[6]=0x0F;break; case 4: //下发4进行左移流水灯 { if(cnt>=1000) { cnt=0; cnt为计数器,定时器T0中断服务函数中增加 LedBuff[6]=_crol_(tmp,1); 小灯1s循环左移一次,但是只移动了一次,逻辑哪里错误了,老司机请求解答 啊? } break; } case 5: //下发5进行流水灯右移动 { if(cnt>=1000) { cnt=0; LedBuff[6]=_cror_(tmep,1); } break; } case 6:BUZZ=0;break; case 7:BUZZ=1;break; default:break; } }
//串口中断服务函数 void InterruptUART() interrupt 4 { if(RI==1) //接收数据完毕 { RI=0; RxdByte=SBUF; //将接收到的数据送进缓冲区 SBUF=RxdByte; //再将缓冲区的数据发送出去 } if(TI==1) { TI=0; } } 老司机解答下,为什么只移动一次,其他的下发的数据都是对的,就流水灯不对 |
|
相关推荐
7个回答
|
|
你的这个函数是不是放在了主循环里了
|
|
|
|
对啊。。。。。。。。。。。。。。
|
|
|
|
|
|
|
|
对于你现在的程序是当RxdByte=4且cnt>=1000时,LED才会移位一次,如果时想当RxdByte=4时,LED开始自动进行循环移位,那应该时当RxdByte=4时,设置一个标志,LED的循环移位部分放在定时器里,当这个标志有效时,在定时器里进行循环移位
|
|
|
|
人中狼 发表于 2018-7-13 19:14 额,感谢感谢。。。。。。。。。。。。 |
|
|
|
请问下写入E2PROM中的数据是以什么类型存贮的?010101010101?这种么? |
|
|
|
不错,感谢分享经验心得,值得学习,麻烦了,辛苦了,非常感谢。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
72 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
509 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
546 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
545 浏览 0 评论
1008 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 13:27 , Processed in 0.758194 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号