[技术问答] 有个例子看不懂

[复制链接]
 楼主| huangcunxiake 发表于 2020-7-9 23:16 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Website: http://www.nuvoton.com
  8. //  E-Mail : MicroC-8bit@nuvoton.com
  9. //***********************************************************************************************************

  10. //***********************************************************************************************************
  11. //  File Function: ML51 simple GPIO toggle out demo code
  12. //***********************************************************************************************************

  13. #include "ML51.h"

  14. /**
  15. * [url=home.php?mod=space&uid=247401]@brief[/url]       GPIO input output demo
  16. * @param       None
  17. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  18. * [url=home.php?mod=space&uid=1543424]@Details[/url]     GPIO toggle and UART0 TXD0 send out.
  19. */
  20. void main (void)
  21. {

  22.       MFP_P46_GPIO;
  23.       P31_PUSHPULL_MODE;
  24.       MFP_P50_GPIO;
  25.       P50_PUSHPULL_MODE;
  26.       MFP_P51_GPIO;
  27.       P51_PUSHPULL_MODE;

  28. /*
  29. For UART0 P3.1 as TXD output setting
  30. * include uart.c in Common Setting for UART0
  31. */
  32.     MFP_P31_UART0_TXD;                              // UART0 TXD use P1.6
  33.     P31_QUASI_MODE;                                  // set P1.6 as Quasi mode for UART0 trasnfer
  34.     UART_Open(24000000,UART0_Timer1,115200);        // Open UART0 use timer1 as baudrate generate and baud rate = 115200

  35.     while(1)
  36.     {
  37.       SFRS = 0;
  38.       P46 ^= 1;
  39.       while (P5|CLR_BIT6); // P56 = 1;
  40.       while (!(P5&SET_BIT6)); // P56 = 0;

  41. /* include timer.c for delay setting */
  42.       Timer2_Delay(24000000,128,100,1000);
  43.       UART_Send_Data(UART0,0x55);  
  44.     }
  45.   
  46. }
while (P5|CLR_BIT6); // P56 = 1;
while (!(P5&SET_BIT6)); // P56 = 0;
这里两句怎么理解
查了下
CLR是该位为0,SET为该位为1
那么跟P5或了之后,不是没有任何影响吗,怎么能判断是否等于1呢?根据定义这个会一直为真啊。。
还有下面这个zu56为1,组合就为真,取反为假,,跳过了
如果56为0,那么为假,取反为真,等待。。
这个可以懂。上面这个不懂了。

 楼主| huangcunxiake 发表于 2020-7-9 23:17 | 显示全部楼层
第一个的或换成位与我觉得就对了。
 楼主| huangcunxiake 发表于 2020-7-9 23:18 | 显示全部楼层
大家怎么看?是不是新唐的程序员搞错了这个地方。
jasontu 发表于 2020-7-10 07:51 | 显示全部楼层
应该写成
while (P5&SET_BIT6); //while loop, when P56 == 1
while (!(P5&SET_BIT6)); //while loop, when P56 == 0

幸福小强 发表于 2020-7-13 20:22 | 显示全部楼层
jasontu 发表于 2020-7-10 07:51
应该写成
while (P5&SET_BIT6); //while loop, when P56 == 1
while (!(P5&SET_BIT6)); //while loop, when ...

是啊,厂家的敲代码的经常犯错,估计写的代码都没测试
幸福小强 发表于 2020-7-13 20:22 | 显示全部楼层
确实是不对的,呵呵,太明显的错误了,估计写代码的没有测试。
tfqi 发表于 2020-8-3 18:08 | 显示全部楼层
低级错误啊这是
wiba 发表于 2020-8-3 18:08 | 显示全部楼层
看来官方例程也不一定都是对的
zljiu 发表于 2020-8-3 18:08 | 显示全部楼层
学习了 我也要注意
coshi 发表于 2020-8-3 18:08 | 显示全部楼层
他们要出勘误表了
aoyi 发表于 2020-8-3 18:09 | 显示全部楼层
楼主好细心啊
幸福小强 发表于 2020-8-3 19:21 | 显示全部楼层
最近我也学了一些,发现错误虽然有,但是自己都能搞定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

222

主题

3700

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部

222

主题

3700

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部