2019-03-24 18:09发布
jishuaihu 发表于 2014-11-7 11:38 每个字节中断一次。手里没有现成的全局变量,uchar flag,array[14],cnt; 初始化中 flag= 0;
最多设置5个标签!
帮我看看这程序有什么问题没有?
我已经按了串口助手发送数据,但是时间不刷新不知道怎么回事!程序如下;
#include<reg51.h>
#include"DS1302.h"
#include"1602.h"
uchar flag=0;
void main()
{
SCON=0x50;//串口选择工作方式为1;
TMOD=0x20;//选择定时器1工作方式2;
PCON=0x80;//波特率加倍;
TH1 =0xF3;
TL1 =0xF3;//设置定时器1初值,产生4800的波特率;
ES=1;/*打开串口中断*/
EA=1;/*打开总中断*/
TR1=1;//开启定时器1产生波特率;
LcdInit();
Ds1302Init();/*1302初始化时间0秒0分12时1日1月星期3,2014年*/
while(1)
{
if(flag==0)
{
Ds1302ReadTime(); /*读取DS1302中的数据到全局变量数组TIME中*/
LcdWriteCom(0x80+0x40);
LcdWriteData('0'+TIME[2]/16);
LcdWriteData('0'+(TIME[2]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16);
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16);
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80+0x49);
LcdWriteData('0'+(TIME[5]&0x07));
LcdWriteCom(0x80);
LcdWriteData('0'+2);
LcdWriteData('0'+0);
LcdWriteData('0'+TIME[6]/16);
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16);
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16);
LcdWriteData('0'+(TIME[3]&0x0f));
}
}
}
void usartconfiguration() interrupt 4
{
uchar temp,cnt=0;
temp=SBUF;
if(flag==0)
{
if(temp=='A')
{
flag=1;
cnt=0;
}
}
else
{
TIME[cnt++]=temp;
if(cnt>6)
{
Ds1302Init()/*刷新发送过来的数据*/
cnt=0;
flag=0;
}
}
RI=0;/*接收标志清0*/
}
一周热门 更多>