📄 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 + -