?? cunchu.#1
字號:
#include<main.H>
//#include <stdio.h>
#include <intrins.h>
//#include <string.h>
//#include <stdarg.h>
void PORT_Init (void)
{
SFRPAGE=0x0F;
XBR0 = 0x05; //UART0,SMbus0接到端口引腳
XBR1 = 0x04; //外部中斷0接到端口引腳(P0.4)
//XBR0 = 0x04; //使能UART0
//XBR1 = 0x00;
XBR2 = 0x40; // 使能交叉開關和弱上拉
//P0MDOUT |=0x0D;
}
void cunchu_Init()
{
SFRPAGE=0x0F;
// Enable crossbar and weak pull-ups
P7MDOUT =0xFF;
P6MDOUT =0xFF;
P5MDOUT =0xFF;
P4MDOUT |=0xCF;
P1MDOUT|= 0x80;//P1.7為160D的片選端
P3MDOUT|= 0x01;//P3.0為160D的RESET端
P3MDOUT&= 0xFD;//P3.1為160D的BUSY端
P3|=0x02;
SFRPAGE=0x00;
EMI0TC = 0x21;
EMI0CN = 0xFF;
EMI0CF = 0x34; //EMIF0CF=00110100 使用P4到P7口 非復用方式 不帶塊選擇的分片方式
}
//-----------------------------------------------------------------------
// 讀寫子程序
//-----------------------------------------------------------------------
unsigned char flash_readchar(unsigned int addrh,unsigned int ADDR) //讀SRAM子程序
{
unsigned char ch;
SFRPAGE=0x0F;
RDY_BUSY
chip_select //enable DataFlash
P4=(P4&0xF0)|(addrh&0x0F); //定義地址A16--A19
ADDRHL = ADDR>>8; //輸出要讀數據的地址高8位
ADDRL = ADDR; //輸出要讀數據的地址低8位
P7MDOUT=0x00; //使能P7數據口為輸入狀態,先將P7口設置為漏極開路,
DATA = 0xFF ; //再向P7口寫入‘1’
NOWR
RD;
_nop_(); //使能讀信號
ch = DATA; //讀入數據
NORD; //使讀信號無效
chip_noselect
return ch;
}
//----------------------------------------------------------
void flash_writechar(unsigned long addr,unsigned char ch)
{
SFRPAGE=0x0F;
RDY_BUSY
chip_select //enable DataFlash
P4=(P4&0xF0)|((addr>>16)&0x0F); //定義地址A16--A19
ADDRHL = addr>>8; //輸出要讀數據的地址高8位
ADDRL = addr; //輸出要讀數據的地址低8位
P7MDOUT=0xFF; //使能P7數據口為推挽輸出狀態
DATA = ch; //輸出數據
NORD
WR //使能寫入信號
_nop_();
NOWR //是寫入信號無效
chip_noselect
}
void flash_writecom(unsigned int ADDR,unsigned char ch)
{
SFRPAGE=0x0F;
RDY_BUSY
chip_select //enable DataFlash
ADDRHL = ADDR>>8; //輸出要讀數據的地址高8位
ADDRL = ADDR; //輸出要讀數據的地址低8位
P7MDOUT=0xFF; //使能P7數據口為推挽輸出狀態
DATA = ch; //輸出數據
NORD
WR //使能寫入信號
_nop_();
NOWR //是寫入信號無效
chip_noselect
}
/*void sram_write ( unsigned int addh ,unsigned int addr,unsigned int in )
{ unsigned char ch11,ch22;
ch11=in&0x00FF;
ch22=in>>8;
sram_writechar(addh,addr,ch11);
addr++;
sram_writechar(addh,addr,ch22);
}*/
//-------------------------------------------------------------
//參數addr是起始地址,Inarry是數組名,arry是傳送數據的長度
void flash_write( unsigned long addr,unsigned int *Inarry,unsigned int arry)
{
unsigned char ch11,ch22;
unsigned int i;
flash_writecom(0xAAA,0xAA); //write program command
flash_writecom(0x555,0x55);
flash_writecom(0xAAA,0xA0);
for(i=0;i<arry;i++)
{ch11=Inarry[i]&0x00FF;
ch22=Inarry[i]>>8;
flash_writechar(addr+i,ch11);
addr++;
flash_writechar(addr+i,ch22);
}
}
/*void flash_writesample ( unsigned long addr,unsigned int number,unsigned int *Inarry,unsigned int arry)
{
flash_writeyizhu (addr+number*arry,Inarry, arry);
}*/
unsigned int flash_read(unsigned int addh,unsigned int addr)
{ volatile unsigned char ch1=0,ch2=0;
volatile unsigned int ch=0,ch3=0,ch4=0;
ch1=flash_readchar(addh,addr);
addr++;
ch2=flash_readchar(addh,addr);
ch3=ch2;
ch4=ch1;
ch=((ch3<<8)|ch4);
return ch;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -