打印

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

[复制链接]
1848|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

中断程序在哪里啊

使用特权

评论回复
5
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;}
   } 

使用特权

评论回复
6
gjg191| | 2007-11-23 15:46 | 只看该作者

dd

看你的keil设置正确吗?

使用特权

评论回复
7
xqhe|  楼主 | 2007-11-23 15:50 | 只看该作者

要设置那里呀?

能否告诉下?

使用特权

评论回复
8
gjg191| | 2007-11-23 15:52 | 只看该作者

dd

file下device database选择你用的芯片

使用特权

评论回复
9
xqhe|  楼主 | 2007-11-23 16:01 | 只看该作者

选了,是89s52的。

使用特权

评论回复
10
gjg191| | 2007-11-23 16:03 | 只看该作者

dd

那你把整个程序弄来看看

使用特权

评论回复
11
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

使用特权

评论回复
12
ayb_ice| | 2007-11-23 17:12 | 只看该作者

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

比如WDT什么的

使用特权

评论回复
13
turmary| | 2007-11-23 23:47 | 只看该作者

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

随便说说

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

46

帖子

0

粉丝