完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这几天在调试串行74LS164点亮三位共阳数码管的过程中发现STM8S103在IAR环境下取8位数据最高位有问题。程序是从STC12C5A Keil uVision4 移植过来的,源程序显示很正常,移植到STM8S103在IAR环境下数码管所有笔画一直都点亮,也就是说164一直接收到低电平,没有收到高电平,哟问题的语句是 sdata = ( k 0x80); 不管k的值是多少得到的全是0,应该有1,但是没有;只要将语句改为 sdata = ( k 0x01 ); 得到的各个位有0有1就正常。
我的164点亮三位数码管各段的数据要求先传最高位后传最低位,现在语句改为 sdata = ( k 0x01 ); 这样是先传输最低位,后传最高位,得到的数据位顺序颠倒了,显示乱码。最后只有重新修改显示数据的段码表才能正常显示。 到现在想不通为何 ( k 0x80 )得不到 k 数据位当中的最高位,k=0xff都不行,这在STC12C5A Keil uVision4环境下很正常。不知各位是否遇到?这个小问题害人,也可能是我学艺不精。。。。。。 附上有问题代码: void send164(unsigned char seg)//送数据位去164显示,共阳数码管,低电平点亮 { unsigned char k,m; k=tab[seg];//得到显示字符的段码 for(m=0;m<8;m++) { sclok=0; //164串行时钟线拉低 sdata = ( k 0x80 ); //串行数据位取显示段码数据位的最高位 k= k<<1; //所有数据位左移一位 sclok=1; //164串行时钟线拉高,上升沿移位 } } 调试正常的代码: void send164(unsigned char seg)//送数据位去164显示,共阳数码管,低电平点亮 { unsigned char k,m; k=tab[seg];//得到显示字符的段码 for(m=0;m<8;m++) { sclok=0; //164串行时钟线拉低 sdata = ( k 0x01 ); //串行数据位取显示段码数据位的最低位 k= k>>1; //所有数据位右移一位 sclok=1; //164串行时钟线拉高,上升沿移位 } } |
|
相关推荐
2个回答
|
|
按道理不会出现这种情况吧,都是标准的C。单步调试下走走看一下吧,看具体是怎么回事
|
|
|
|
在STM8S103的IAR环境下,您遇到的问题可能是由于取8位数据最高位时的位操作方式不正确。在您提供的代码中,您使用了`sdata = (k & 0x80);`来获取k的最高位。然而,这种方法可能在IAR环境下不适用。
为了解决这个问题,您可以尝试以下方法: 1. 使用位运算符`>>`来获取k的最高位。例如: ```c sdata = (k >> 7) & 0x01; ``` 这里,`k >> 7`将k的二进制表示向右移动7位,然后将结果与0x01进行按位与操作,以确保结果为0或1。 2. 如果您仍然遇到问题,可以尝试使用IAR提供的内置函数。例如,您可以使用`_BitSet()`和`_BitClr()`函数来设置或清除特定位。例如: ```c _BitSet(sdata, 7, (k & 0x80) >> 7); ``` 或者 ```c _BitClr(sdata, 7, !((k & 0x80) >> 7)); ``` 这里,`_BitSet()`函数将sdata的第7位设置为(k & 0x80) >> 7的结果,而`_BitClr()`函数将sdata的第7位清除,如果(k & 0x80) >> 7的结果为0。 3. 确保您的74LS164和STM8S103之间的硬件连接正确。检查数据线、时钟线和控制线是否正确连接,以确保数据能够正确传输。 4. 如果问题仍然存在,请检查您的程序逻辑,确保在向74LS164发送数据之前,您已经正确地设置了控制信号,如锁存和时钟信号。 通过尝试上述方法,您应该能够在IAR环境下解决STM8S103取8位数据最高位的问题。如果问题仍然存在,请仔细检查您的硬件连接和程序逻辑,以确保一切正常。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:53 , Processed in 0.737649 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号