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

📄 ad549.lst

📁 单片机开发板源程序 适合初学者 第五部分 报警产生器
💻 LST
字号:
A51 MACRO ASSEMBLER  AD549                                                                09/13/2007 02:45:10 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN AD549.OBJ
ASSEMBLER INVOKED BY: C:\tools\Keil\C51\BIN\A51.EXE AD549.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;液晶板显示当前模拟电压
                       2     ;  功能:数码显示0.20---2.00
                       3     ;  作者:http://www.mcuprog.com
                       4     ;        05-02-01
                       5     ;***********************************************************
                       6     ;***********************************************************
  00A2                 7     E               BIT     P2.2            ;LCD口线的定义
  00A1                 8     RW              BIT     P2.1
  00A0                 9     RS              BIT     P2.0
  0080                10     LCDPORT         EQU     P0
                      11     
                      12     ;AD(TLC549)引脚
  00B7                13     AD_CS           BIT     P3.7
  00B5                14     AD_CK           BIT     P3.5
  00B6                15     AD_OUT          BIT     P3.6
                      16     
  002E                17     CMD_BYTE        EQU     2EH
  002F                18     DAT_BYTE        EQU     2FH
                      19     
  0000                20     KEYBIT          BIT     00H             ;有按键按下标志
  0030                21     ADBL            EQU     30H             ;当前AD的变量(00到255间),
  0031                22     LEDBAI          EQU     31H             ;显示的百
  0032                23     LEDSHI          EQU     32H             ;显示的十
  0033                24     LEDGE           EQU     33H             ;显示的个
  0034                25     LEDSM           EQU     34H             ;现在扫到第几个LED
  0035                26     KEYTIME         EQU     35H             ;20MS扫一次按键
0000                  27                     ORG     0000H
0000 0130             28                     AJMP    MAIN
000B                  29                     ORG     000BH   
000B 2100             30                     AJMP    TIME0_1
                      31     ;以下为主程序的开始
0030                  32                     ORG     0030H
0030                  33     MAIN:           
0030 752000           34                     MOV     20H,#00H
0033 120156           35                     LCALL   INITLCD
0036 753000           36                     MOV     ADBL,#00H
0039 753504           37                     MOV     KEYTIME,#04H
003C 752E80           38                     MOV     CMD_BYTE,#80H            
003F 120132           39                     LCALL   WRITE_CMD
0042 120181           40                     LCALL   DELAY0
0045 752F41           41                     MOV     DAT_BYTE,#"A"
0048 120144           42                     LCALL   WRITE_DAT
004B 752F44           43                     MOV     DAT_BYTE,#"D"
004E 120144           44                     LCALL   WRITE_DAT
0051 752F43           45                     MOV     DAT_BYTE,#"C"
0054 120144           46                     LCALL   WRITE_DAT
0057 752F3A           47                     MOV     DAT_BYTE,#":"
005A 120144           48                     LCALL   WRITE_DAT
005D 758CEE           49                     MOV     TH0,#0EEH       ;16位的定时器,定时5MS
0060 758A00           50                     MOV     TL0,#00H
0063 758901           51                     MOV     TMOD,#01H
0066 D28C             52                     SETB    TR0
0068 75A882           53                     MOV     IE,#82H         ;定时器0中断
006B 80FE             54                     SJMP    $
                      55                     
                      56     
                      57     
0100                  58                     ORG     0100H
A51 MACRO ASSEMBLER  AD549                                                                09/13/2007 02:45:10 PAGE     2

0100 758CEE           59     TIME0_1:        MOV     TH0,#0EEH
0103 758A00           60                     MOV     TL0,#00H
0106 D5350C           61                     DJNZ    KEYTIME,TIME0_RE
0109 753504           62                     MOV     KEYTIME,#04H    ;每20MS进行一次按键扫描
010C 120116           63                     LCALL   DAC0832
010F 1201A0           64                     LCALL   JSDPBL
0112 120187           65                     LCALL   DISPDPBL        
0115 32               66     TIME0_RE:       RETI
                      67     
                      68     ;以下为AD转换程序
0116 C2B7             69     DAC0832:        CLR     AD_CS
0118 7F08             70                     MOV     R7,#08H
011A 753000           71                     MOV     ADBL,#00H
011D D2B5             72     READ_1:         SETB    AD_CK
011F 20B603           73                     JB      AD_OUT,SETBC
0122 C3               74                     CLR     C
0123 2126             75                     AJMP    READ_2
0125 D3               76     SETBC:          SETB    C
0126 E530             77     READ_2:         MOV     A,ADBL
0128 33               78                     RLC     A
0129 F530             79                     MOV     ADBL,A
012B C2B5             80                     CLR     AD_CK
012D DFEE             81                     DJNZ    R7,READ_1
012F D2B7             82                     SETB    AD_CS                   
0131 22               83                     RET
                      84     
                      85     
                      86     ;LCD1602要用到的一些子程序
                      87     ;写命令(入口参数CMD_BYTE)
0132 C2A0             88     WRITE_CMD:      CLR     RS
0134 C2A1             89                     CLR     RW
0136 E52E             90                     MOV     A,CMD_BYTE
0138 F580             91                     MOV     LCDPORT,A
013A D2A2             92                     SETB    E
013C 00               93                     NOP
013D 00               94                     NOP
013E C2A2             95                     CLR     E
0140 120181           96                     LCALL   DELAY0
0143 22               97                     RET
                      98     
                      99     ;写显示数据(入口参数DAT_BYTE)
0144 D2A0            100     WRITE_DAT:      SETB    RS
0146 C2A1            101                     CLR     RW
0148 E52F            102                     MOV     A,DAT_BYTE
014A F580            103                     MOV     LCDPORT,A
014C D2A2            104                     SETB    E
014E 00              105                     NOP
014F 00              106                     NOP
0150 C2A2            107                     CLR     E
0152 120181          108                     LCALL   DELAY0
0155 22              109                     RET
                     110     
                     111     ;LCD显示初始化
0156 752E30          112     INITLCD:        MOV     CMD_BYTE,#30H
0159 120132          113                     LCALL   WRITE_CMD
015C 752E30          114                     MOV     CMD_BYTE,#30H
015F 120132          115                     LCALL   WRITE_CMD
0162 752E30          116                     MOV     CMD_BYTE,#30H
0165 120132          117                     LCALL   WRITE_CMD
0168 752E38          118                     MOV     CMD_BYTE,#38H           ;设定工作方式
016B 120132          119                     LCALL   WRITE_CMD
016E 752E0C          120                     MOV     CMD_BYTE,#0CH           ;显示状态设置
0171 120132          121                     LCALL   WRITE_CMD
0174 752E01          122                     MOV     CMD_BYTE,#01H           ;清屏
0177 120132          123                     LCALL   WRITE_CMD
017A 752E06          124                     MOV     CMD_BYTE,#06H           ;输入方式设置
A51 MACRO ASSEMBLER  AD549                                                                09/13/2007 02:45:10 PAGE     3

017D 120132          125                     LCALL   WRITE_CMD               
0180 22              126                     RET
                     127     ;延时子程序
0181 7DA0            128     DELAY0:         MOV     R5,#0A0H
0183 00              129     DELAY1:         NOP
0184 DDFD            130                     DJNZ    R5,DELAY1
0186 22              131                     RET
                     132     
                     133     ;显示变量
0187 752E85          134     DISPDPBL:       MOV     CMD_BYTE,#85H            
018A 120132          135                     LCALL   WRITE_CMD
018D 85312F          136                     MOV     DAT_BYTE,LEDBAI
0190 120144          137                     LCALL   WRITE_DAT
0193 85322F          138                     MOV     DAT_BYTE,LEDSHI
0196 120144          139                     LCALL   WRITE_DAT
0199 85332F          140                     MOV     DAT_BYTE,LEDGE
019C 120144          141                     LCALL   WRITE_DAT
019F 22              142                     RET
                     143     
                     144     ;计算显示的值
01A0 E530            145     JSDPBL:         MOV     A,ADBL
01A2 75F064          146                     MOV     B,#64H
01A5 84              147                     DIV     AB
01A6 4430            148                     ORL     A,#30H
01A8 F531            149                     MOV     LEDBAI,A
01AA E5F0            150                     MOV     A,B
01AC 75F00A          151                     MOV     B,#0AH
01AF 84              152                     DIV     AB
01B0 4430            153                     ORL     A,#30H
01B2 F532            154                     MOV     LEDSHI,A
01B4 E5F0            155                     MOV     A,B
01B6 4430            156                     ORL     A,#30H
01B8 F533            157                     MOV     LEDGE,A 
01BA 22              158                     RET                     
                     159                     END     
                             
                             
                             
                             
                             
                             
                             
                             
A51 MACRO ASSEMBLER  AD549                                                                09/13/2007 02:45:10 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ADBL . . . . . . .  N NUMB   0030H   A   
AD_CK. . . . . . .  B ADDR   00B0H.5 A   
AD_CS. . . . . . .  B ADDR   00B0H.7 A   
AD_OUT . . . . . .  B ADDR   00B0H.6 A   
B. . . . . . . . .  D ADDR   00F0H   A   
CMD_BYTE . . . . .  N NUMB   002EH   A   
DAC0832. . . . . .  C ADDR   0116H   A   
DAT_BYTE . . . . .  N NUMB   002FH   A   
DELAY0 . . . . . .  C ADDR   0181H   A   
DELAY1 . . . . . .  C ADDR   0183H   A   
DISPDPBL . . . . .  C ADDR   0187H   A   
E. . . . . . . . .  B ADDR   00A0H.2 A   
IE . . . . . . . .  D ADDR   00A8H   A   
INITLCD. . . . . .  C ADDR   0156H   A   
JSDPBL . . . . . .  C ADDR   01A0H   A   
KEYBIT . . . . . .  B ADDR   0020H.0 A   
KEYTIME. . . . . .  N NUMB   0035H   A   
LCDPORT. . . . . .  D ADDR   0080H   A   
LEDBAI . . . . . .  N NUMB   0031H   A   
LEDGE. . . . . . .  N NUMB   0033H   A   
LEDSHI . . . . . .  N NUMB   0032H   A   
LEDSM. . . . . . .  N NUMB   0034H   A   
MAIN . . . . . . .  C ADDR   0030H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
READ_1 . . . . . .  C ADDR   011DH   A   
READ_2 . . . . . .  C ADDR   0126H   A   
RS . . . . . . . .  B ADDR   00A0H.0 A   
RW . . . . . . . .  B ADDR   00A0H.1 A   
SETBC. . . . . . .  C ADDR   0125H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TIME0_1. . . . . .  C ADDR   0100H   A   
TIME0_RE . . . . .  C ADDR   0115H   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   
WRITE_CMD. . . . .  C ADDR   0132H   A   
WRITE_DAT. . . . .  C ADDR   0144H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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