历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2018年01月07日 | 51单片机超声测距程序

2018-01-07 来源:eefocus

超声测距器单片机程序

#include  
#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 = 0xff; 
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[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; 


;-------------------------------------
;超声发生子程序(12M晶振38.5Hz)
;-------------------------------------
                    NAME     CS_T
?PR?CS_T?CS_T       SEGMENT  CODE
                    PUBLIC   CS_T
                    RSEG     ?PR?CS_T?CS_T
CS_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



;---------------------------------------
;  四位共阳LED动态扫描显示程序
;  P0为段码口,P2为位选口(低电平有效)
;  参数为要显示的字符串指针
;---------------------------------------
                                     NAME     DISPLAY
?PR?_DISPLAY?DISPLAY SEGMENT  CODE
?CO?_DISPLAY?DISPLAY SEGMENT  DATA
                     EXTRN    CODE  (_DELAY)
                     PUBLIC   _DISPLAY
                     RSEG     ?CO?_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,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
;                "0", "1", "2", "3","4", "5","6","7", "8","9","A","B","C", "D", "E","F", "-", " "
                     END

;-------------------------------------
;延时100机器周期*参数(1~65535)
;-------------------------------------
                    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


推荐阅读

史海拾趣

无锡友达公司的发展小趣事

随着产品性能的不断提升和市场需求的扩大,无锡友达开始积极拓展国内外市场。公司的产品不仅覆盖国内二十多个省、市,还远销欧美、中东、港澳台等国家和地区。通过与国际知名企业的合作,无锡友达不断提升自身的品牌影响力,逐渐在全球电子行业中占据一席之地。

DACHANG公司的发展小趣事

DACHANG公司深知创新是企业发展的根本动力。因此,公司始终将创新作为自己的核心竞争力,不断推出具有创新性的产品和解决方案。无论是产品设计、技术研发还是市场营销,DACHANG公司都积极引入新的理念和模式,为公司的发展注入了源源不断的活力。

台湾兆欣(EMTEK)公司的发展小趣事

随着科技的不断进步和市场需求的不断变化,兆欣始终保持对新技术和新应用的敏锐洞察力。他们不断推出创新产品和技术解决方案,引领着行业的发展方向。同时,兆欣还积极与高校和科研机构合作,共同推动电子行业的创新和发展。这种持续的创新精神是兆欣在电子行业中保持领先地位的关键所在。

请注意,以上故事是基于兆欣公司的发展历程和事实进行创作的,但具体细节和数据可能因时间和市场变化而有所不同。

Clever Little Box公司的发展小趣事

随着公司的发展,Clever Little Box逐渐意识到,单一的产品线无法满足市场的多样化需求。于是,公司开始积极拓展产品线,不仅涵盖了脉冲发生器、转换器等核心产品,还增加了音频/视频电缆组件等辅助产品。同时,公司注重创新,不断研发新技术、新产品,以满足市场的不断变化和客户的个性化需求。

德丰(DEFOND)公司的发展小趣事

德丰金属材料有限公司(简称“德丰金属”)是一家专业从事铝合金建筑型材加工的企业。随着市场竞争的加剧和环保要求的提高,公司意识到必须加快转型升级的步伐。为此,德丰金属加大了研发投入和技术改造力度,成功开发出了一系列符合绿色环保标准的新型铝合金型材产品。同时,公司还积极拓展国际市场,与多家国外知名企业建立了长期稳定的合作关系。通过不断的努力和创新,德丰金属成功实现了从传统制造业向绿色环保型制造业的转型升级。

AURORA公司的发展小趣事

AURORA公司成立于2016年,初出茅庐便面临着巨大的挑战。然而,公司的三位联合创始人Chris Urmson、J. Andrew Bagnell和Sterling Anderson均来自自动驾驶汽车领域的顶尖团队,拥有丰富的经验和深厚的技术背景。他们凭借对自动驾驶技术的深刻理解和前瞻性眼光,为AURORA的发展奠定了坚实的基础。在初创时期,AURORA通过与多家汽车制造商合作,共同设计和开发传感器、软件和数据服务,逐渐在自动驾驶领域崭露头角。

问答坊 | AI 解惑

汽车安全电子技术名词释疑 什么是BA ASR EBD ESP

■ABS       Anti-LockBrakeSystem的英文缩写,意为“防抱死制动系统”。在没有ABS时,汽车在紧急制动时,四个车轮被完全抱死,这时汽车只要在轻微侧向力作用下(比如倾斜的路面或者地上的一块小石头),就会发生侧滑 ...…

查看全部问答>

一个关于Q格式的问题

我想请问一下大家,怎么样才能实现在C语言中完成Q格式的转化?…

查看全部问答>

C8051单片机和Q2BYG403CM驱动器如何接线和控制?

如果采用单脉冲控制(脉冲+方向),则方向信号DR+,DR-和脉冲信号PU+,PU-如何和51单片机接线,接到那个口?同时A+,A-和B+,B-如何接到电机?为什么细分时(驱动器说明书)SW对应MS 时,MS有两个值? 本人是单片机初学者,希望得到各位的帮助,在此 ...…

查看全部问答>

【晒经典】电焊机节电保护器原理图

本帖最后由 dontium 于 2015-1-23 13:28 编辑 AC380V电压经电容降压,桥式整流后给直流电路供电。火线L2经Q2,T2给交流负载供电(负载图中没画),T2检测负载电流,到设定值时,Q1导通,直流电源被拉低,K1释放,交流接触器K2吸合。T1也是检测电流 ...…

查看全部问答>

vxworks中的解压缩

请问各位大侠,针对不同架构的cpu的vxworks源代码中,是否是采用相同的inflate/deflate解压缩代码啊? 例如,能否调用sparc架构的vxworks代码的inflate代码,解压缩用mips架构的vxworks代码中deflate压缩的文件呢? [ 本帖最后由 茵子 于 2011-9- ...…

查看全部问答>

关于硬件I2C的,用的是I2C1

/*---------------------------------------------------------------------------------------------------------*********************************************************************************************************** 文件名称 :&nbs ...…

查看全部问答>

【项目外包】飞思卡尔32位Power Pc架构MPC5XXX芯片驱动开发

飞思卡尔32位Power Pc架构MPC5XXX芯片驱动开发 项目预算:¥ 1,~100,000 开发周期: 60 天 项目分类: 嵌入式 竞标要求: 项目标签: ...…

查看全部问答>

学习Sitara AM335x之思路篇

本人专业是电路与系统,结合自己学习ARM9的情况,我想谈谈学习这款芯片的思路,希望大家一起讨论一起研究。我觉得最初应该先把Sitara当单片机使更合适些,因为电子相关的专业的同学大部分还是希望往驱动固件开发方向发展(这个方向工资也不错,将来 ...…

查看全部问答>

关于用VB6.0编写软件来实现无线遥控atmega128单片机的问题。

各位朋友,大家好! 我用的是ATmega128最小系统板来控制小车的四个电机转动,采用无线遥控模块,模块型号是XL03-232AP2-1收发模块(睿迪无线产的),单片机作为接收端,程序如下: #include #include #define uchar unsigned char #define uin ...…

查看全部问答>