找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2777|回复: 8
打印 上一主题 下一主题
收起左侧

求高手调试程序;为啥到整点进位出现错误呢

[复制链接]
跳转到指定楼层
楼主
ID:66970 发表于 2014-11-7 22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint miao,fen,shi,ge,shi;
uint num;
sbit  we=P2^6;
sbit  du=P2^7;
sbit  lcden=P2^5;
sbit  rs=P1^0;                  //注意LCD初始化rw制零
sbit rw=P1^1;
uchar table[]="   22:59:53";
void  delayms(uint x)
{
uint i,j;
   for(i=x;i>0;i--)
   for(j=110;j>0;j--);
}

//读操作
void writecmd(uchar com)
{
rs=0;
lcden=0;
P0=com;
lcden=1;
delayms(5);
lcden=0;
}

//写命令
void writedate(uchar date)
{
        rs=1;
        lcden=0;
        P0=date;
        lcden=1;
        delayms(5);
        lcden=0;
}

//LCD初始化

void init()
{ uint i;

  we=0;
  du=0;
  rw=0;
  lcden=0;
  writecmd(0x38);
  writecmd(0x06);        
  writecmd(0x0c);      //开显示,不显示光标  
  writecmd(0x01);      //清除LCD的显示内容
  writecmd(0x80+0x40);
  for(i=0;i<11;i++)
  {
  writedate(table[i]);
  delayms(5);

  }
}
   void sfm(uchar add,uchar date)
{
  ge=date%10;
  shi=date/10;
  writecmd(0x80+0x40+add);
  writedate(0x30+shi);
  writedate(0x30+ge);

}
void time0()
{
    TMOD =0x01;
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}   

void main()
  {
   init();
  time0();
  writecmd(0x80+0x40);
while(1)

{
if(num==20)
{
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{fen=0;
shi++;
if(shi==24)
{shi=0;
}
sfm(3,shi);
}
          sfm(6,fen);
}

sfm(9,miao);
}



}



}

void timer() interrupt 1
{
   TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    num++;

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:66970 发表于 2014-11-8 11:33 | 只看该作者
求高手指教,急求
回复

使用道具 举报

板凳
ID:66032 发表于 2014-11-8 14:38 | 只看该作者

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint miao,fen,shi,ge,shi;
uint num;
sbit  we=P2^6;
sbit  du=P2^7;
sbit  lcden=P2^5;
sbit  rs=P1^0;                  //注意LCD初始化rw制零
sbit rw=P1^1;
uchar table[]="   22:59:53";
void  delayms(uint x)
{
uint i,j;
   for(i=x;i>0;i--)
   for(j=110;j>0;j--);
}

//读操作
void writecmd(uchar com)
{
rs=0;
lcden=0;
P0=com;
lcden=1;
delayms(5);
lcden=0;
}

//写命令
void writedate(uchar date)
{
        rs=1;
        lcden=0;
        P0=date;
        lcden=1;
        delayms(5);
        lcden=0;
}

//LCD初始化

void init()
{ uint i;

  we=0;
  du=0;
  rw=0;
  lcden=0;
  writecmd(0x38);
  writecmd(0x06);        
  writecmd(0x0c);      //开显示,不显示光标  
  writecmd(0x01);      //清除LCD的显示内容
  writecmd(0x80+0x40);
  for(i=0;i<11;i++)
  {
  writedate(table[i]);
  delayms(5);

  }
}
   void sfm(uchar add,uchar date)
{
  ge=date%10;
  shi=date/10;
  writecmd(0x80+0x40+add);
  writedate(0x30+shi);
  writedate(0x30+ge);

}
void time0()
{
    TMOD =0x01;
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}   

void main()
  {
   init();
  time0();
  writecmd(0x80+0x40);
while(1)

{
if(num==20)
{
num=0;
miao++;
sfm(9,miao);
if(miao==60)
{
miao=0;
sfm(9,miao);//immediately update the display;
fen++;
sfm(6,fen);
if(fen==60)
{fen=0;
sfm(6,fen);//immediately update the display;
shi++;
sfm(3,shi);
if(shi==24)
{shi=0;
  sfm(3,shi);//immediately update the display
}

}
}
}



}



}

void timer() interrupt 1
{
   TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    num++;

}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:66970 发表于 2014-11-8 17:00 | 只看该作者
回复

使用道具 举报

5#
ID:66032 发表于 2014-11-8 17:27 | 只看该作者
试过没有?
回复

使用道具 举报

6#
ID:66970 发表于 2014-11-8 20:11 | 只看该作者

试过了 ,还不可以  时针没法进位
回复

使用道具 举报

7#
ID:58502 发表于 2014-11-9 20:09 | 只看该作者
变量冲突了,你个位十位的十用的变量shi和时分秒的时用的变量也是shi,
回复

使用道具 举报

8#
ID:66032 发表于 2014-11-10 08:14 | 只看该作者
楼上对的, 拼音命名的弊病在于此

评分

参与人数 1黑币 +50 收起 理由
admin + 50

查看全部评分

回复

使用道具 举报

9#
ID:66970 发表于 2014-11-11 19:10 | 只看该作者
liaolinhui 发表于 2014-11-9 20:09
变量冲突了,你个位十位的十用的变量shi和时分秒的时用的变量也是shi,

嗯嗯,终于发现问题了 谢谢啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表