找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8985|回复: 2
打印 上一主题 下一主题
收起左侧

[求助]关于超声波用定时器产生40k脉冲

[复制链接]
跳转到指定楼层
楼主
ID:2902 发表于 2008-8-1 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

ORG  0000H
      LJMP  START
ORG  0003H
      LJMP  PINT0
ORG  000BH
      LJMP  INTT0

ORG  001BH
      LJMP  INTT1

ORG  0030H

START: MOV  SP, #4FH
       MOV  R0,#30H   ;;30~35H为显示数据存放单元(30为最高位)
       MOV  R7,#0AH
        MOV 20H,#00H            ;标志位
CLEARDISP:MOV  @R0,#00H
            INC   R0
            DJNZ  R7, CLEARDISP
             mov tcon,#01h
            MOV  TMOD, #21H   ; ;T1为8位自动重装模式,T0为16位定时器
            MOV  TH0, #00H    ; ;65ms初值
            MOV  TL0, #00H
            MOV  TH1, #0F2H    ;;40KHz初值
            MOV  TL1, #0F2H
            MOV  P0, #0FFH
            MOV  P1, #0FFH
            MOV  P2, #0FFH
            MOV  P3, #0FFH

 mov 36h,#20h         ;显示位控
 mov 37h,#30h
 mov 38h,#40h
 mov 39h,#50h
        mov 3ah,#60h
MOV  R4, #10h       ; ;超声波脉冲个数控制(为赋值的一半)
SETB  PX0
SETB  ET0
SETB  EA
clr   20H
SETB  TR0         ;   ;开启测距定时器

START1:    LCALL  DISPLAY
            JNB     20H, START1     ;  ;收到反射信号时标志位为1
            CLR  EA
            LCALL  WORK        ;  ;计算距离子程序
            SETB    EA
            CLR     20H
            SETB    TR0          ;   ;重新开启测距定时器
           

LOOP:      LCALL  DISPLAY
            DJNZ   R5, LOOP
            SJMP   START1

;*中断程序*
;;T0中断,65ms中断一次
INTT0:      CLR    EA
            CLR    TR0
            MOV   TH0,#00H
            MOV   TL0,#00H
            SETB   ET1
            SETB   EA
            SETB   TR0            ;    ;启动计时器T0,用以计算超声波来回时间
            SETB   TR1                ;      ;开启发超声波用定时器T1
     RETI


;;T1中断,发超声波用
INTT1: 
        CPL    P1.0
            DJNZ   R4,RETIOUT
            CLR    TR1        ;       ;超声波发送完毕,关T1
            CLR    ET1
            MOV   R4,#10h         ;发送8个,约200us(最小距离)后开启外部中断,
            SETB   EX0     ;          ;开启接收回波中断
RETIOUT:   RETI

;;外中断0,收到回波时进入
PINT0:

              CLR   TR0             ;   ;关计数器
             CLR   TR1
             clr et1
             CLR   ea
             clr ex0
             MOV  40H,TL0          ;  ;将计数值移入处理单元
             MOV  41H,TH0
             SETB  20H
            
             RETI

 。。。
设计方案:每隔65ms发射一次,每次发射8个周期。
问题一:发不出40k 的脉冲,只有30k
问题二:一开启外部中断,外部中断就一直位于低电平了,所测的的距离就是那200us所传播的距离
麻烦大家看看啊,都半个月了
很郁闷啊



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:2902 发表于 2008-8-9 22:29 | 只看该作者

哎~~~~~~~~~~~
自己顶自己一下
命苦呀

回复

使用道具 举报

板凳
ID:26112 发表于 2010-9-22 14:57 | 只看该作者

利用顶定时器啊、、直接可以的呀。。在驱动一下。就产生了啊

 

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表