[PIC®/AVR®/dsPIC®产品] 如何使用PIC12F1571的HEF memory功能?

[复制链接]
1687|2
 楼主| AAFREEZE 发表于 2019-1-4 12:55 | 显示全部楼层 |阅读模式
本帖最后由 AAFREEZE 于 2019-1-4 12:58 编辑

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

  7. void Lowlight()
  8. {
  9.     Highflag = 0;
  10.     Lowflag = 1;
  11.     if(keyvalue == 1)                   //低亮档a
  12.     {                                   //输出1:5% 其他:0
  13.         light_timer = 0;                //5%使用PWM产生,20ms
  14.         PWM_EN = 1;
  15.         PWMduty = Lowlight1;
  16.         output2_SetLow();
  17.         output3_SetLow();
  18.         output4_SetLow();
  19.         //memory        数据存储
  20.         Writedata = savevalue;
  21.         keysaveaddr = Addr;
  22.         FLASH_EraseBlock(keysaveaddr);                               //memory 擦除
  23.         delay(10);
  24.         FLASH_WriteWord(keysaveaddr, Buf, Writedata);         //memory   写数据
  25.         delay(10);
  26.     }
  27.     else if(keyvalue == 2)                   //低亮档b
  28.     {                                   //输出2:100% 其他:0
  29.         output2_SetHigh();
  30.         PWM_EN = 0;
  31.         light_timer = 0;
  32.         output1_SetLow();
  33.         output3_SetLow();
  34.         output4_SetLow();  
  35.     }
  36.     else if(keyvalue == 3)                   //低亮档c
  37.     {                                   //输出3:100% 其他:0
  38.         output3_SetHigh();
  39.         output1_SetLow();
  40.         output2_SetLow();
  41.         output4_SetLow();
  42.     }
  43.     else if(keyvalue == 4)                   //低亮档d
  44.     {                                   //输出4:100% 其他:0
  45.         output4_SetHigh();
  46.         output1_SetLow();
  47.         output2_SetLow();
  48.         output3_SetLow();
  49.     }
  50.     if(keyvalue == 5)                   //低亮档e
  51.     {                                   //输出1:爆闪8Hz(占空80%) 其他0
  52.         light_timer = 0;                //100ms输出high,25ms输出low
  53.         //Pwm_timer = 0;                //
  54.         //T0125ms = 0;
  55.         //PWM_EN = 1;
  56.         //PWMduty = Lowlight5;
  57.         // PWM8Hz = 1;
  58.         P8Hz_EN = 1;
  59.         output2_SetLow();
  60.         output3_SetLow();
  61.         output4_SetLow();
  62.         
  63.     }
  64. }

  65. void main(void)
  66. {
  67.     // initialize the device
  68.    
  69.     SYSTEM_Initialize();
  70.     keyvalue = 1;
  71.    
  72.     keysaveaddr == Addr;
  73.     readword = FLASH_ReadWord(keysaveaddr);        //memory  读
  74.     if(readword == savevalue)
  75.     {
  76.         output2_SetHigh();
  77.         output1_SetLow();
  78.         output3_SetLow();
  79.         output4_SetLow();
  80.     }
  81.     else
  82.     {
  83.         Highlight();
  84.     }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xinpian101 发表于 2019-1-4 15:43 | 显示全部楼层
应该用Flash编程吧?
xinpian101 发表于 2019-1-4 15:44 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

2

主题

7

帖子

0

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