打印

请帮忙看看这段定时程序错误在什么地方

[复制链接]
1501|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hubo450|  楼主 | 2007-9-14 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一段定时1ms的程序,用计数器来控制,中断10000次(10s)后通过串口发送一个$(#24H),目前的症状是非常快(<=1s)发回来#00H,请高手帮忙指点一下,我是在没找出来错误在什么地方,谢谢。
          ORG 0000H
          LJMP MAIN
          ORG 000BH
          LJMP T0FUN
          ORG 0100H
MAIN:     MOV   SP,#08H
          LCALL INIT
          LCALL AA
BEGIN:
          LCALL T0INIT
          MOV   COUN0,#64H
          MOV   COUN1,#64H
          SETB  TR0
CHK:      MOV   A,COUN0
          JNZ   CHK
          LCALL AA
          LJMP  BEGIN

T0FUN:    MOV   A,COUN1
          JNZ   T0FUN1
          DEC   COUN0
          MOV   COUN1,#64H
T0FUN1:   DEC   COUN1
          MOV   TH0,#0F8H
          MOV   TL0,#0CCH
          RETI
T0INIT:   MOV TMOD,#01H
          MOV TH0 ,#0F8H
          MOV TL0 ,#0CCH
          SETB EA
          SETB ET0
          RET
AA:       CLR  TR0
          CLR   TI
          MOV   SBUF,#24H
          JNB   TI,$
          SETB  TR0
          RET
INIT:     MOV SCON,#50H                      
          MOV PCON,#80H
          MOV TMOD,#20H
          MOV TH1,#0FDH
          MOV TL1,#0FDH
          SETB TR1
          RET

相关帖子

沙发
ayb_ice| | 2007-9-14 15:37 | 只看该作者

太不规范了...

使用特权

评论回复
板凳
he1jing| | 2007-9-14 16:45 | 只看该作者

程序不完整

COUN0和COUN1的地址如大于SP初始地址肯定出错

使用特权

评论回复
地板
hubo450|  楼主 | 2007-9-14 17:22 | 只看该作者

忘了贴了COUN0,COUN1的地址

     COUN0        EQU     65H
     COUN1        EQU     66H

使用特权

评论回复
5
hubo450|  楼主 | 2007-9-15 10:21 | 只看该作者

我又改成了查询TF0的方式,但是还是不行

          COUN0 EQU 60H
          COUN1 EQU 61H
          ORG 0000H
          LJMP MAIN
          ORG 0100H
MAIN:     MOV   SP,#06H
          LCALL INIT
          LCALL AA
BEGIN:
          LCALL T0INIT
          MOV   COUN0,#64H
          MOV   COUN1,#64H
          SETB  TR0
T0:       JNB   TF0,$                               ;Èç¹ûû³öÏÖÖжϣ¬Ô­µØ
          LCALL T0FUN
          MOV   A,COUN0
          JNZ   T0
          CLR   TR0
          LCALL AA
          LJMP  BEGIN

T0FUN:    MOV   A,COUN1
          JNZ   T0FUN1
          DEC   COUN0
          MOV   COUN1,#64H
T0FUN1:   DEC   COUN1
          MOV   TH0,#0F8H
          MOV   TL0,#0CCH
          RET
T0INIT:   MOV TMOD,#01H
          MOV TH0 ,#0F8H
          MOV TL0 ,#0CCH
          SETB EA
          SETB ET0
          RET
AA:       CLR  TR0
          CLR   TI
          MOV   SBUF,#24H
          JNB   TI,$
          SETB  TR0
          RET
INIT:     MOV SCON,#50H                      
          MOV PCON,#80H
          MOV TMOD,#20H
          MOV TH1,#0FDH
          MOV TL1,#0FDH
          SETB TR1
          RET

使用特权

评论回复
6
hubo450|  楼主 | 2007-9-17 21:57 | 只看该作者

找到原因,自己解决了

其实问题在于串口设置时 MOV TMOD,#20H,而初始化T0的时候又MOV TMOD,#01H,当然串口就不对了,只要在T0初始化时候ORL TMOD,#01H就正常了。

使用特权

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

本版积分规则

12

主题

39

帖子

1

粉丝