导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→还是那个2051正脉冲采集的问题[mcuer]

 *第20880篇: 还是那个2051正脉冲采集的问题

  
楼 主:mcuer 2004年4月11日00:56
 还是那个2051正脉冲采集的问题
我改了一下计数方式
TCON=0H
TMOD=00011001B

我在计数开始前置TL0=0FFH,TH0=0FFH
中断里是这样处理的:
INT_T0:  PUSH  ACC
  PUSH  PSW
  MOV  TL0,#06H  ;(4*3)uS/2  
  MOV  TH0,#0H
  SETB  OTHERFLAG.4
  POP  PSW
  POP  ACC
  RETI

TL0,TH0中累加的值就是脉冲的宽度。各位达人,这样用T0计数可以吗?

然后在频率模块里检查TL0,TH0里累计的值得到脉冲宽度。
FREQUENCY_CHK: JB  OTHERFLAG.2,F_CHK
  JB  OTHERFLAG.3,F_GET
  JB  OTHERFLAG.5,F_WAIT
  CLR  TIMEFLAG.0
  MOV  T14MS,#07H
  SETB  OTHERFLAG.5
  
F_WAIT:  JB  TIMEFLAG.0,F_EXIT1
  JB  P3.2,F_EXIT_1
  MOV  TL0,#0FFH
  MOV  TH0,#0FFH
  CLR  OTHERFLAG.4
  SETB  TR0
  SETB  OTHERFLAG.3
  CLR  TIMEFLAG.0
  MOV  T14MS,#07H
  RET
  
F_EXIT1: ANL  OTHERFLAG,#11000011B
  CLR  SYSSTATE.1
F_EXIT_1: RET
  
  
F_GET:  JB  TIMEFLAG.0,F_EXIT1
  JNB  OTHERFLAG.4,F_EXIT_1
  JB  P3.2,F_EXIT_1
  CLR  TR0
  SETB  OTHERFLAG.2
  ANL  OTHERFLAG,#11000111B
  RET
  
  
F_CHK:  MOV  A,IMPULSELBAK
  CLR  C
  SUBB  A,TL0
  MOV  R6,A
  MOV  A,IMPULSEHBAK
  SUBB  A,TH0
  
  JC  F_CHK_HIGH
  
  MOV  IMPULSELBAK,TL0
  MOV  IMPULSEHBAK,TH0
  
  JNZ  F_CHK_ERROR
  ADD  A,#0FAH
  JZ  F_CHK_ERROR
  
  SUBB  A,R6    
  JC  F_CHK_ERROR
  
  SETB  SYSSTATE.1
  SETB  OTHERFLAG.1
  ANL  OTHERFLAG,#11000011B
  INC  CUMULATE
  RET

F_CHK_HIGH: MOV  A,TL0
  CLR  C
  SUBB  A,IMPULSELBAK
  MOV  R6,A
  MOV  A,TH0
  SUBB  A,IMPULSEHBAK
  
  MOV  IMPULSELBAK,TL0
  MOV  IMPULSEHBAK,TH0
  
  JNZ  F_CHK_ERROR
  
  MOV  A,R6
  SUBB  A,ALLOW_RANGE
  JNC  F_CHK_ERROR
  SETB  SYSSTATE.1
  SETB  OTHERFLAG.1
  ANL  OTHERFLAG,#11000011B
  MOV  CUMULATE,#0
  RET
  
F_CHK_ERROR: CLR  SYSSTATE.1
  ANL  OTHERFLAG,#11000011B
  MOV  CUMULATE,#0
  RET


实际得到的结果不正常,好象是采集的数据不对,如何解决?

  
2楼:mcuer 2004年4月11日01:24
 是不是T0计时器我哪没用对啊?
  
3楼:mcuer 2004年4月11日12:32
 各位达人看过来~
  
4楼:mcuer 2004年4月11日13:39
 救命啊~我被这个问题搞醉了

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:分火急!!!请大虾帮助.AT89C51是否可以接3*的32M flash。

[下一篇主题]:电路开发项目