赛元单片机SC92F732x系列eeprom读写操作[以7321为例]
生活随笔
收集整理的這篇文章主要介紹了
赛元单片机SC92F732x系列eeprom读写操作[以7321为例]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目標:在0x0E區域寫入0x20,在0x2E區域寫入0x21,在0x4E區域寫入0x22
先放效果圖:
斷電后,將寫入程序刪掉,再上電:
代碼部分:
首先本代碼依據賽元官方DEMO代碼所作修改,官方地址:賽元芯片官方DEMO
main函數部分
#include "H/Function_Init.H" #include "stdio.h" /************************************************************** 說明: 1、Options for Target‘Target1’:BL51 Locate->Code Range:0x100,燒錄選項請選擇DISRST,復位腳作為普通IO使用; 2、改變TEST的定義,可以分別測試對應的功能; 3、注意:先在Function.H里面選擇測試型號(SC92F7320無LCD/LED和PWM功能) ***************************************************************/ #define Test 5 //BTM:0 EXTI:1 Timer:2 LCD:3 PWM:4 Uart0:5 ADC:7 IAP:8 extern uchar IapReadData; //存放讀取的IAP數據 void main(void) {IO_Init();WDTCON |= 0x10; //清看門狗Uart0_Init();printf("Write Data:\r\n0x0E->0x20\r\n0x2E->0x21\r\n0x4E->0x22\r\n");IAPWrite(0x0E,0x20,IapEPPROM);IAPWrite(0x2E,0x21,IapEPPROM);IAPWrite(0x4E,0x22,IapEPPROM);printf("waiting...\r\n");IapReadData = IAPRead(0x0E,IapEPPROM);IAPADE = 0x00; //IAP指針指回ROM區printf("Read 0x0E Data:%x\r\n",IapReadData);IapReadData = IAPRead(0x2E,IapEPPROM);IAPADE = 0x00; //IAP指針指回ROM區printf("Read 0x2E Data:%x\r\n",IapReadData);IapReadData = IAPRead(0x4E,IapEPPROM);IAPADE = 0x00; //IAP指針指回ROM區printf("Read 0x4E Data:%x\r\n",IapReadData);switch(Test){case 0: BTM_Test();break;case 1: EXTI_Test();break;case 2: Timer_Test();break;case 3: LCD_Test();break;case 4: PWM_Test();break;case 5: //Uart0_Test();break;case 7: ADC_Test();break;case 8: //IAP_Test(0x1fff,IapROM); //操作ROM,對地址0x1fff進行讀寫測試//IAP_Test(0x7f,IapEPPROM); //操作EPPROM,對地址0x7f進行讀寫測試break;default:break;} }IAP_INIT部分:
#include "H/Function_Init.H"//#define IapROM 0x00 //0x00:選擇ROM區操作 0x02:選擇EEPROM區操作 //#define IapEPPROM 0x02 //0x00:選擇ROM區操作 0x02:選擇EEPROM區操作 unsigned char code *IapAddr = 0x00;void IAPWrite(uint Addr,uchar Value,uchar IAPArea); uchar IAPRead(uint Addr,uchar IAPArea); uchar IapReadData = 0x00; //存放讀取的IAP數據/***************************************************** *函數名稱:void IAP_Test(uchar Address,uchar IAPArea) *函數功能:IAP測試 *入口參數:Address,IAPArea *出口參數:void *****************************************************/ void IAP_Test(uint Address,uchar IAPArea) {IAPWrite(Address,0xff,IAPArea);IapReadData = IAPRead(Address,IAPArea);IAPADE = 0x00; //IAP指針指回ROM區while(1){if(IapReadData == 0xff){P20 = ~P20;}else{P21 = ~P21;}} }/***************************************************** *函數名稱:void IAPWrite(uchar Addr,uchar Value,uchar IAPArea) *函數功能:IAP寫初始化 *入口參數:Addr,Value,IAPArea *出口參數:void *****************************************************/ //IAP寫操作 void IAPWrite(uint Addr,uchar Value,uchar IAPArea) { EA = 0;IAPDAT = Value; //寫入數據DataIAPADH = ((Addr>>8)&0X7F); //寫入地址的高5位IAPADL = Addr; //寫入地址的低8位IAPADE = IAPArea; //IAPArea=0x00:選擇ROM區操作 IAPArea=0x02:選擇EEPROM區操作IAPKEY = 240; //IAP開啟保護控制時間IAPCTL = 0x06; //CPU hold time為2ms,寫入操作命令_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();IAPADE = 0x00; //MOVC指向ROMEA = 1; } /***************************************************** *函數名稱:uchar IAPRead(uchar Addr,uchar IAPArea) *函數功能:IAP讀初始化 *入口參數:Addr,IAPArea *出口參數:ReadValue *****************************************************/ uchar IAPRead(uint Addr,uchar IAPArea) {uchar ReadValue = 0x00;EA = 0;IAPADE = IAPArea;ReadValue = *(IapAddr+Addr); //讀取的數據IAPADE = 0x00; //MOVC指向ROMEA = 1;return ReadValue; }function_INIT部分:
#ifndef _Function_Init_H_ #define _Function_Init_H_#include "SC92F732x_C.H" #include "intrins.H" #define uchar unsigned char #define uint unsigned int#define IapROM 0x00 //0x00:選擇ROM區操作 0x02:選擇EEPROM區操作 #define IapEPPROM 0x02 //0x00:選擇ROM區操作 0x02:選擇EEPROM區操作extern void IO_Init(void); extern void BTM_Test(void); extern void EXTI_Test(void); extern void Timer_Test(void); extern void LCD_Test(void); extern void PWM_Test(void); extern void ADC_Test(void); extern void IAP_Test(uint Address,uchar IAPArea);void Uart0_Init(void); void UartSendBit(unsigned char c);void IAPWrite(uint Addr,uchar Value,uchar IAPArea); uchar IAPRead(uint Addr,uchar IAPArea);/***************************************** 說明:選擇測試IC *****************************************/ #define SC92F7323 0 #define SC92F7322 1 #define SC92F7321 2 #define SC92F7320 3#define IC_MODEL SC92F7321#endif總結
以上是生活随笔為你收集整理的赛元单片机SC92F732x系列eeprom读写操作[以7321为例]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电源空间辐射CDN余量低_CDN法测试与
- 下一篇: 众辰变频器nz200t参数_【变频器 上