超声波测距汇编程序_第1页
超声波测距汇编程序_第2页
超声波测距汇编程序_第3页
超声波测距汇编程序_第4页
超声波测距汇编程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

;///////////////////////////////////////////////////////;USEBY:超声波测距器;测距范围xxCM-yyCM,堆栈在4FH以上,20H用于标志;显示缓冲单元在40H-43H,使用内存44H、45H、46H用于计算距离VOUTEQUP1.0 ;红外脉冲输出端口speakequp1.1;喇叭输出端口;*中断入口程序*ORG0000HLJMPSTARTORG0003HLJMPPINT0ORG000BHretiORG0013HRETIORG001BHLJMPINTT1ORG0023HRETIORG002BHRETI;*主程序;*START:MOVMOVSP,#4FHR0,#40H;40H-43H为显示数据存放单兀(40H为最高位)MOVR7,#0BHCLEARDISP:MOV@R0,#00HINCR0DJNZR7,CLEARDISPMOV20H,#00HMOVTMOD,#11H;T1/T0为16位定时器MOVTH0,#00H;65毫秒初值MOVTL0,#00HMOVTH1,#00HMOVTL1,#00HMOVP0,#0FFHMOVP1,#0FFHMOVP2,#0FFHMOVP3,#0FFHMOVR4,#04HSETBPX0SETBET1SETBEASETBTR1;超声波脉冲个数控制(为赋值的一半);开启测距定时器start1:LCALLDISPLAYJNB00H,START1CLREALCALLWORKclrEAMOVR2,#32h;#64H

;收到反射信号时标志位为1;计算距离子程序;测量间隔控制(约4*100=400MS)LOOP:LCALLDISPLAYDJNZ R2,LOOPCLR 00Hsetbet0mov th0,00hmov tl0,00hSETB TR1 ;重新开启测距定时器SETB EASJMPStart1;*中断程序* *;T1中断,发超声波用;T1中断,65毫秒中断一次INTT1:CLREACLRTR0clrex0MOVTH0,#00HMOVTL0,#00HMOVTH1,#00HMOVTL1,#00HSETBET0SETBEASETBTRO ;启动计数器TO,用以计数intt11:CPLnopnopnopnopVOUT ;40KHZ

nopnopnopnopnopDJNZR4,intt11;超声波发送完毕,MOVR4,#04H ;只发送了两个周期lcalldelay_250;延时,避开发射的直达声波信号SETBEX0 ;开启接收回波中断RETIOUT:RETI;外中断0PINT0:收到回波时进入;外中断0PINT0:收到回波时进入nopjbp3.2,pint0_exitCLRTR0;关计数器CLREA\CLREX0\MOV44H,TL0;将计数值移入处理单元MOV45H,TH0\movth0,#00hmovtl0,#00hjnbp3.2,$SETB00H;接收成功标志pint0_exit:RETI;*、显示程序;*、;40H为最高位,43H为最低位,先扫描高位DISPLAY:MOVR1,#40H;GMOVR5,#7fH;GPLAY:MOVA,R5MOVP0,#0FFHMOVP2,AMOVA,@R1MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,ALCALLDL1MSINCR1MOVA,R5JNBACC.4,ENDOUT;GRRAMOVR5,AAJMPPLAY

ENDOUT:MOVP2,#0FFHMOVP0,#0FFHRETTAB:DB18h,7Bh,2Ch,29h,4Bh,89h,88h,3Bh,08h,09h,0ffh;共阳段码表"0""1""2" "3""4""5""6""7""8""9""不亮""A""-";*延时程序(1ms) *DL1MS:push 06hpush 07hMOV R6,#14HDL1:MOVR7,#19HDL2:DJNZR7,DL2DL2:DJNZR7,DL2DJNZR6,DL1pop07hpop06hRET; 距离计算程序(=计数值*17/1000cm) *work:PUSHACCPUSHPSWPUSHBMOVPSW,#18hMOVR3,45HMOVR2,44HMOVR1,#00DMOVR0,#17DLCALLMUL2BY2MOVR3,#03HMOVR2,#0E8HLCALLDIV4BY2LCALLDIV4BY2MOV40H,R4MOVA,40H;最高位为零,不点亮;最高位为零,不点亮MOV40H,#0AHJJ0:MOVA,R0MOVR4,AMOVA,R1MOVR5,A

MOVR3,#00DMOVR2,#100DLCALLDIV4BY2JJ1:JJ2:MOV41H,R4JJ1:JJ2:MOVA,41HJNZJJ1MOVA,40H ;次高位为0,先看最高位是否为不亮SUBBA,#0AHJNZJJ1MOV41H,#0AH;最高位不亮,次高位也不亮MOVA,R0MOVR4,AMOVA,R1MOVR5,AMOVR3,#00DMOVR2,#10DLCALLDIV4BY2MOV42H,R4MOVA,42HJNZJJ2MOVA,41H ;次次高位为0,先看次高位是否为不亮SUBBA,#0AHJNZJJ2MOV42H,#0AH;次高位不亮,次次高位也不亮MOV43H,R0POPBPOPPSWPOPACCRET;*两字节无符号数乘法程序*;R7R6R5R4<=R3R2*R1R0MUL2BY2:CLRAMOVR7,AMOVR6,AMOVR5,AMOVR4,AMOV46H,#10HMULLOOP1:CLRCMOVA,R4RLCAMOVR4,AMOVA,R5

RLCAMOVR5,AMOVA,R6RLCAMOVR6,AMOVA,R7RLCAMOVR7,AMOVA,R0RLCAMOVR0,AMOVA,R1RLCAMOVR1,AJNCMULLOOP2MOVA,R4ADDA,R2MOVR4,AMOVA,R5ADDCA,R3MOVR5,AMOVA,R6ADDCA,#00HMOVR6,AMOVA,R7ADDCA,#00HMOVR7,AMULLOOP2:DJNZ46H,MULLOOP1RET;* 四字节/两字节无符号数除法程序 *; R7R6R5R4/R3R2=R7R6R5R4(商)...R1R0(余数)DIV4BY2:MOV46H,#20HMOVR0,#00HMOVR1,#00HDIVLOOP1:MOVA,R4RLCAMOVR4,AMOVA,R5RLCAMOVR5,AMOVA,R6RLCA

MOVR6,AMOVA,R7RLCAMOVR7,AMOVA,R0RLCAMOVR0,AMOVA,R1RLCAMOVR1,ACLRCMOVA,R0SUBBA,R2MOVB,AMOVA,R1SUBBA,R3JCDIVLOOP2MOVR0,BMOVR1,ADIVLOOP2:CPLCDJNZ46H,DIVLOOP1MOVA,R4RLCAMOVR4,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论