打印
[DemoCode下载]

N76E003读取UCID的方法

[复制链接]
3078|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huahuagg|  楼主 | 2017-11-14 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

//***********************************************************************************************************
//  File Function: N76E003 Read actual bandgap value by IAP command
//***********************************************************************************************************
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

UINT8 UCID_BYTE(UINT8 Addr)
{
                UINT8 DATATEMP;
                set_IAPEN;
                IAPAL = Addr+0x20;                        //The Acture UCID addrss is begin from 0x20
    IAPAH = 0x00;
    IAPCN = READ_UID;
    set_IAPGO;
                DATATEMP = IAPFD;
                clr_IAPEN;
                return DATATEMP;
}

void main(void)
{
        UINT8 READ1,READ2;
        Set_All_GPIO_Quasi_Mode;
        InitialUART0_Timer3(115200);
       
//---------toggle GPIO1---------       
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
//---------end toggle GPIO1---------
       
        READ1 = UCID_BYTE(0x02);
        READ2 = UCID_BYTE(0x05);
       
        while(1)
        {
//                        printf ("\n Value = 0x%bx",READ1);
        }

}


沙发
huahuagg|  楼主 | 2017-11-14 16:19 | 只看该作者
之前大家都看到过那个读取UID的方法,再来重温一下,对比两者。

使用特权

评论回复
板凳
huahuagg|  楼主 | 2017-11-14 16:19 | 只看该作者
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

//***********************************************************************************************************
//  File Function: N76E003 Read actual bandgap value by IAP command
//***********************************************************************************************************
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

UINT8 UID_BYTE(UINT8 Addr)
{
                UINT8 DATATEMP;
                set_IAPEN;
                IAPAL = Addr;
    IAPAH = 0x00;
    IAPCN = READ_UID;
    set_IAPGO;
                DATATEMP = IAPFD;
                clr_IAPEN;
                return DATATEMP;
}

void main(void)
{
        UINT8 READ1,READ2;
        Set_All_GPIO_Quasi_Mode;
        InitialUART0_Timer3(115200);
       
//---------toggle GPIO1---------       
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
//---------end toggle GPIO1---------
       
        READ1 = UID_BYTE(0x02);
        READ2 = UID_BYTE(0x05);
       
        while(1)
        {
//                        printf ("\n Value = 0x%bx",READ1);
        }

}

使用特权

评论回复
地板
huahuagg|  楼主 | 2017-11-14 16:22 | 只看该作者
看到了吗,几乎几乎是一样的。
只是
IAPAL = Addr+0x20;                        //The Acture UCID addrss is begin from 0x20
区别在这里。

使用特权

评论回复
5
huahuagg|  楼主 | 2017-11-14 16:23 | 只看该作者
所以我们完全可以把传递进去的地址修改一下就下了,这个函数可以保持不变。

使用特权

评论回复
6
21mengnan| | 2017-11-14 20:56 | 只看该作者
这个事情告诉我们,做事情可以学会模块化的,尽量让参数不同,不要让函数不同。

使用特权

评论回复
7
稳稳の幸福| | 2017-11-15 16:57 | 只看该作者
固化的好几个ID,可以用于唯一编号确认。

使用特权

评论回复
8
643757107| | 2017-11-15 17:30 | 只看该作者
这个要好好研究一下了,没看太懂。

使用特权

评论回复
9
643757107| | 2017-11-15 17:30 | 只看该作者
应该是一些宏替换了好几个操作部分。

使用特权

评论回复
10
yiy| | 2017-11-16 17:06 | 只看该作者
看不明白的看包含的头文件,里面应该有。

使用特权

评论回复
11
xixi2017| | 2017-11-16 19:36 | 只看该作者
UINT8 UCID_BYTE(UINT8 Addr)
这个函数很关键,直接用就行了。

使用特权

评论回复
12
天灵灵地灵灵| | 2017-11-17 19:33 | 只看该作者
函数封装的很彻底方便移植。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

138

主题

1251

帖子

2

粉丝