
使用芯片:AT89S52,DS12887时钟芯片,实践通过,运行稳定。自己根据程序连接引脚。
#include<reg52h>
#include<absacch>
#define uchar unsigned char
#define uint unsigned int
#define LCDCOM XBYTE[0xcffc] //LCD写命令寄存器地址
#define LCDDATA XBYTE[0xcffd] //LCD写数据寄存器地址
#define LCDSTATUS XBYTE[0xcffe] //LCD读状态寄存器地址 #define DSA XBYTE[0x8f0a] //实时时钟寄存器A
#define DSB XBYTE[0x8f0b] //实时时钟寄存器B
#define DSC XBYTE[0x8f0c] //实时时钟寄存器C
#define DSD XBYTE[0x8f0d] //实时时钟寄存器D
#define SECOND XBYTE[0x8f05] //实时时钟分报警 sbit bflag=ACC^7; uchar idata dt[7]={06,7,11,17,05,0,2}; //时间初值
uchar at[7]={9,8,7,4,2,0,6}; //年,月,日,时,分,秒,星期时标寄存器地址
uchar xdata addr=0x8f00; //实时时钟片选地址 //函数的声明部分
//void delay1(uint x);
void lcd_busy();
void lcd_cmd(uchar lcd_cmd);
void lcd_data(uchar lcd_data);
void lcd_moveto(uchar position);
void init(void);
//void delay( unsigned int number );
void init_ds(void); //实时时钟初始化
void WDS(void); //写时标函数
void RDS(void); //读时标函数 uchar ymd[10]={2,0,0,0,0,0,0,0,0,0}; //年月日
uchar hms[8]={0,0,0,0,0,0,0,0}; //时分秒
uchar weekday[3];
uchar code dis_buf[12]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e,0x3a}; /void delay1(uint x) //延时1ms程序
{
uchar j;
while(x--)
{
for(j=0;j<125;j++)
{;}
}
} void delay( unsigned int number )
{
unsigned char i;
unsigned int u; while(u<number)
{
for(i=0;i<=125;i++);
u++;
}
} / void init_ds(void) //实时时钟初始化
{
DSA=0x2f; //选时钟32768kHz;中断周期500ms
ACC=DSC; //清中断请求标志
ACC=DSD; //VRT=1;数据有效
DSB=0x7e; //中断允许,时标值为二进制码,24小时制,芯片工作,方波输出允许
}
void WDS(void) //写时标函数
{
uchar i;
DSB=0x8e; //置SET位为1
DSB=0x8e;
for(i=0;i<7;i++)
{
(addr+at[i])=dt[i]; //置时标初值
}
}
void RDS(void)
{
uchar i;
do
{
ACC=DSA;
买个烧写器是最终的选择,想靠升级小板升级所有品牌的主板上的Flash太不现实,采用升级小板进行升级有的需要串口,有的需要并口。而且还需要很多升级工具,对维修来说不现实。还不如一步到位买个西尔特580U或志远X5的烧写器有了这两个烧写器几乎所有型号的Flash都可以烧写也可以读出,专业液晶维修的烧写器是必不可少的
以上就是关于怎么向AT89S52烧写程序全部的内容,包括:怎么向AT89S52烧写程序、请问大家烧录液晶驱动板都用什么软件、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)