?? 2407-flash.c
字號:
#include "f2407_c.h" //引用頭部文件
#include "stdlib.h"
#define page_byte 1056
ioport unsigned int port0; //port100 address
#define FLASH port0
int PAGE10;
int j,k;
int p;
int maker,code,xx,cy,cy1;
int markdata[page_byte];
void system_init(); //聲明在程序中需要用到是函數
void flash(int row);
void flashID();
void wait();
//(1)主程序
main()
{
int wemp1,wemp2,wemp3,wemp4;
system_init(); //系統初始化子程序
flashID();
p=65;
flash(p);
//CAN初始化子程序
while(1)
{
int i;
int a,b,c,d;
for(p=0;p<64000;p++)
{
flash(p);
for(i=510;i<511;i++)
{
a=(markdata[i]&0xff);
b=(markdata[i+1]&0xff);
c=(markdata[i+2]&0xff);
//d=(markdata[i+3]&0xff);
//if((a==0xEB)&&(b==0x58)&&(c==0x90))
//if((a==0x00)&&(b==0x55)&&(c==0xAA))
if((a==0x55)&&(b==0xAA))
{
wait();
}
}
}
while(1)
{
}
}
}
void wait()
{
while(1)
{
}
}
//(2) 系統初始化子程序
void system_init()
{
asm(" setc SXM"); // 抑制符號位擴展
asm(" clrc OVM"); // 累加器中結果正常溢出
asm(" clrc CNF"); // B0被配置為數據存儲空間
asm(" setc INTM"); // 禁止所有中斷
SCSR1=0xED1; // CLKIN=12M,CLKOUT=2CLKIN=24M=2D1
SCSR2=0x0E;
WDCR=0x68; // 不使能看門狗,因為SCSR2中的WDOVERRIDE
// 即WD復位后的缺省值,故可以用
// 軟件禁止看門狗
MCRA=0x3; // IOPA3,IOPA4,IOPA5,IOPB端口配置為一般的I/O功能, TMS320LF240x的
MCRB=0x0DF; // 端口均為8位,MCRA為16位因此控制了IOPA和IOPB的設置
MCRC=0;
PB=0x2FFF; // IOPB端口設置為輸入方式
PA=0x03FF; //IOPA3,IOPA4,IOPA5 設置為輸出方式,且IOINEN=1,選通8路開關量輸入
PC=0xFFFF; // IOPB端口設置為輸入方式
PD=0xFFFF;
PE=0xFFFF;
PF=0xFFFF;
SCICCR=0x7; //1個停止位,不使能奇偶校驗,空閑線多處理
//器模式,8位字符
SCICTL1=0x13; //使能接收和發送,SLEEP=0 禁止休眠方式
//禁止接收錯誤中斷,TXWAKE=0 即沒有選定的發送特征
SCICTL2=0x2; //使能接收中斷
SCIHBAUD=0x1;
SCILBAUD=0x38; //波特率=9600B/S
SCICTL1=0x33; //使SCI脫離復位狀態
SCIPRI=0x60; //SCI中斷(接收和發送中斷)為低優先級中斷
PE=(PE&0xFFFE);
//IMR=0x010; // 開中斷優先級5
IFR=0x0FFFF; // 清除全部中斷標志,"寫1清0
//PB=(PB&BIT5F);
}
void flash(int row)
{
int i;
int Npage;
int column;
int columnh,rowh;
column=0;
columnh=((column>>8)|0xFF00);
rowh=((row>>8)|0xFF00);
row|=0xFF00;
PB &=BIT5F; //選擇FLASH
Npage=row;
PC |=BIT5; //245寫有效
for(j=0;j<0x0Ff;j++);
PB |=0x0F;
PB &=0xFFFD; //ALE-L
PB &=0xFFFC; //WE-L
port0=0x00;
PB |=0x01; //WE-H
PB |=0x0F; //-H
for(j=0;j<0x0FF;j++);
PB |=0x0F;
PB &=0xFFFB; //CLE-L
PB &=0xFFFA; //WE-L
port0=column;
PB |=0x01; //WE-H
PB |=0x0F;
PB &=0xFFFB;
PB &=0xFFFA;
port0=columnh;
PB |=0x01;
PB |=0x0F;
PB &=0xFFFB;
PB &=0xFFFA;
port0=row;
PB |=0x01;
PB |=0x0F;
PB &=0xFFFB;
PB &=0xFFFA;
port0=rowh;
PB |=0x01;
PB |=0x0F;
for(j=0;j<0x0FF;j++);
PB |=0x0F;
PB &=0xFFFD;
PB &=0xFFFC; //COM
port0=0x30;
PB |=0x01;
PB |=0x0F;
//PB |=0x0F;
for(j=0;j<0x0FF;j++);
PC &=BIT5F;
//for(i=Npage;i<(Npage+1024);i++)
for(j=0;j<0x0FFF;j++);
PC &=BIT5F;
for(i=0;i<1064;i++)
{
PB &=0xFFF1;
//for(j=0;j<0x04;j++);
markdata[i]=port0; //選擇FLASH
// markdata[i]=port0; //選擇FLASH
PB |=0x08;
//PB |=0x08;
// PB |=0x08;
//PB |=0x08;
}
PC |=BIT5;
PB |=BIT5; //選擇FLASH
}
void flashID()
{
PB &=BIT5F; //選擇FLASH
PC |=BIT5; //245寫有效
for(j=0;j<0x0Ff;j++);
PB |=0x0F;
PB &=0xFFFD; //ALE-L
PB &=0xFFFC; //WE-L
FLASH=0x90;
PB |=0x01; //WE-H
PB |=0x0F; //-H
PB |=0x0F;
PB &=0xFFFB; //CLE-L
PB &=0xFFFA; //WE-L
FLASH=0;
PB |=0x01; //WE-H
PB |=0x0F;
for(j=0;j<0x0f;j++);
PC &=BIT5F;
PB &=0xFFF1;
//for(j=0;j<0x04;j++);
maker=FLASH; //選擇FLASH
//maker=FLASH; //選擇FLASH
PB |=0x08;
// PB |=0x08;
//PB |=0x08;
// PB |=0x08;
PB &=0xFFF1;
//for(j=0;j<0x04;j++);
code=FLASH; //選擇FLASH
PB |=0x08;
//PB |=0x08;
//PB |=0x08;
// PB |=0x08;
PB &=0xFFF1;
// for(j=0;j<0x04;j++);
xx=FLASH; //選擇FLASH
PB |=0x08;
// PB |=0x08;
//PB |=0x08;
// PB |=0x08;
PB &=0xFFF1;
//for(j=0;j<0x04;j++);
cy=FLASH; //選擇FLASH
PB |=0x08;
//PB |=0x08;
//PB |=0x08;
//PB |=0x08;
PB &=0xFFF1;
//for(j=0;j<0x04;j++);
cy1=FLASH; //選擇FLASH
PB |=0x08;
// PB |=0x08;
// PB |=0x08;
//PB |=0x08;
PC |=BIT5;
PB |=BIT5; //選擇FLASH
}
// 直接返回中斷服務程序
void interrupt int1( )
{
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -