找回密码
 立即注册
查看: 1458|回复: 8

一个普通又奇怪的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-07-02 10:09:53

17

主题

29

回帖

299

积分

中级会员

积分
299
发表于 2024-6-3 17:22:24 | 显示全部楼层 |阅读模式
                P02=!P02;
                if(P02)
                  PortStar[4]=1;
                else
                        PortStar[4]=0;
               
                printf("PortStar[4]=  %u %u\n",PortStar[4],P02);


[17:21:20.260]接收←PortStar[4]=  0 1


打印结果和程序相反,是什么原因呢,大神有空回复一下吗

截图202406031718589637.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:697
  • 最近打卡:2026-07-04 21:56:03

33

主题

3007

回帖

6880

积分

论坛元老

积分
6880
发表于 2024-6-3 17:43:06 | 显示全部楼层
往 P02!=P02  后面加一个小延时,,你再试一试
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:371
  • 最近打卡:2026-01-27 06:46:46

60

主题

830

回帖

1823

积分

金牌会员

积分
1823
发表于 2024-6-3 18:47:48 | 显示全部楼层
本帖最后由 zhange 于 2024-6-3 18:53 编辑
_奶*** 发表于 2024-6-3 17:43
往 P02!=P02  后面加一个小延时,,你再试一试

这个大佬回复的对  

至少给它一个机器周期的反应时间吧  应该是吧  我记得是这样  延时1毫秒
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:371
  • 最近打卡:2026-01-27 06:46:46

60

主题

830

回帖

1823

积分

金牌会员

积分
1823
发表于 2024-6-3 18:55:40 | 显示全部楼层
        P40 = 0;
       
  P66=!P66;
        _nop_();
  if(P66)
    P62 = 1;
  else
    P62 = 0;

加上这个就可以了   不用延时函数了  就是个无效指令  给机器个反应时间  我测试可以

点评

666,这个大部分人可能会忽视。  发表于 2024-6-3 19:25
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:944
  • 最近打卡:2026-07-05 10:37:41
已绑定手机

61

主题

2089

回帖

3081

积分

论坛元老

积分
3081
发表于 2024-6-3 21:11:57 | 显示全部楼层
_奶*** 发表于 2024-6-3 17:43
往 P02!=P02  后面加一个小延时,,你再试一试

回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:788
  • 最近打卡:2026-07-05 13:03:19
已绑定手机

50

主题

2745

回帖

3039

积分

荣誉版主

积分
3039
发表于 2024-6-3 23:14:10 | 显示全部楼层
我用类似的代码在STC8G1K17A-SOP8测试了一下,这个程序的运行结果和单片机速度也是有关系的,代码如下:
  1. P3M0 = 0xFF; P3M1 = 0x00;   //推挽输出,确保IO翻转速度
  2. P5M0 = 0x00; P5M1 = 0x00;
  3. _nop_();_nop_();
  4.         P32 = 1;
  5.         _nop_();_nop_();
  6.         P32 = 0;
  7.         P54 = P32;
  8.         P55 = P32;      
  9.         while(1);  
复制代码
测试结果是这样的,烧录时IRC频率设置为20MHz及以下P54和P55输出状态一致,IRC频率设置为22.1184MHz及以上P54和P55输出状态不一致,说明20MHz附近的时候MCU的指令速度与IO翻转速度接近。


~~~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:907
  • 最近打卡:2026-07-04 09:12:54
已绑定手机

25

主题

641

回帖

4209

积分

论坛元老

积分
4209
发表于 2024-6-4 10:49:59 | 显示全部楼层
涨知识了,IO口翻转得这么慢么
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:849
  • 最近打卡:2026-07-05 00:00:31
已绑定手机

19

主题

3439

回帖

7456

积分

论坛元老

积分
7456
发表于 2024-6-4 11:16:45 | 显示全部楼层
wangxi*** 发表于 2024-6-4 10:49
涨知识了,IO口翻转得这么慢么

也的给点反应时间吧
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-5 15:46 , Processed in 0.075777 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表