找回密码
 立即注册
查看: 595|回复: 6

有实验箱的朋友帮忙试试能打印出什么内容?

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-05-08 07:41:36

45

主题

381

回帖

1595

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1595
发表于 2023-11-19 14:01:24 | 显示全部楼层 |阅读模式

P6 =~(~P6<<1)是将P6=0b1111 1110的值变成P6=0b1111 1101



疑问1.png
处事要代人所想,读书需切己用功
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:116
  • 最近打卡:2025-03-09 18:14:54

3

主题

88

回帖

642

积分

荣誉版主

积分
642
发表于 2023-11-20 15:05:07 | 显示全部楼层
bw3y21wa.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-05-08 07:41:36

45

主题

381

回帖

1595

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1595
发表于 2023-11-20 15:24:21 | 显示全部楼层

理论计算是这样,但是实际情况还真不一定是,第二次输出有可能是255。如果申请到了实验箱你可以试试,我还没学完,没法申请,所以暂时无法试验。
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:116
  • 最近打卡:2025-03-09 18:14:54

3

主题

88

回帖

642

积分

荣誉版主

积分
642
发表于 2023-11-20 17:36:30 | 显示全部楼层
reng*** 发表于 2023-11-20 15:24
理论计算是这样,但是实际情况还真不一定是,第二次输出有可能是255。如果申请到了实验箱你可以试试,我 ...

我这是pc上运行的结果
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-05-08 07:41:36

45

主题

381

回帖

1595

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1595
发表于 2023-11-20 19:18:14 | 显示全部楼层
yef*** 发表于 2023-11-20 17:36
我这是pc上运行的结果

PC上运行和实际的单片机还是两码事,毕竟PC运行只是进行运算,1+1咋算都等于2,可是实际当中就有可能是3,因为它忽略了实际硬件上的状况
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:418
  • 最近打卡:2025-05-09 08:54:03
已绑定手机

39

主题

2015

回帖

6877

积分

论坛元老

积分
6877
发表于 2023-11-21 11:02:07 | 显示全部楼层


STC芯片使用多级流水线结构,修改IO口状态指令后面需要等待2个时钟周期再去读取:
  1.     while(1)
  2.     {
  3.         if(P32 == 0)
  4.         {
  5.             delay_ms(10);
  6.             if(P32 == 0)
  7.             {
  8.                 printf("P6=0x%02bx\r\n", P6);
  9.                 P6 = ~(~P6<<1);
  10.                 _nop_();
  11.                 _nop_();
  12.                 i = P6;
  13.                 printf("i=0x%02bx\r\n", i);
  14.                 while(P32 == 0);
  15.             }
  16.         }
  17.     }
复制代码

这样就能获取修改后的状态:
截图202311211057076413.jpg

规格书上也有相应的介绍:
截图202311211101021469.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-05-08 07:41:36

45

主题

381

回帖

1595

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1595
发表于 2023-11-21 15:38:20 | 显示全部楼层
乘风*** 发表于 2023-11-21 11:02
STC芯片使用多级流水线结构,修改IO口状态指令后面需要等待2个时钟周期再去读取:

这样就能获取修改后的 ...

这两个_nop_()指令,其实是给端口改变一个时间,毕竟端口内部也是硬件组成的,锁存器里的值改变后不会立马反映到端口上,所以此时所有针对端口的操作比如Pn &=,Pn |= 等操作都需要增加_nop_()函数,这样Pn &=,Pn |= 的值才会做出更改。Pn &=,Pn |= 这类的操作都是先读取端口,根据端口的状态再进行更改锁存器里的值。如果连续对端口值进行如Pn &=,Pn |=等操作而不加_nop_()的话,端口状态其实并不会如理论计算那样是最后一次更改的状态,有可能是连续更改最后一次更改前两个或者前三个时的状态。
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-9 10:59 , Processed in 0.121275 second(s), 94 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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