8524|1

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

帮忙看一下这个时钟程序,谢谢! [复制链接]

自己时钟程序,写后发现不能用,所以一步一步来测试,现在是只要求显示分和秒,也不要求设置,p0.7-p0.0通过电阻接的是共阴数码管的a-g,共4个,只要求显示分钟和秒,p2.4-p2.7通过三极管后接它们的公共端,keilC中能正常编译,但是不能正常走时,我分析这算法是没有问题,请大家看看:


#include <reg52.h>
typedef unsigned char byte;
typedef unsigned int word;
static byte buf[5];
byte table[10]={0x0c0,0x0f9,0x0a4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x90};//字符表//
byte hour=0,minute=0,second=0,ncounter=0;


 //动态显示函数//
void display(void){
 byte posi=0x7f;  //定义公共端的位置//
 byte temp,i,j;
 for(i=0;i<4;i++){  //依次显示4个数码管//
  temp=buf;
  temp=table[temp];//查表//
  for(j=0;j<200;j++){  //延时//
   P0=temp;
   P2=posi;
   }
  posi>>=1;  //显示向右移一位//
 }
}


void timedisply(){   //将分秒显示//
   buf[3]=second/10;
   buf[2]=second%10;
  buf[1]=minute/10;
   buf[0]=minute%10;
  }


//计时函数v 
void timekeep(void){
  if(second>=60){
  second=0;
  minute++;
   if(minute>=60){
   minute=0;
   hour++;
    if(hour>=24)
    hour=0;
   }
  timedisply();
  }
}


   //中断函数//
void time0() interrupt 0 using 0{
 TH0 = 0x4C;
 if(++ncounter==20){
  ncounter=0;
  second++;
  }
  timekeep();
 }

 

   //主函数//
void main() {
 TMOD = 0x01; //采用T0的第1种计数方法//
 TH0 = 0x4C;  //赋初值,计数50ms//
 ET0 = 1;
 EA = 1;
 TF0 = 0;
 TR0 = 1;
 while(1){
 display();}
}

此帖出自单片机论坛

最新回复

我对C和程序不懂,但从这上面的来看,好像你在定时器的中断程序有点不对,改为  //中断函数//void time0() interrupt 1 using 0{   TH0 = 0x4C; if(++ncounter==20){  ncounter=0;  second++;  }  timekeep(); }看看  详情 回复 发表于 2007-5-26 10:12
点赞 关注
 

回复
举报

1583

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

Re: 帮忙看一下这个时钟程序,谢谢!

我对C和程序不懂,但从这上面的来看,好像你在定时器的中断程序有点不对,改为
  //中断函数//
void time0() interrupt 1 using 0{  
 TH0 = 0x4C;
 if(++ncounter==20){
  ncounter=0;
  second++;
  }
  timekeep();
 }

看看

5605.jpg (138.07 KB, 下载次数: 2)

5605.jpg
此帖出自单片机论坛
 
个人签名
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表