求教各位大、小侠C51+keil问题

[复制链接]
 楼主| xqhe 发表于 2007-11-23 15:07 | 显示全部楼层 |阅读模式
     最近在写程序的时候遇到一个很棘手的问题,我之前写了个ks0108和ds1302的驱动,然后想利用定时器定时显示时间,但当我写了
   TMOD = 0x10;   
   TH1  = 0xEC;    
   TL1  = 0x77;    
   ET1  = 1; 
   EA = 1; 
   TR1=1;
后,发现没什么效果,单步执行以下,发现当程序执行“TR1=1”后,TH1,TL1,TCON都被修改了,且TF1一直为1,却不会转移到中断服务程序。
   反汇编看看,也没发现什么问题,
        SETB TR1(0x88.6);
没法了,不知是什么原因,只好到21ic找help了。
     期望给点意见,指点一下
gjg191 发表于 2007-11-23 15:09 | 显示全部楼层

dd

是不是你设置问题
 楼主| xqhe 发表于 2007-11-23 15:11 | 显示全部楼层

dd

不知有什么设置要改吗?
ayb_ice 发表于 2007-11-23 15:20 | 显示全部楼层

中断程序在哪里啊

 楼主| xqhe 发表于 2007-11-23 15:31 | 显示全部楼层

hui

中断程序就在main的上面:
void Update() interrupt 3 
   { 
     static char counter=100;
     TR1=0;
     //TF1 = 0; 
     TH1  = 0xEC;    
     TL1  = 0x77;
     TR1=1;  
     counter--;
     if(!counter) {counter=100; Index=1;}
   } 
gjg191 发表于 2007-11-23 15:46 | 显示全部楼层

dd

看你的keil设置正确吗?
 楼主| xqhe 发表于 2007-11-23 15:50 | 显示全部楼层

要设置那里呀?

能否告诉下?
gjg191 发表于 2007-11-23 15:52 | 显示全部楼层

dd

file下device database选择你用的芯片
 楼主| xqhe 发表于 2007-11-23 16:01 | 显示全部楼层

选了,是89s52的。
gjg191 发表于 2007-11-23 16:03 | 显示全部楼层

dd

那你把整个程序弄来看看
 楼主| xqhe 发表于 2007-11-23 16:11 | 显示全部楼层

很长的,如何弄?

   void main()
{  
   TMOD = 0x10;   
   TH1  = 0xEC;    
   TL1  = 0x77;  
   TF1=0;    
   ET1  = 1; 
   EA = 1; 
   TR1=1;

   ks0108Init(0);
   ds1302_Init();

   ks0108_display(cxkj);

   ds1302_Read_clae();
   ks0108_Write_string(16, 0, cale,9);

  ds1302_Read_time();
  ks0108_Write_string(32, 0, time,8);
}
我是怕其他程序写的不够好,导致这个问题的发生。加我QQ行吗?372970907
ayb_ice 发表于 2007-11-23 17:12 | 显示全部楼层

程序没有什么问题,可能是其它问题引起的

比如WDT什么的
turmary 发表于 2007-11-23 23:47 | 显示全部楼层

那你要看EA*TR1是否为1了

随便说说
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

46

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部