[DemoCode下载] N76E003读取UCID的方法

[复制链接]
3239|11
 楼主| huahuagg 发表于 2017-11-14 16:18 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Read actual bandgap value by IAP command
  14. //***********************************************************************************************************
  15. #include "N76E003.h"
  16. #include "Common.h"
  17. #include "Delay.h"
  18. #include "SFR_Macro.h"
  19. #include "Function_define.h"

  20. UINT8 UCID_BYTE(UINT8 Addr)
  21. {
  22.                 UINT8 DATATEMP;
  23.                 set_IAPEN;
  24.                 IAPAL = Addr+0x20;                        //The Acture UCID addrss is begin from 0x20
  25.     IAPAH = 0x00;
  26.     IAPCN = READ_UID;
  27.     set_IAPGO;
  28.                 DATATEMP = IAPFD;
  29.                 clr_IAPEN;
  30.                 return DATATEMP;
  31. }

  32. void main(void)
  33. {
  34.         UINT8 READ1,READ2;
  35.         Set_All_GPIO_Quasi_Mode;
  36.         InitialUART0_Timer3(115200);
  37.        
  38. //---------toggle GPIO1---------       
  39.         clr_GPIO1;
  40.         Timer0_Delay1ms(100);
  41.         set_GPIO1;
  42.         Timer0_Delay1ms(100);
  43.         clr_GPIO1;
  44.         Timer0_Delay1ms(100);
  45.         set_GPIO1;
  46.         Timer0_Delay1ms(100);
  47. //---------end toggle GPIO1---------
  48.        
  49.         READ1 = UCID_BYTE(0x02);
  50.         READ2 = UCID_BYTE(0x05);
  51.        
  52.         while(1)
  53.         {
  54. //                        printf ("\n Value = 0x%bx",READ1);
  55.         }

  56. }


 楼主| huahuagg 发表于 2017-11-14 16:19 | 显示全部楼层
之前大家都看到过那个读取UID的方法,再来重温一下,对比两者。
 楼主| huahuagg 发表于 2017-11-14 16:19 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Read actual bandgap value by IAP command
  14. //***********************************************************************************************************
  15. #include "N76E003.h"
  16. #include "Common.h"
  17. #include "Delay.h"
  18. #include "SFR_Macro.h"
  19. #include "Function_define.h"

  20. UINT8 UID_BYTE(UINT8 Addr)
  21. {
  22.                 UINT8 DATATEMP;
  23.                 set_IAPEN;
  24.                 IAPAL = Addr;
  25.     IAPAH = 0x00;
  26.     IAPCN = READ_UID;
  27.     set_IAPGO;
  28.                 DATATEMP = IAPFD;
  29.                 clr_IAPEN;
  30.                 return DATATEMP;
  31. }

  32. void main(void)
  33. {
  34.         UINT8 READ1,READ2;
  35.         Set_All_GPIO_Quasi_Mode;
  36.         InitialUART0_Timer3(115200);
  37.        
  38. //---------toggle GPIO1---------       
  39.         clr_GPIO1;
  40.         Timer0_Delay1ms(100);
  41.         set_GPIO1;
  42.         Timer0_Delay1ms(100);
  43.         clr_GPIO1;
  44.         Timer0_Delay1ms(100);
  45.         set_GPIO1;
  46.         Timer0_Delay1ms(100);
  47. //---------end toggle GPIO1---------
  48.        
  49.         READ1 = UID_BYTE(0x02);
  50.         READ2 = UID_BYTE(0x05);
  51.        
  52.         while(1)
  53.         {
  54. //                        printf ("\n Value = 0x%bx",READ1);
  55.         }

  56. }
 楼主| huahuagg 发表于 2017-11-14 16:22 | 显示全部楼层
看到了吗,几乎几乎是一样的。
只是
IAPAL = Addr+0x20;                        //The Acture UCID addrss is begin from 0x20
区别在这里。
 楼主| huahuagg 发表于 2017-11-14 16:23 | 显示全部楼层
所以我们完全可以把传递进去的地址修改一下就下了,这个函数可以保持不变。
21mengnan 发表于 2017-11-14 20:56 | 显示全部楼层
这个事情告诉我们,做事情可以学会模块化的,尽量让参数不同,不要让函数不同。
稳稳の幸福 发表于 2017-11-15 16:57 | 显示全部楼层
固化的好几个ID,可以用于唯一编号确认。
643757107 发表于 2017-11-15 17:30 | 显示全部楼层
这个要好好研究一下了,没看太懂。
643757107 发表于 2017-11-15 17:30 | 显示全部楼层
应该是一些宏替换了好几个操作部分。
yiy 发表于 2017-11-16 17:06 | 显示全部楼层
看不明白的看包含的头文件,里面应该有。
xixi2017 发表于 2017-11-16 19:36 | 显示全部楼层
UINT8 UCID_BYTE(UINT8 Addr)
这个函数很关键,直接用就行了。
天灵灵地灵灵 发表于 2017-11-17 19:33 | 显示全部楼层
函数封装的很彻底方便移植。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1430

帖子

2

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