微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 哪位大神帮我看一下为什么测距不运行呢

哪位大神帮我看一下为什么测距不运行呢

时间:10-02 整理:3721RD 点击:
                  /* 超声波测距主程序 */
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
extern void cs_t(void);
extern void delay(uint);
extern void display(uchar *);
data uchar testok;
/*主程序*/
void main(void)
{
  data uchar dispram[5];
  data uint i;
  data ulong time;
  P0=0xFF;
  P2=0xa0;
  TMOD=0x11;
  IE=0x80;
  while(1)
  {
    cs_t();
        delay(1);
        testok=0;
        EX0=1;
        ET0=1;
        while(!testok) display(dispram);
        if(1==testok)
        {
          time=TH0;
          time=(time<<8)|TL0;
          time*=172;
          time/=10000;
          dispram[0]=(uchar)(time%10);
          time/=10;
          dispram[1]=(uchar)(time%10);
          time/=10;
          dispram[1]=(uchar)(time%10);
          dispram[2]=(uchar)(time%10);
          dispram[3]=(uchar)(time/10);
          if(0==dispram[3]) dispram[3]=17;
        }
        else
        {
          dispram[0]=16;
          dispram[1]=16;
          dispram[2]=16;
          dispram[3]=16;
        }
        for(i=0;i<300;i++) display(dispram);
  }
}
  /*超声波接受程序(外中断0)*/
  void cs_r(void) interrupt 0
  {
    TR0=0;
        ET0=0;
        EX0=0;
        testok=1;
  }
  /*超时清楚程序(内中断T0)*/
  void overtime(void) interrupt 1
  {
    EX0=0;
        TR0=0;
        ET0=0;
        testok=2;
  }
/*超声波发生子程序*/                     NAME      CS_T?PR?CS_T?CS_T              SEGMENT   CODE                     PUBLIC    CS_T                                         RSEG      ?PR?CS_T?CS_TCS_T                        :         PUSH      ACC                     MOV       TH0,#00H                                         MOV       TL0,#00H                                         MOV       A,#4D                                         SETB      TR0
CS_T1           :         CPL       P1.0                                     NOP                                          NOP                                         NOP                                         NOP                                         NOP                                         NOP                                         NOP                                         NOP                                         NOP                                         NOP                                         DJNZ       ACC,CS_T1                                         POP        ACC                                         RET
                                         END
     /*延时*/NAME DELAY?PR?_DELAY?DELAY      SEGMENT    CODE                         PUBLIC     _DELAY                                                 RSEG       ?PR?_DELAY?DELAY_DELAY:                       PUSH       ACC       ;2                         MOV        A,R7      ;1                                                 JZ         DELA1     ;2                                                 INC        R6        ;1
DELA1:                   MOV        R5,#50D   ;2                         DJNZ       R5,$      ;2                                                 DJNZ       R7,DELA1  ;2                                                 DJNZ       R6,DELA1  ;2                                                 POP        ACC       ;2                                                 RET                  ;2                                                 END
  /*4位共阳LED动态扫描显示程序*/
                          NAME DISPLAY
?PR?_DISPLAY?DISPLAY      SEGMENT   CODE
?C0?_DISPLAY?DISPLAY      SEGMENT   DATA
                          EXTRN     CODE(_DELAY)
                                                  PUBLIC    _DISPLAY
                                                  RSEG      ?C0?_DISPLAY?DISPLAY
?_DISPLAY?BYTE:
DISPBIT          :        DS        1
DISPNUM          :        DS        1
                                                  RSEG             ?PR?_DISPLAY?DISPLAY
_DISPLAY:                 PUSH      ACC
                          PUSH      DPH
                                                  PUSH      DPL
                                                  PUSH      PSW
                                                  INC       DISPNUM
                                                  MOV       A,DISPNUM
                                                  CJNE      A,#4D,DISP1
DISP1:                    JC        DISP2
                          MOV       DISPNUM,#00H
                                                  MOV       DISPBIT,#0FEH
DISP2:                    MOV       A,R1
                          ADD       A,DISPNUM
                                                  MOV       R0,A
                                                  MOV       A,@R0
                                                  MOV       DPTR,#DISPTABLE
                                                  MOVC      A,@A+DPTR
                                                  MOV       P0,A
                                                  MOV       A,DISPNUM
                                                  CJNE      A,#2D,DISP3
                                                  CLR       P0.7
DISP3:                    MOV       P2,DISPBIT
                          MOV       R6,#00H
                                                  MOV       R7,#0AH
                                                  LCALL     _DELAY
                                                  MOV       P0,#0FFH
                                                  MOV       P2,#0FFH
                                                  MOV       A,DISPBIT
                                                  RL        A
                                                  MOV       DISPBIT,A
                                                  POP       PSW
                                                  POP       DPL
                                                  POP       DPH
                                                  POP       ACC
                                                  RET
DISPTABLE:    DB   0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
              DB     80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
              DB     "0","1","2","3","4","5","6","7","8"
                          DB           "9","A","B","C","D","E","F","_"," "
                          END



原理图


我司代理中颖单片机,晶致马达驱动,海芯AD。详情咨寻
黄生:15112661137
QQ:370138333

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top