找回密码
 立即注册
查看: 410|回复: 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
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:234
  • 最近打卡:2025-05-02 08:29:31

61

主题

818

回帖

1494

积分

金牌会员

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

这个大佬回复的对  

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:234
  • 最近打卡:2025-05-02 08:29:31

61

主题

818

回帖

1494

积分

金牌会员

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 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翻转速度接近。


睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-05-02 07:32:37

21

主题

564

回帖

2678

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3191

回帖

4872

积分

论坛元老

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

也的给点反应时间吧
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:53 , Processed in 0.201113 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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