打印
[PIC®/AVR®/dsPIC®产品]

如何使用PIC12F1571的HEF memory功能?

[复制链接]
1527|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 AAFREEZE 于 2019-1-4 12:58 编辑

我现在在使用PIC12F1571作为项目的主控MCU,现需要**功能保存按键档位状态。
我使用了MCC已生成memory的文件,但实际调用读写程序没有实现功能,是否我使用上有问题呢?
烦请大神们解答!!谢谢!!
#define Addr 0X0010                 //memory地址
#define savevalue  0X00AA           //memory测试数据
unsigned int keysaveaddr;                   //存储地址定义
unsigned int Buf[ERASE_FLASH_BLOCKSIZE];    //定义指向擦除flash块大小的指针
unsigned int Writedata;                     //写入数据
unsigned int readword;                      //读取数据

void Lowlight()
{
    Highflag = 0;
    Lowflag = 1;
    if(keyvalue == 1)                   //低亮档a
    {                                   //输出1:5% 其他:0
        light_timer = 0;                //5%使用PWM产生,20ms
        PWM_EN = 1;
        PWMduty = Lowlight1;
        output2_SetLow();
        output3_SetLow();
        output4_SetLow();
        //memory        数据存储
        Writedata = savevalue;
        keysaveaddr = Addr;
        FLASH_EraseBlock(keysaveaddr);                               //memory 擦除
        delay(10);
        FLASH_WriteWord(keysaveaddr, Buf, Writedata);         //memory   写数据
        delay(10);
    }
    else if(keyvalue == 2)                   //低亮档b
    {                                   //输出2:100% 其他:0
        output2_SetHigh();
        PWM_EN = 0;
        light_timer = 0;
        output1_SetLow();
        output3_SetLow();
        output4_SetLow();  
    }
    else if(keyvalue == 3)                   //低亮档c
    {                                   //输出3:100% 其他:0
        output3_SetHigh();
        output1_SetLow();
        output2_SetLow();
        output4_SetLow();
    }
    else if(keyvalue == 4)                   //低亮档d
    {                                   //输出4:100% 其他:0
        output4_SetHigh();
        output1_SetLow();
        output2_SetLow();
        output3_SetLow();
    }
    if(keyvalue == 5)                   //低亮档e
    {                                   //输出1:爆闪8Hz(占空80%) 其他0
        light_timer = 0;                //100ms输出high,25ms输出low
        //Pwm_timer = 0;                //
        //T0125ms = 0;
        //PWM_EN = 1;
        //PWMduty = Lowlight5;
        // PWM8Hz = 1;
        P8Hz_EN = 1;
        output2_SetLow();
        output3_SetLow();
        output4_SetLow();
        
    }
}

void main(void)
{
    // initialize the device
   
    SYSTEM_Initialize();
    keyvalue = 1;
   
    keysaveaddr == Addr;
    readword = FLASH_ReadWord(keysaveaddr);        //memory  读
    if(readword == savevalue)
    {
        output2_SetHigh();
        output1_SetLow();
        output3_SetLow();
        output4_SetLow();
    }
    else
    {
        Highlight();
    }

memory.rar

3.84 KB

mcc生成memory文件

沙发
xinpian101| | 2019-1-4 15:43 | 只看该作者
应该用Flash编程吧?

使用特权

评论回复
板凳
xinpian101| | 2019-1-4 15:44 | 只看该作者

使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝