我今天做一个STC12C5A60S2单片机的动态内存申请程序:
#include"STC12C5A60S2.H"
#include"STDLIB.H"
#include"STRING.H"
#define ON_LCD 0x0C
#define OFF_LCD 0x08
#define CLEAR_LCD 0x01
#define INPUT_MODE 0x06
#define TEXT_SIZE 0x38 //8位,2行,5*7点阵
sbit RS=P2^5;
sbit RW=P2^6;
sbit E=P2^7;
sbit Back_Light=P4^5;
sbit feleer=P2^0; //探针
unsigned char code Text[]="DRAM_ASK_TEST";
unsigned char code Date[]="2020-02-11";
void Init_LCD();
void Display(unsigned char *ptr,unsigned char x,unsigned char y);
void Set_xy(unsigned char x,unsigned char y);
void Wcom(unsigned char com);
void WDat(unsigned char Dat);
void Ready();
void main()
{
unsigned char xdata *Area;
P4SW=0xFF;
Back_Light=0;
Init_LCD();
init_mempool(0x200,14);
Area=(unsigned char *)malloc(14*sizeof(unsigned char));
if(Area==NULL)
{
feleer=0;
while(1);
}
strcpy(Area,Text);
Display(Area,2,1);
Display(Date,3,2);
free(Area);
while(1);
}
void Init_LCD()
{
Wcom(OFF_LCD);
Wcom(CLEAR_LCD);
Wcom(INPUT_MODE);
Wcom(ON_LCD);
Wcom(TEXT_SIZE);
}
void Display(unsigned char *ptr,unsigned char x,unsigned char y)
{
Set_xy(x,y);
while(*ptr!=0)
{
WDat(*ptr);
ptr++;
}
}
void Set_xy(unsigned char x,unsigned char y)
{
if(y==1)
{
Wcom(0x80|x);
}
if(y==2)
{
Wcom(0xC0|x);
}
}
void Wcom(unsigned char com)
{
Ready();
RS=0;
RW=0;
E=1;
P0=com;
E=0;
}
void WDat(unsigned char Dat)
{
Ready();
RS=1;
RW=0;
E=1;
P0=Dat;
E=0;
}
void Ready()
{
unsigned char sta;
P0=0xFF;
RS=0;
RW=1;
do
{
E=1;
sta=P0;
E=0;
}
while(sta&0x80);
}
调试了一下午好多问题都解决了,就是下面这个警告还在,1602没显示,我的书本没有initreg()这个库函数的说明,网上也没见有,(有都是说C++的),想问一下用过这种功能的师傅,怎样才能消除这个警告?
|