⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chao.lst

📁 用单片机来实现超声波的测距
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  CHAO                                                                 02/18/2008 17:00:17 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN chao.OBJ
ASSEMBLER INVOKED BY: D:\Keil\C51\BIN\A51.EXE chao.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************
                       2     ;4位共阴LED数码管
                       3     ;千位    P2.3
                       4     ;百位    P2.4
                       5     ;十位    P2.5
                       6     ;个位    P2.6
                       7     ;定时溢出  P1.1
                       8     ;接收中断P1.7
                       9     ;超声发射  P2.0
                      10     ;可供选择信号指示:P1.1/P1.5/P1.6/P1.7
                      11     ;注:此程序为方便学习者理解未进行优化
                      12     ;如要增大量程可增加定时器时间及发射时间
                      13     ;**************************
0000                  14     ORG 0000H
0000 0136             15     AJMP START
0003                  16     ORG 0003H;定时器0外中断向量地址
0003 218A             17     AJMP TIME1
000B                  18     ORG 000BH ;定时器0的溢出中断向量地址
000B 216F             19     AJMP TIME0 ;跳转到定时器程序处
0036                  20     ORG 36H
                      21     
0036                  22     START:
0036 758901           23             MOV TMOD,#00000001B ;定时/计数器0工作于方式1
0039 D2AF             24             SETB EA ;开总中断允许
003B 7801             25     loop:   mov r0,#01h
003D 75140A           26             mov 14h,#0ah;超声波发射持续200us
0040 758CB1           27             MOV TH0,#0b1h
0043 758AE0           28             MOV TL0,#0e0h;赋值定时器定时20毫秒
0046 D2A9             29             SETB ET0 ;开定时/计数器0益出中断允许
0048 D28C             30             SETB TR0 ;定时/计数器0开始运行
004A B2A0             31     here:   cpl p2.0;;输出40KHz方波
004C 00               32             nop
004D 00               33             nop
004E 00               34             nop
004F 00               35             nop
0050 00               36             nop
0051 00               37             nop
0052 00               38             nop
0053 00               39             nop
0054 00               40             nop
0055 D514F2           41             djnz 14h,here
0058 00               42             nop
0059 00               43             nop
005A 7FC8             44             MOV R7,#200
005C DFFE             45             DJNZ R7,$
005E 7FC8             46             MOV R7,#200
0060 DFFE             47             DJNZ R7,$
0062 7FC8             48             MOV R7,#200
0064 DFFE             49             DJNZ R7,$
0066 7FC8             50             MOV R7,#200
0068 DFFE             51             DJNZ R7,$
006A 7FC8             52             MOV R7,#200
006C DFFE             53             DJNZ R7,$
006E 7FC8             54             MOV R7,#200
0070 DFFE             55             DJNZ R7,$
0072 7F64             56             MOV R7,#100
0074 DFFE             57             DJNZ R7,$;*超声波谐振等待
0076 AC30             58             mov r4,0030h
A51 MACRO ASSEMBLER  CHAO                                                                 02/18/2008 17:00:17 PAGE     2

0078 AD31             59             mov r5,0031h
007A D2A8             60             setb ex0;开定时器0外中断
007C E8               61     deng:   mov a,r0;外中断r0为0,溢出中断r0为0
007D 70FD             62             jnz deng;累加器非0转移
007F E9               63             mov a,r1;外中断r1为0,溢出中断r1为1;
0080 702A             64             jnz stlop;累加器非0转移,超量程显示,
0082 7E01             65             mov r6,#1h
0084 7F54             66             mov r7,#54h;R6/R7 154H,即340米/秒
0086 AA30             67             mov r2,30h
0088 AB31             68             mov r3,31h
008A 11F4             69     acall muld
008C 7E4E             70             mov r6,#4eh
008E 7F20             71             mov r7,#20h;除以20000
0090 311C             72     acall divd
0092 EB               73             mov a,r3
0093 FF               74             mov r7,a
0094 EA               75             mov a,r2
0095 FE               76             mov r6,a
                      77              ;**************** 
0096 7012             78             jnz aaa1;非0转移
0098 EF               79             mov a,r7
0099 B42802           80             cjne a,#28h,l2;累加器=28h顺序执行,否则转移*****判别测距小于等于40CM;
009C 01A2             81             ajmp l3
009E 4002             82             l2:jc l3;CY=1(累加器>28h)顺序执行,否则转移
00A0 01AA             83             ajmp aaa1
00A2 74BB             84             l3:mov a,#0bbh
00A4 F533             85             mov 33h,a
00A6 F534             86             mov 34h,a
00A8 01AC             87             ajmp l4
                      88             ;****************超近距离判别
                      89     
00AA                  90     aaa1:   
00AA 314F             91     acall hb2
00AC                  92     l4:
00AC 11B1             93     stlop:acall display
00AE 013B             94     AJMP LOOP    ;程序结束返回
00B0 22               95             ret
                      96     
                      97     ;显示子程序
00B1 9001AB           98     display:mov dptr,#tab ;指定查表启始地址
00B4 7EFF             99             mov r6,#255;显示255次
00B6                 100     dplop:  ;************千位显示
00B6 E533            101             mov a,33h
00B8 C4              102             swap a
00B9 540F            103             anl a,#0fh;
00BB 93              104             movc a,@a+dptr
00BC F580            105             mov p0,a
00BE C2A3            106             clr p2.3
00C0 11EF            107             acall d1ms
                     108             ;***********如不需要千位显示可删掉
00C2 E533            109             mov a,33h
00C4 540F            110             anl a,#0fh;屏蔽A中的高四位
00C6 93              111             MOVC A,@A+DPTR;查代码
00C7 D2A3            112             setb p2.3
00C9 F580            113             mov p0,a;送出百位的7段代码
00CB C2A4            114             clr p2.4;开百位显示
00CD 11EF            115             acall d1ms;显示1ms
00CF E534            116             mov a,34h
00D1 C4              117             swap a
00D2 540F            118             anl a,#0fh
00D4 93              119             movc a,@a+dptr
00D5 D2A4            120             setb p2.4
00D7 F580            121             mov p0,a
00D9 C2A5            122             clr p2.5;开十位显示
00DB 11EF            123             acall d1ms
00DD E534            124             mov a,34h
A51 MACRO ASSEMBLER  CHAO                                                                 02/18/2008 17:00:17 PAGE     3

00DF 540F            125             anl a,#0fh;屏蔽A中的高四位
00E1 93              126             MOVC A,@A+DPTR;查个位数的7段代码
00E2 D2A5            127             setb p2.5
00E4 F580            128             mov p0,a;送出个位的7段代码
00E6 C2A6            129             clr p2.6;开个位显示
00E8 11EF            130             acall d1ms;显示1ms
00EA D2A6            131             setb p2.6
00EC DEC8            132             djnz r6,dplop;循环
00EE 22              133             ret
                     134     
00EF 7F50            135       D1MS: MOV R7,#80;(按12MHZ算)
00F1 DFFE            136             DJNZ R7,$
00F3 22              137             RET
                     138     
                     139     ;MULD 功能:双字节二进制无符号数乘法 
                     140     ;入口条件:被乘数在R2、R3中,乘数在R6、R7中。
                     141     ;出口信息:乘积在R2、R3、R4、R5中。
                     142     ;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
00F4 EB              143     MULD: MOV A,R3; ;计算R3乘R7
00F5 8FF0            144     MOV B,R7
00F7 A4              145     MUL AB
00F8 ACF0            146     MOV R4,B; ;暂存部分积
00FA FD              147     MOV R5,A
00FB EB              148     MOV A,R3; ;计算R3乘R6
00FC 8EF0            149     MOV B,R6
00FE A4              150     MUL AB
00FF 2C              151     ADD A,R4; ;累加部分积
0100 FC              152     MOV R4,A
0101 E4              153     CLR A
0102 35F0            154     ADDC A,B
0104 FB              155     MOV R3,A
0105 EA              156     MOV A,R2; ;计算R2乘R7
0106 8FF0            157     MOV B,R7
0108 A4              158     MUL AB
0109 2C              159     ADD A,R4; ;累加部分积
010A FC              160     MOV R4,A
010B EB              161     MOV A,R3
010C 35F0            162     ADDC A,B
010E FB              163     MOV R3,A
010F E4              164     CLR A
0110 33              165     RLC A
0111 CA              166     XCH A,R2; ;计算R2乘R6
0112 8EF0            167     MOV B,R6
0114 A4              168     MUL AB
0115 2B              169     ADD A,R3; ;累加部分积
0116 FB              170     MOV R3,A
0117 EA              171     MOV A,R2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -