• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: 其他
  • 标签: IC卡  水表  

资源简介

IC卡水表的源程序, MCU用MSP430单片机+LCD液晶屏 +读卡+计量+电机控制

资源截图

代码片段和文件信息

//****************************************************************************
//  MSP430-41X Demo - Flash In-System Programming 
//
//  Description; This program first erases flash seg A then it increments all
//  values in seg A then it erases seg B then  copies seg A to seg B.
//  Assumed MCLK 550kHz - 900kHz.
//
//               MSP430F413
//            -----------------
//        /|\|              XIN|-  
//         | |                 | 
//         --|RST          XOUT|-
//           |                 |
//
//  Donghai CHeng
//  Lierda Inc
//  NOVEMBER 2004
//  Built with IAR embedded Workbench Version: 2.21B
//******************************************************************************

#include “msp430x41x.h“

/****************擦除信息断数据*************************/
void info_flash_erase(unsigned char *erase_address)
{
 FCTL2 = FWKEY + FSSEL_1 + FN4;
 FCTL1 = FWKEY + ERASE;
 FCTL3 = FWKEY;
 *erase_address = 0xFF;
}

/**********将RAM区数据copy至Flash信息段***************/
void info_flash_copy(unsigned char *source_addressunsigned char *target_addressunsigned int flash_length)
{
 unsigned int i;
 FCTL2 = FWKEY + FSSEL_1 + FN4;
 FCTL3 = FWKEY;
 FCTL1 = FWKEY + WRT;
 for (i=0; i  {
    *target_address++ = *source_address++;         // Write value to flash
  }
 FCTL1 = FWKEY;                  // Clear WRT bit
 FCTL3 = FWKEY + LOCK; 
}

/**********连续写数据至Flash信息段*****************/
void info_flash_write(unsigned char targetunsigned char *target_addressunsigned int flash_length)
{
 unsigned int i;
 FCTL2 = FWKEY + FSSEL_1 + FN4;
 FCTL3 = FWKEY;
 FCTL1 = FWKEY + WRT;
 for (i=0; i  {
    *target_address++= target;         // Write value to flash
  }
 FCTL1 = FWKEY;                  // Clear WRT bit
 FCTL3 = FWKEY + LOCK;
}

/**********将Flash信息段数据copy至RAM区************/
void flash_to_ram_copy(unsigned char *source_addressunsigned char *target_addressunsigned int length)
{
    unsigned int i;
    for (i=0; i    {
     *target_address++= *source_address++;
    }
}

/***************数据从A段copy 至B段**************/
void infoA_to_infoB(void)     
{
 unsigned int i;
 char *Flash_ptrA;
 char *Flash_ptrB;
 Flash_ptrA=(char *) 0x1080;
 Flash_ptrB=(char *) 0x1000;
 info_flash_erase((unsigned char *)0x1080);
 FCTL2 = FWKEY + FSSEL_1 + FN4;
 FCTL3 = FWKEY;
 FCTL1 = FWKEY + WRT;
 for (i=0; i<128; i++)
  {
    *Flash_ptrA++=*Flash_ptrB++ ;         // Write value to flash
  }
 FCTL1 = FWKEY;                  // Clear WRT bit
 FCTL3 = FWKEY + LOCK;
}

/****主程序*****/
void main(void)
{
  unsigned char Data[10]={12345678910};        //数据缓存区
  WDTCTL = WDTPW + WDTHOLD;
  SCFQCTL=31;                 //MCLK=32*ACLK=1024KHzDCO+=0
  SCFI0=0;
  FLL_CTL0 |= XCAP18PF;
  
  info_flash_write(0x11(unsigned char *)0x100010);     //从从0x1000开始连续写10个字节0x11;
  info_flash_erase((unsigned char *)0x1000);               //擦除B段数据(0x1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3441  2005-01-10 10:50  Flash_Operation.c

     文件      11545  2005-02-21 11:38  IC_Card+Measure+LCD.c

     文件       7172  2005-01-13 14:32  Motor_Operation+LCD.c

----------- ---------  ---------- -----  ----

                22158                    3


评论

共有 条评论