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

📄 sloid_1.lst

📁 该程序是用汇编语言编写的用于测试石油凝固点的程序,该程序对于应用汇编编程的初学者有很大的参考 价值
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  SLOID_1                                                              09/16/2005 20:22:45 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN sloid_1.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE sloid_1.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

  0090                 1     lcd_clk       bit        p1.0
  0091                 2     lcd_do        bit        p1.1    
  003C                 3     lcd_buf       equ        3ch ;3ch,3dh,3eh,3fh,40h分别存放显示温度的高-低
                       4                       
  FBFF                 5     tim8253co     equ        0fbffh
  F8FF                 6     tim8253a      equ        0f8ffh
  F9FF                 7     tim8253b      equ        0f9ffh
  FAFF                 8     tim8253c      equ        0faffh
                       9     
  0080                10     dog_so        bit        p0.0
  0081                11     dog_si        bit        p0.1
  0082                12     dog_sck       bit        p0.2
  00A4                13     dog_cs        bit        p2.4
                      14     
  0006                15     wren          equ        00000110b    ;设置写使能锁存器(准许)
  0004                16     wrdi          equ        00000100b    ;复位写使能锁存器(不准许)
  0005                17     rdsr          equ        00000101b    ;读状态据存器
  0001                18     wrsr1         equ        00000001b    ;写状态据存器
                      19     
  0030                20     key           equ        30h
  0000                21     key_bit       bit        00h          ;确实有键按下标志
  0001                22     key_on        bit        01h          ;防止按键连续按下处理
  0002                23     finsh         bit        02h          ;凝固点到
  0003                24     judge_key     bit        03h          ;判断是否有延时
                      25     
  0031                26     ray_vol       equ        31h          ;测试键按下时光电初始值
  0032                27     ray_voh       equ        32h
                      28     
  0033                29     ray_vo3h      equ        33h          ;凝固时光电电压与初始值的
  0034                30     ray_vo3l      equ        34h          ;固定值差值,在调试时补上
  0035                31     count         equ        35h          ;凝固点到的次数,防止误动作
                      32     
                      33     
  0036                34     sloid_sign    equ        36h
  0037                35     sloid_temph   equ        37h
  0038                36     sloid_templ   equ        38h          ;凝固点温度
  0039                37     temp_sign     equ        39h
  003A                38     temph         equ        3ah
  003B                39     templ         equ        3bh
                      40     
  0081                41     tlc_do        bit        p0.1
  0080                42     tlc_clk       bit        p0.0
  00A3                43     tlc_cs        bit        p2.3
                      44     
                      45     
                      46     ;-----------------------------------
                      47             
0000                  48             org   0000h
0000 00               49             nop
0001 01C7             50             ajmp  main
000B                  51             org   000bh
000B 00               52             nop
000C 00               53             nop
000D 0130             54             ajmp  intp
0030                  55             org   0030h
0030 C2A4             56     intp:   clr   dog_cs
0032 00               57             nop
0033 00               58             nop
A51 MACRO ASSEMBLER  SLOID_1                                                              09/16/2005 20:22:45 PAGE     2

0034 D2A4             59             setb  dog_cs
0036 C0E0             60             push  acc
0038 C0D0             61             push  psw
003A 75D008           62             mov   psw,#08h
003D 758CB8           63             mov   th0,#0b8h
0040 758AF0           64             mov   tl0,#0f0h
0043 D28C             65             setb  tr0   
                      66             ;----------------------------
0045 C294             67             clr   p1.4
0047 E580             68             mov   a,p0
0049 B4FF02           69             cjne  a,#0ffh,hav_key
004C 0162             70             ajmp  abb
004E 200113           71     hav_key:jb    key_on,abd
0051 30030A           72             jnb   judge_key,abc
0054 C203             73             clr   judge_key
0056 D200             74             setb  key_bit
0058 D201             75             setb  key_on
005A F530             76             mov   key,a
005C 0164             77             ajmp  abd
005E D203             78     abc:    setb  judge_key
0060 0164             79             ajmp  abd
0062 C201             80     abb:    clr   key_on
0064 D294             81     abd:    setb  p1.4
                      82             ;----------------------------
0066 209559           83             jb    p1.5,break        ;测试没开始不用比较光电
0069 31CC             84             acall tlc549
                      85     ;*************************************
                      86     ;*      
                      87     ;*************************************        
006B ED               88             mov   a,r5
006C 7006             89             jnz   qq1
006E EE               90             mov   a,r6
006F C3               91             clr   c
0070 943D             92             subb  a,#3dh    
0072 4037             93             jc    qq2
0074 753500           94     qq1:    mov   count,#00h
0077 01C2             95             ajmp  break
                      96     ;*************************************
                      97     ;*
                      98     ;*************************************
                      99            
0079 749A            100             mov   a,#9ah
007B C3              101             clr   c
007C 9531            102             subb  a,ray_vol
007E F9              103             mov   r1,a
007F 7499            104             mov   a,#99h
0081 9532            105             subb  a,ray_voh
0083 FA              106             mov   r2,a
0084 C3              107             clr   c
0085 E9              108             mov   a,r1
0086 2E              109             add   a,r6
0087 D4              110             da    a
0088 EA              111             mov   a,r2
0089 3D              112             addc  a,r5
008A D4              113             da    a
                     114          
008B 4035            115             jc    break             ;C=1说明光电的初始值<测量值
                     116        
008D EE              117             mov   a,r6
008E FA              118             mov   r2,a
008F ED              119             mov   a,r5
0090 FB              120             mov   r3,a
0091 AC31            121             mov   r4,ray_vol
0093 AD32            122             mov   r5,ray_voh
0095 12028D          123             lcall dubcds             ;计算光电的差值
0098 749A            124             mov   a,#9ah
A51 MACRO ASSEMBLER  SLOID_1                                                              09/16/2005 20:22:45 PAGE     3

009A 9C              125             subb  a,r4
009B F9              126             mov   r1,a
009C 7499            127             mov   a,#99h
009E 9D              128             subb  a,r5
009F FA              129             mov   r2,a
00A0 C3              130             clr   c
00A1 E534            131             mov   a,ray_vo3l          ;光电的差值>固定差值,则凝固
00A3 29              132             add   a,r1
00A4 D4              133             da    a
00A5 E533            134             mov   a,ray_vo3h
00A7 3A              135             addc  a,r2
00A8 D4              136             da    a
00A9 4017            137             jc    break
00AB                 138     qq2:  
00AB 0535            139             inc   count
00AD E535            140             mov   a,count
00AF B43210          141             cjne  a,#32h,break         ;连续判断5次,才能防止误动作
00B2 753500          142             mov   count,#00h
00B5 D202            143             setb  finsh
00B7 D295            144             setb  p1.5
00B9 853936          145             mov   sloid_sign,temp_sign
00BC 853A37          146             mov   sloid_temph,temph
00BF 853B38          147             mov   sloid_templ,templ
                     148                     
00C2 D0D0            149     break:  pop   psw
00C4 D0E0            150             pop   acc
00C6 32              151             reti        
                     152             
                     153             
                     154             
00C7 758160          155     main:   mov   sp,#60h
00CA 75D000          156             mov   psw,#00h
00CD 7590FF          157             mov   p1,#0ffh
00D0 752000          158             mov   20h,#00h
00D3 753400          159             mov   ray_vo3l,#00h      ;光电电压固定差值
00D6 753302          160             mov   ray_vo3h,#02h
00D9 7820            161             mov   r0,#20h
00DB 7F40            162             mov   r7,#40h
00DD E4              163             clr   a
00DE F6              164     inta:   mov   @r0,a                ;初始化
00DF DFFD            165             djnz  r7,inta
00E1 7590FF          166             mov   p1,#0ffh
00E4 75A0FF          167             mov   p2,#0ffh
00E7 120219          168             lcall dog
00EA 758921          169             mov   tmod,#21h              
00ED 758CB8          170             mov   th0,#0b8h
00F0 758AF0          171             mov   tl0,#0f0h
00F3 75A882          172             mov   ie,#82h
00F6 D28C            173             setb  tr0
00F8 1201EC          174             lcall wr_53
00FB                 175     circe:  ;-------------------------主程序开始
00FB C2A4            176             clr   dog_cs
00FD 00              177             nop
00FE 00              178             nop
00FF D2A4            179             setb  dog_cs
0101 30001C          180             jnb   key_bit,read_temp
0104 C200            181             clr   key_bit
0106 E530            182             mov   a,key
0108 20E00E          183             jb    acc.0,p11
010B 309512          184             jnb   p1.5,read_temp
010E C295            185             clr   p1.5                ;制冷开始
0110 1201CC          186             lcall tlc549
0113 8E31            187             mov   ray_vol,r6
0115 8D32            188             mov   ray_voh,r5
0117 2120            189             ajmp  read_temp        
0119 20E104          190     p11:    jb    acc.1,read_temp
A51 MACRO ASSEMBLER  SLOID_1                                                              09/16/2005 20:22:45 PAGE     4

011C D295            191             setb  p1.5                ;停止制冷
011E C202            192             clr   finsh
0120                 193     read_temp:
                     194                      
0120 2093D8          195             jb    p1.3,circe
0123 90FAFF          196             mov   dptr,#tim8253c
0126 E0              197             movx  a,@dptr
0127 F4              198             cpl   a
0128 F8              199             mov   r0,a
0129 E0              200             movx  a,@dptr
012A F4              201             cpl   a
012B F9              202             mov   r1,a
012C C3              203             clr   c
012D E8              204             mov   a,r0
012E 9460            205             subb  a,#60h
0130 F8              206             mov   r0,a
0131 E9              207             mov   a,r1
0132 9463            208             subb  a,#63h
0134 F9              209             mov   r1,a
0135 400C            210             jc    dc1
0137 120271          211             lcall dubcd
013A 75390A          212             mov   temp_sign,#0ah     ;temp_sign=0ah说明温度为正
013D 8D3A            213             mov   temph,r5
013F 8C3B            214             mov   templ,r4
0141 2158            215             ajmp  wr_lcd
0143 C3              216     dc1:    clr   c
0144 E8              217             mov   a,r0
0145 F4              218             cpl   a
0146 2401            219             add   a,#01h
0148 F8              220             mov   r0,a
0149 E9              221             mov   a,r1
014A F4              222             cpl   a
014B 3400            223             addc  a,#00h
014D F9              224             mov   r1,a
014E 120271          225             lcall dubcd
0151 75390B          226             mov   temp_sign,#0bh     ;temp_sign=0bh说明温度为负 
0154 8D3A            227             mov   temph,r5
0156 8C3B            228             mov   templ,r4
0158 300209          229     wr_lcd: jnb   finsh,abh
015B 853639          230             mov   temp_sign,sloid_sign
015E 85373A          231             mov   temph,sloid_temph
0161 85383B          232             mov   templ,sloid_templ
                     233     
0164 783C            234     abh:    mov   r0,#lcd_buf
0166 760A            235             mov   @r0,#0ah            ;-
0168 08              236             inc   r0
0169 A639            237             mov   @r0,temp_sign
016B 08              238             inc   r0
016C E53A            239             mov   a,temph
016E 54F0            240             anl   a,#0f0h
0170 C4              241             swap  a
0171 F6              242             mov   @r0,a
0172 08              243             inc   r0
0173 E53A            244             mov   a,temph
0175 540F            245             anl   a,#0fh
0177 F6              246             mov   @r0,a
0178 08              247             inc   r0
0179 E53B            248             mov   a,templ
017B 54F0            249             anl   a,#0f0h
017D C4              250             swap  a
017E F6              251             mov   @r0,a
017F 7F05            252             mov   r7,#05h
0181 793C            253             mov   r1,#lcd_buf
0183 783C            254             mov   r0,#lcd_buf 
0185 E6              255     aaq:    mov   a,@r0
0186 900191          256             mov   dptr,#arry
A51 MACRO ASSEMBLER  SLOID_1                                                              09/16/2005 20:22:45 PAGE     5

0189 93              257             movc  a,@a+dptr
018A F7              258             mov   @r1,a
018B 09              259             inc   r1
018C 08              260             inc   r0
018D DFF6            261             djnz  r7,aaq
018F 21A1            262             ajmp  data_lcd
0191 88BBC191        263     arry:   db    88h,0bbh,0c1h,91h,0b2h,94h,84h,0b8h,80h,90h
0195 B29484B8                
0199 8090                    
019B FFF7CC83        264             db    0ffh,0f7h,0cch,83h,0c4h,0e4h
019F C4E4                    
01A1                 265     data_lcd:
01A1 7F05            266             mov   r7,#05h
01A3 793C            267             mov   r1,#lcd_buf
                     268             ;-----------------------
01A5 E9              269             mov   a,r1

⌨️ 快捷键说明

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