完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
如题:发送一个字节可以,但是连续发送多个字节就会出现数据数据混乱,这是我的发送程序,求指教。谢谢
void PsSendByte(unsigned char Byte) { PsOut(Byte); PsOut(0xf0); PsOut(Byte); } void test() { PsSendByte(PS_KEY[1]); PsSendByte(PS_KEY[2]); PsSendByte(PS_KEY[3]); PsSendByte(PS_KEY[4]); PsSendByte(PS_KEY[5]); PsSendByte(PS_KEY[6]); PsSendByte(PS_KEY[7]); PsSendByte(PS_KEY[8]); PsSendByte(PS_KEY[9]); PsSendByte(0x5A); } void PsOut(unsigned char Byte) { unsigned char ik; unsigned char Oddparity = 0; GPIOC->DDR &= 0XE7; //设置输入 GPIOC->CR1 &= 0XE7; //带下拉输入 Nop(4); while(!(Wieg0PORT->IDR & 0x10)); Nop(35); //clk if(!(Wieg0PORT->IDR &0X08)) return; //data GPIOC->DDR |= 0x18; //设置输出 GPIOC->CR1 |= 0x18; //上拉输出 PsdataLow; Nop(20); //发送start位要多用20us PsClkLow; Nop(40); //拉低时钟 PsClkHigh; Nop(20); //释放时钟 for(ik=0; ik<8; ik++) //高电平的中间即20US,DATA改变 { if(Byte & 0x01) { PsdataHigh; Oddparity++; } else PsdataLow; Nop(20); Byte>>=1; PsClkLow; Nop(40); //拉低时钟 PsClkHigh; Nop(20); //释放时钟 } if(Oddparity & 0x01) {PsdataLow;} //校验位 else {PsdataHigh;} Nop(20); PsClkLow; Nop(40); //拉低时钟 PsClkHigh; Nop(20); PsdataHigh; Nop(20); //输出停止位,总为1 PsClkLow; Nop(40); PsClkHigh; Nop(20); Nop(500); } |
|
相关推荐
1个回答
|
|
太长了 而且没 注释大神都没时间的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
651 浏览 0 评论
840 浏览 0 评论
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
2237 浏览 0 评论
1861 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
689 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11406 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-6 14:29 , Processed in 0.529604 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号