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

📄 cj2b.lst

📁 超声语音测距从板部分
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  CJ2B                                                                 09/19/2008 20:39:44 PAGE     1


MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN cj2b.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE cj2b.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     ;超近距离指示:    P1.5
                      10     ;超远距离指示:    P1.6
                      11     ;接收中断    P3.2
                      12     ;超声发射  P2.0
                      13     ;可供选择信号指示:P1.1/P1.5/P1.6/P1.7
                      14     ;注:此程序为方便学习者理解未进行优化
                      15     ;如要增大量程可增加定时器时间及发射时间
                      16     ;**************************
0000                  17     ORG 0000H
0000 0136             18     AJMP MAIN
0003                  19     ORG 0003H;定时器0外中断向量地址
0003 4129             20     AJMP TIME1
000B                  21     ORG 000BH ;定时器0的溢出中断向量地址
000B 410E             22     AJMP TIME0 ;跳转到定时器程序处
0036                  23     ORG 36H
                      24     
                      25     ;开机初始化
0036 74FF             26     MAIN:MOV A,#0FFH
0038 F580             27             MOV P0,A
003A F590             28             MOV P1,A
003C F5A0             29             MOV P2,A
003E F5B0             30             MOV P3,A
0040 C2A0             31             clr p2.0
0042 75250A           32             mov 25h,#10;100厘米初始报警信号1,以分米为单位
0045 752614           33             mov 26h,#20;200厘米初始报警信号2,以分米为单位
0048 E525             34     main1:mov a,25h
004A 31C4             35             acall timea
                      36     ;插入一段判断是否有按键输入的程序段
004C 20B30A           37     C1:     JB P3.3,B1
004F 5105             38             ACALL DELAY10;延时10毫秒消抖
0051 20B3F8           39             JB P3.3,C1
0054 30B3FD           40             JNB P3.3,$;等待按键松开
0057 0175             41             AJMP main2
0059 20B60A           42     B1:     JB P3.6,b2
005C 5105             43             ACALL DELAY10;延时10毫秒消抖
005E 20B6F8           44             JB P3.6,B1
0061 30B6FD           45             JNB P3.6,$;等待按键松开
0064 0525             46             inc 25h
0066 20B70A           47     b2:     JB P3.7,b3
0069 5105             48             ACALL DELAY10;延时10毫秒消抖
006B 20B7F8           49             JB P3.7,B2
006E 30B7FD           50             JNB P3.7,$;等待按键松开
0071 1525             51             dec 25h
0073 0148             52     b3:     AJMP main1
0075 E526             53     main2:mov a,26h
0077 31C4             54             acall timea
0079 20B30A           55     c2:     jb p3.3,d1
007C 5105             56             acall delay10
007E 20B3F8           57             jb p3.3,c2
0081 30B3FD           58             jnb p3.3,$
A51 MACRO ASSEMBLER  CJ2B                                                                 09/19/2008 20:39:44 PAGE     2

0084 01A2             59             ajmp main3
0086 20B60A           60     D1:     jb p3.6,D2
0089 5105             61             acall delay10
008B 20B6F8           62             jb p3.6,d1
008E 30B6FD           63             jnb p3.6,$
0091 0526             64             inc 26h
0093 20B70A           65     D2:     JB P3.7,D3
0096 5105             66             ACALL DELAY10;延时10毫秒消抖
0098 20B7F8           67             JB P3.7,D2
009B 30B7FD           68             JNB P3.7,$;等待按键松开
009E 1526             69             dec 26h
00A0 0175             70     D3:ajmp main2
00A2 75F00A           71     main3:mov b,#10
00A5 E525             72             mov a,25h
00A7 A4               73             mul ab
00A8 F525             74             mov 25h,a
00AA 75F00A           75             mov b,#10
00AD E526             76             mov a,26h
00AF A4               77             mul ab
00B0 F527             78             mov 27h,a
00B2 85F026           79             mov 26h,b
                      80     
                      81     
00B5                  82     START:;测距程序开始
00B5 758901           83             MOV TMOD,#00000001B ;定时/计数器0工作于方式1
00B8 D2AF             84             SETB EA ;开总中断允许
00BA 7801             85     loop:   mov r0,#01h
00BC 75140A           86             mov 14h,#0ah;10h;超声波发射持续200us
00BF 758C00           87             MOV TH0,#0h
00C2 758A00           88             MOV TL0,#0h
00C5 D2A9             89             SETB ET0 ;开定时/计数器0益出中断允许
00C7 D28C             90             SETB TR0 ;定时/计数器0开始运行
00C9 B2A0             91     here:   cpl p2.0;;输出40KHz方波
00CB 00               92             nop
00CC 00               93             nop
00CD 00               94             nop
00CE 00               95             nop
00CF 00               96             nop
00D0 00               97             nop
00D1 00               98             nop
00D2 00               99             nop
00D3 00              100             nop
00D4 D514F2          101             djnz 14h,here
00D7 00              102             nop
00D8 00              103             nop
00D9 7FC8            104             MOV R7,#200
00DB DFFE            105             DJNZ R7,$
00DD 7FC8            106             MOV R7,#200
00DF DFFE            107             DJNZ R7,$
00E1 7FC8            108             MOV R7,#200
00E3 DFFE            109             DJNZ R7,$
00E5 7FC8            110             MOV R7,#200
00E7 DFFE            111             DJNZ R7,$
                     112             ;CX20106增益电阻为4.7欧时,必留(最小测距20CM)
00E9 7F64            113             MOV R7,#100
00EB DFFE            114             DJNZ R7,$;*超声波谐振等待
00ED D2A8            115             setb ex0;开定时器0外中断
00EF E8              116     deng:   mov a,r0;外中断r0为0,溢出中断r0为0
00F0 70FD            117             jnz deng;累加器非0转移
00F2 E9              118             mov a,r1;外中断r1为0,溢出中断r1为1;
00F3 7038            119             jnz stlop;累加器非0转移,超远量程显示,
00F5 7F3C            120             MOV R7,#60
00F7 00              121             NOP
00F8 7B00            122             mov r3,#0
00FA AC30            123             mov r4,30h
00FC AD31            124             mov r5,31h
A51 MACRO ASSEMBLER  CJ2B                                                                 09/19/2008 20:39:44 PAGE     3

00FE 3133            125             acall DV31
0100 00              126             NOP
0101 EC              127             mov a,r4
0102 FE              128             mov r6,a
0103 ED              129             mov a,r5
0104 FF              130             mov r7,a
                     131             ;#########################超近距离判别(判别量255之内)
0105 ED              132             mov a,r5;测距数值低位
0106 B52502          133             cjne a,25h,l2;;累加器中的数值=25H顺序执行,否则转移*****判别测距小于等于35H内数值
0109 2111            134             ajmp l3
010B 4004            135          l2:jc l3;CY=1(累加器>35h)顺序执行,否则转移
010D D295            136             setb p1.5
010F 2113            137             ajmp l10
0111 C295            138          l3:clr p1.5;测量数值小于设定范围时点亮LED
                     139             ;#############超远距离判别(判别量16位二进制数)
0113 EC              140     l10:    mov a,r4;测距数值高位
0114 B5260A          141             cjne a,26h,l4;;累加器=36H顺序执行,否则转移*****判别测距小于等于36H内数值
0117 ED              142          l5:mov a,r5
0118 B52702          143             cjne a,27h,l6;;累加器=37H顺序执行,否则转移*****判别测距小于等于37H内数
011B 2123            144             ajmp l7
011D 4008            145             l6:jc l8;CY=1(累加器>37h)顺序执行,否则转移
011F 2123            146             ajmp l7
0121 40F4            147          l4:jc l5;CY=1(累加器>36h)顺序执行,否则转移
0123 C296            148          l7:clr p1.6;测距值大于设定范围时点亮LED
0125 2129            149            ajmp l9
0127 D296            150          l8:setb p1.6
0129 00              151          l9:nop
                     152     ;########################## 
012A 3162            153             ACALL HB2
012C 00              154             NOP
012D 3182            155     stlop:acall display
012F 00              156             NOP
0130 01BA            157     AJMP LOOP
0132 22              158             ret        
                     159             
                     160     ;除以单字节二进制数
                     161     ;入口条件:被除数在R3、R4、R5中,除数在R7中。
                     162     ;出口信息:OV=0 时,双字节商在R4、R5中,OV=1 时溢出。
                     163     ;影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
0133 C3              164     DV31:CLR C
0134 EB              165     MOV A,R3
0135 9F              166     SUBB A,R7
0136 4003            167     JC DV30
0138 D2D2            168     SETB OV; ;商溢出
013A 22              169     RET
013B 7A10            170     DV30:MOV R2,#10H; ;求R3R4R5/R7-→R4R5
013D C3              171     DM23:CLR C
013E ED              172     MOV A,R5
013F 33              173     RLC A
0140 FD              174     MOV R5,A
0141 EC              175     MOV A,R4
0142 33              176     RLC A
0143 FC              177     MOV R4,A
0144 EB              178     MOV A,R3
0145 33              179     RLC A
0146 FB              180     MOV R3,A
0147 92D5            181     MOV F0,C
0149 C3              182     CLR C
014A 9F              183     SUBB A,R7
014B B0D5            184     ANL C,/F0
014D 4002            185     JC DM24
014F FB              186     MOV R3,A
0150 0D              187     INC R5
0151 DAEA            188     DM24:DJNZ R2,DM23
0153 EB              189     MOV A,R3; ;四舍五入
0154 2B              190     ADD A,R3
A51 MACRO ASSEMBLER  CJ2B                                                                 09/19/2008 20:39:44 PAGE     4

0155 4003            191     JC DM25
0157 9F              192     SUBB A,R7
0158 4005            193     JC DM26
015A 0D              194     DM25:INC R5
015B ED              195     MOV A,R5
015C 7001            196     JNZ DM26
015E 0C              197     INC R4
015F C2D2            198     DM26:CLR OV
0161 22              199     RET; ;商在R4R5
                     200     
                     201     ;HB2 功能:双字节十六进制整数转换成双字节BCD码整数
                     202     ;入口条件:待转换的双字节十六进制整数在R6、R7中。
                     203     ;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
                     204     ;影响资源:PSW、A、R2~R7 堆栈需求: 2字节
0162 E4              205     HB2: CLR A; ;BCD码初始化
0163 FB              206     MOV R3,A
0164 FC              207     MOV R4,A
0165 FD              208     MOV R5,A
0166 7A10            209     MOV R2,#10H; ;转换双字节十六进制整数
0168 EF              210     HB3: MOV A,R7; ;从高端移出待转换数的一位到CY中
0169 33              211     RLC A
016A FF              212     MOV R7,A
016B EE              213     MOV A,R6
016C 33              214     RLC A

⌨️ 快捷键说明

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