欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
松翰5703例程-ISP
[打印本頁]
作者:
hexinquan
時間:
2020-12-8 11:19
標題:
松翰5703例程-ISP
//-----------------------------------------------------------------------------
// FILE: ISP.c
//-----------------------------------------------------------------------------
// Copyright 2014 SONiX Technology Corp. All rights reserved.
//
// AUTHOR: SONIX
// DATE: 2015/08/16
// CheckSum = 0xC0BD
//
// The program is an example of ISP to implement it.
//
// ISP decription:
// ISP operation follow -
// Step 1. set start ROM Address
// Step 2. set start RAM Address
// Step 3. execute Page Erase and Write
//
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <SN8F5703.h>
#include "GenericTypeDefs.h"
#include <absacc.h>
#include <intrins.h> // for _nop_
//-----------------------------------------------------------------------------
//用戶可以修改這個常量值,即修改ISP的地址
//ISP每次寫入固定都是一頁(32BYTE)
//不管地址是否是一頁的開始,都從一頁的開始寫起,如果寫入數據不足一頁,剩余全部寫為0x00
//-----------------------------------------------------------------------------
#define L_ispaddr 0x02F0 //isp addr 0x02F0
unsigned char code MyBuf[32] _at_ L_ispaddr; //define 32byte 絕對地址
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
unsigned int j;
//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Global Variables
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void ISPSetROMAddr(UINT16 u16addr);
void ISPSetRAMAddr(UINT8 u8addr);
void ISPWritePage(void);
void ISPExecute(void);
//void ISPEraseAllROM(void);
void rdrom(void);
//-----------------------------------------------------------------------------
// Main loop
//-----------------------------------------------------------------------------
void main(void)
{
CLKSEL = 0x06; //Fcpu=Fosc/2=16M
CLKCMD = 0x69;
CKCON = 0x10; //2 cycles = 16M/2 =8M
WDTR = 0x5A; // clear watchdog if watchdog enable
P0 = 0;
P0M = 0;
P0UR = 0xFF;
P1 = 0;
P1M = 0;
P1UR = 0xFF;
P2 = 0;
P2M = 0;
P2UR = 0xFF;
j = 0;
ISPExecute(); // Program one page by ISP
rdrom(); //Read one page data
while (1)
{
WDTR = 0x5A; // clear watchdog if watchdog enable
// To Do ...
}
}
//-----------------------------------------------------------------------------
// 將ISP的數據讀出
//-----------------------------------------------------------------------------
void rdrom(void)
{
UINT8 u8data[32] = {0};
UINT8 i =0;
UINT romaddr = L_ispaddr;
for(i =0; i<32; i++)
{
u8data[i] = CBYTE[romaddr];
// u8data[i] = ((UINT8 volatile code*)(0))[romaddr]; 與上面一句等效
romaddr++;
}
}
//-----------------------------------------------------------------------------
// 將ROM中的數據ISP到ROM中
//-----------------------------------------------------------------------------
void ISPExecute(void)
{
UINT8 u8data[32] = {0};
UINT8 i =0;
// step 1 : Get data
for (i =0; i<32; i++)
{
u8data[i] = j; // write data for test,用戶可以自夾薷暮寫入需要的數據
j++;
}
// step 2 : Set RAM addr of data
i = u8data; // get start addr
ISPSetRAMAddr(i);
// step 3 : Set ROM start addr (Range is 0x0000~0x03FF)
ISPSetROMAddr(L_ispaddr); //addr 0x0200
// step 4 : Progarm one page (32 bytes)
ISPWritePage();
//erase all USER ROM
//ISPEraseAllROM();
}
//-----------------------------------------------------------------------------
// Function: void ISPSetROMAddr Addr(UINT16 u16addr)
// Description:
// set start ROM Address (Range is 0x0000~0x03FF)
// ROM is 16k byte
//
// | set value | real rom addr |
// |-------------------------------|
// | 0x0000 -> 0x0000 |
// | 0x0002 -> 0x0020 |
// | 0x0004 -> 0x0040 |
// | 0x0050 -> 0x0500 |
// | 0x0100 -> 0x1000 |
//
//-----------------------------------------------------------------------------
void ISPSetROMAddr(UINT16 u16addr)
{
// set ROM addr
PEROML &= 0x0F;
PEROML |= (u16addr & 0x00F0);
PEROMH = (u16addr>>8);
}
//-----------------------------------------------------------------------------
// Function: void ISPSetRAMAddr(UINT8 u8addr)
// Description:
// set start RAM Address
// RAM is 256 byte
//
//-----------------------------------------------------------------------------
void ISPSetRAMAddr(UINT8 u8addr)
{
// set RAM addr
PERAM = u8addr;
}
//-----------------------------------------------------------------------------
// Function: void ISPEraseAllROM(void)
// Description:
// erase whole USER ROM
//
//-----------------------------------------------------------------------------
/*void ISPEraseAllROM(void)
{
// erase whole USER ROM
PECMD = 0x96;
PEROML |= 0x0A;
}*/
//-----------------------------------------------------------------------------
// Function: void ISPWritePage(void)
// Description:
// execute Page Erase and Write
//
//-----------------------------------------------------------------------------
void ISPWritePage(void)
{
// execute Page Erase and Write
PEROML |= 0x0A;
PECMD = 0x5A;
}
復制代碼
5703_ISP_20161103.rar
2020-12-8 11:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
39.33 KB, 下載次數: 6, 下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1