📄 xram.c
字号:
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include <c8051f020.h> // SFR declarations
#include <intrins.h>
//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------
sbit BUZ = P3^5;
unsigned char xdata *point;
//------------------------------------------------------------------------------------
// Function PROTOTYPES
//------------------------------------------------------------------------------------
void PORT_Init (void);
/***************************************************************************************
函数名称: void sleep_ms(WORD count)
功能描述: 延时
输入: WORD count(所要延时的长度)
输出: 无
全局变量: 无
调用模块: _nop_()
***************************************************************************************/
void sleep_ms(unsigned char count)
{
unsigned char ii,jj;
for(ii=0;ii<count;ii++)
{
for(jj=0;jj<250;jj++)
_nop_();
}
}
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
void main (void) {
unsigned char k,WrData,RdData;
/*无效看门狗*/
WDTCN = 0xde;
WDTCN = 0xad;
PORT_Init(); /*初始化端口*/
P6=0x00;
P5=0x00;
WrData=0x01; /*待写数据变量*/
point=0x0000; /*地址指针*/
for(k=0;k<0x10;k++) /*写十个数据*/
{
*point=WrData; /*写数据到RAM*/
point++;
WrData++;
}
WrData=0x01;
point=0x0000;
for(k=0;k<0x10;k++) /*读出比较*/
{
RdData=*point; /*读数据*/
if(RdData!=WrData){ /*是否出错*/
BUZ = 0; /*蜂鸣器响*/
sleep_ms(250);
BUZ = 1; /*蜂鸣器灭*/
}
_nop_();
WrData++;
point++;
_nop_();
}
_nop_();
}
/***************************************************************************************
函数名称: void PORT_Init(void)
功能描述: 初始化I/O
输入: 无
输出: 无
全局变量: XBR2,P74OUT,EMI0CF,EMI0TC,P3MDOUT
调用模块:
***************************************************************************************/
void PORT_Init (void)
{
XBR2 = 0x40; /*使能交叉开关和弱上拉*/
P74OUT |= 0xff; /*使能P4~P7推挽输出*/
EMI0CF |= 0x2c; /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/
EMI0TC |= 0x6c; /*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
P3MDOUT |= 0xdf; /*使能P3.5推挽输出*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -