标题:
STC单片机怎样才能进行动态内存申请?
[打印本页]
作者:
阿小哥
时间:
2020-2-11 18:51
标题:
STC单片机怎样才能进行动态内存申请?
我今天做一个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++的),想问一下用过这种功能的师傅,怎样才能消除这个警告?
2020-02-11_184242.png
(19.35 KB, 下载次数: 20)
下载附件
2020-2-11 18:43 上传
作者:
cccc888
时间:
2020-2-12 13:50
没警告啊,9.59 测试过。
作者:
阿小哥
时间:
2020-2-12 17:29
删掉启动文件后我也通过了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1