在主函数中的 exsample(void)里面代码执行到delayms就卡死在循环里面程序不执行了,实在搞不明白什么原因了,在这里求一下指点
代码如下:
//-------------------------------------------------------------------------------
#include <c8051f060.h>
#include <intrins.h>
#include "fun.h"
//-------------------------------------------------------------------------------
//
sbit CDPIN=P1^3;
sbit CEPIN=P1^2;
sbit WRPIN=P1^0;
sbit RDPIN=P1^1;
//-------------------------------------------------------------------------------
//
unsigned char XPOS; //列方向LCD点阵位置指针
unsigned char YPOS; //行方向LCD点阵位置指针
unsigned char code yp[9]={0,16,32,48,64,80,96,112,128};
bit CharImageReverse; //字符及图形的反显控制,0(正常显示),1(反显)
#define XDOTS 240 //图形空间X方向大小
#define YDOTS 128 //图形空间X方向大小
void Delayms(unsigned int MS)
{
unsigned int i,j;
for( i=0;i<MS;i++)
for(j=0;j<2700;j++);
}
void delay(unsigned int tim)
{
unsigned int aa=tim;
if(aa>0)aa--;
}
void OSCILLATOR_Init (void)
{
char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = CONFIG_PAGE; // set SFR page
OSCICN |= 0x03; // Configure internal oscillator for
// its maximum frequency (24.5 Mhz)
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
}
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
char old_SFRPAGE = SFRPAGE;
SFRPAGE = CONFIG_PAGE; // Switch to configuration page
P2MDIN |= 0XFF; //P2设为数字输入
P1MDIN |= 0XFF;
P1MDOUT |=0Xf0;
P1=0X0f;
P2MDOUT |=0X00;
P2=0Xff;
XBR2 = 0x40; // Enable crossbar and weak pull-ups
SFRPAGE = old_SFRPAGE; // restore SFRPAGE
}
//-------------------------------------------------------------------------------
void main(void)
{
OSCILLATOR_Init ();
PORT_Init ();
lcdreset(); //初始化液晶显示控制器
exsample(); //演示程序
while(1)
{
_nop_();
}
}
void exsample(void) //演示程序
{
//0.演示前的准备,将LCD液晶显示全部清空
CharImageReverse=0; //反显关闭
lcdfill(0); //清屏