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

📄 dac0832.lst

📁 单片机开发板源程序适合初学者 第二部分DA转换输出
💻 LST
字号:
A51 MACRO ASSEMBLER  DAC0832                                                              09/13/2007 03:37:31 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;实验名称:串口发送一个要输出的电压(00--FF)
                       2     ;  功能:模数转换输出一个当前串口发出的电压
                       3     ;输出的电压为V=5*KK/255。其中KK为串口接收到的二进制数
                       4     ;  作者:http://www.mcuprog.com
                       5     ;        05-02-01
                       6     ;***********************************************************
                       7     ;***********************************************************
  00A2                 8     E               BIT     P2.2            ;LCD口线的定义
  00A1                 9     RW              BIT     P2.1
  00A0                10     RS              BIT     P2.0
  0080                11     LCDPORT         EQU     P0
                      12     
                      13     ;DAC0832的引脚
  00B4                14     DAC_WR          BIT     P3.4
  00B3                15     DAC_CS          BIT     P3.3
                      16     
  002E                17     CMD_BYTE        EQU     2EH
  002F                18     DAT_BYTE        EQU     2FH
  0030                19     DABL            EQU     30H             ;当前DA的变量(00到255间),从串口接收
  0031                20     LEDBAI          EQU     31H             ;显示的百
  0032                21     LEDSHI          EQU     32H             ;显示的十
  0033                22     LEDGE           EQU     33H             ;显示的个
  0035                23     KEYTIME         EQU     35H
                      24     
                      25     
  0000                26     KEYBIT          BIT     00H             ;
  0001                27     RS232OKBIT      BIT     01H             ;串口接收到数据
0000                  28                     ORG     0000H
0000 0130             29                     AJMP    MAIN
000B                  30                     ORG     000BH   
000B 2100             31                     AJMP    TIME0_1
0023                  32                     ORG     0023H
0023 C298             33     RS232:          CLR     RI
0025 E599             34                     MOV     A,SBUF
0027 F530             35                     MOV     DABL,A
0029 D201             36                     SETB    RS232OKBIT
002B 32               37                     RETI
                      38                     
                      39     ;以下为主程序的开始
0030                  40                     ORG     0030H
0030 752000           41     MAIN:           MOV     20H,#00H
0033 120180           42                     LCALL   INITLCD
0036 753014           43                     MOV     DABL,#20
0039 753504           44                     MOV     KEYTIME,#04H
003C 752E80           45                     MOV     CMD_BYTE,#80H            
003F 12015C           46                     LCALL   WRITE_CMD
0042 1201AB           47                     LCALL   DELAY0
0045 752F44           48                     MOV     DAT_BYTE,#"D"
0048 12016E           49                     LCALL   WRITE_DAT
004B 752F41           50                     MOV     DAT_BYTE,#"A"
004E 12016E           51                     LCALL   WRITE_DAT
0051 752F43           52                     MOV     DAT_BYTE,#"C"
0054 12016E           53                     LCALL   WRITE_DAT
0057 752F3A           54                     MOV     DAT_BYTE,#":"
005A 12016E           55                     LCALL   WRITE_DAT
005D 758CEE           56                     MOV     TH0,#0EEH       ;16位的定时器,定时5MS
0060 758A00           57                     MOV     TL0,#00H
0063 758921           58                     MOV     TMOD,#21H
A51 MACRO ASSEMBLER  DAC0832                                                              09/13/2007 03:37:31 PAGE     2

0066 758DFD           59                     MOV     TH1,#0FDH       ;波特率9600
0069 758BFD           60                     MOV     TL1,#0FDH       
006C 759850           61                     MOV     SCON,#50H
006F D28E             62                     SETB    TR1
0071 D29C             63                     SETB    REN             
0073 D28C             64                     SETB    TR0
0075 75A892           65                     MOV     IE,#92H         ;定时器0中断
0078 D201             66                     SETB    RS232OKBIT
007A 80FE             67                     SJMP    $
                      68     
0100                  69                     ORG     0100H
0100 758CEE           70     TIME0_1:        MOV     TH0,#0EEH
0103 758A00           71                     MOV     TL0,#00H
0106 D53512           72                     DJNZ    KEYTIME,TIME0_RE
0109 753504           73                     MOV     KEYTIME,#04H
010C 7590DF           74                     MOV     P1,#0DFH
010F 12011C           75                     LCALL   KEYSCAN
0112 12014D           76                     LCALL   DAC0832
0115 1201CA           77                     LCALL   JSDPBL
0118 1201B1           78                     LCALL   DISPDPBL        
011B 32               79     TIME0_RE:       RETI
                      80     
                      81     ;按键扫描
011C 7590FF           82     KEYSCAN:        MOV     P1,#0FFH
011F 209011           83     NEXT_UP:        JB      P1.0,NEXT_DN            ;+键            
0122 200024           84                     JB      KEYBIT,SCAN_RE
0125 D200             85                     SETB    KEYBIT
0127 0530             86                     INC     DABL
0129 E530             87                     MOV     A,DABL
012B B4C91B           88                     CJNE    A,#201,SCAN_RE          ;大于200反回20
012E 75300A           89                     MOV     DABL,#10
0131 2149             90                     AJMP    SCAN_RE
0133 209111           91     NEXT_DN:        JB      P1.1,NEXT_NC            ;-键
0136 200010           92                     JB      KEYBIT,SCAN_RE
0139 D200             93                     SETB    KEYBIT
013B 1530             94                     DEC     DABL
013D E530             95                     MOV     A,DABL
013F B41307           96                     CJNE    A,#19,SCAN_RE           ;小于20反回200
0142 7530C8           97                     MOV     DABL,#200               
0145 2149             98                     AJMP    SCAN_RE 
0147 C200             99     NEXT_NC:        CLR     KEYBIT                  ;清标志用于等待下一次按键
0149 7590FF          100     SCAN_RE:        MOV     P1,#0FFH
014C 22              101                     RET
                     102     
                     103     
                     104     ;以下为AD转换程序
014D C2B3            105     DAC0832 :       CLR     DAC_CS
014F E530            106                     MOV     A,DABL
0151 F580            107                     MOV     P0,A
0153 C2B4            108                     CLR     DAC_WR
0155 00              109                     NOP
0156 00              110                     NOP
0157 D2B4            111                     SETB    DAC_WR
0159 D2B3            112                     SETB    DAC_CS                  
015B 22              113                     RET
                     114     
                     115     ;LCD1602要用到的一些子程序
                     116     ;写命令(入口参数CMD_BYTE)
015C C2A0            117     WRITE_CMD:      CLR     RS
015E C2A1            118                     CLR     RW
0160 E52E            119                     MOV     A,CMD_BYTE
0162 F580            120                     MOV     LCDPORT,A
0164 D2A2            121                     SETB    E
0166 00              122                     NOP
0167 00              123                     NOP
0168 C2A2            124                     CLR     E
A51 MACRO ASSEMBLER  DAC0832                                                              09/13/2007 03:37:31 PAGE     3

016A 1201AB          125                     LCALL   DELAY0
016D 22              126                     RET
                     127     
                     128     ;写显示数据(入口参数DAT_BYTE)
016E D2A0            129     WRITE_DAT:      SETB    RS
0170 C2A1            130                     CLR     RW
0172 E52F            131                     MOV     A,DAT_BYTE
0174 F580            132                     MOV     LCDPORT,A
0176 D2A2            133                     SETB    E
0178 00              134                     NOP
0179 00              135                     NOP
017A C2A2            136                     CLR     E
017C 1201AB          137                     LCALL   DELAY0
017F 22              138                     RET
                     139     
                     140     ;LCD显示初始化
0180 752E30          141     INITLCD:        MOV     CMD_BYTE,#30H
0183 12015C          142                     LCALL   WRITE_CMD
0186 752E30          143                     MOV     CMD_BYTE,#30H
0189 12015C          144                     LCALL   WRITE_CMD
018C 752E30          145                     MOV     CMD_BYTE,#30H
018F 12015C          146                     LCALL   WRITE_CMD
0192 752E38          147                     MOV     CMD_BYTE,#38H           ;设定工作方式
0195 12015C          148                     LCALL   WRITE_CMD
0198 752E0C          149                     MOV     CMD_BYTE,#0CH           ;显示状态设置
019B 12015C          150                     LCALL   WRITE_CMD
019E 752E01          151                     MOV     CMD_BYTE,#01H           ;清屏
01A1 12015C          152                     LCALL   WRITE_CMD
01A4 752E06          153                     MOV     CMD_BYTE,#06H           ;输入方式设置
01A7 12015C          154                     LCALL   WRITE_CMD               
01AA 22              155                     RET
                     156     ;延时子程序
01AB 7DA0            157     DELAY0:         MOV     R5,#0A0H
01AD 00              158     DELAY1:         NOP
01AE DDFD            159                     DJNZ    R5,DELAY1
01B0 22              160                     RET
                     161     
                     162     ;显示变量
01B1 752E85          163     DISPDPBL:       MOV     CMD_BYTE,#85H            
01B4 12015C          164                     LCALL   WRITE_CMD
01B7 85312F          165                     MOV     DAT_BYTE,LEDBAI
01BA 12016E          166                     LCALL   WRITE_DAT
01BD 85322F          167                     MOV     DAT_BYTE,LEDSHI
01C0 12016E          168                     LCALL   WRITE_DAT
01C3 85332F          169                     MOV     DAT_BYTE,LEDGE
01C6 12016E          170                     LCALL   WRITE_DAT
01C9 22              171                     RET
                     172     
                     173     ;计算显示的值
01CA E530            174     JSDPBL:         MOV     A,DABL
01CC 75F064          175                     MOV     B,#64H
01CF 84              176                     DIV     AB
01D0 4430            177                     ORL     A,#30H
01D2 F531            178                     MOV     LEDBAI,A
01D4 E5F0            179                     MOV     A,B
01D6 75F00A          180                     MOV     B,#0AH
01D9 84              181                     DIV     AB
01DA 4430            182                     ORL     A,#30H
01DC F532            183                     MOV     LEDSHI,A
01DE E5F0            184                     MOV     A,B
01E0 4430            185                     ORL     A,#30H
01E2 F533            186                     MOV     LEDGE,A 
01E4 22              187                     RET                     
                     188                     END     
                             
A51 MACRO ASSEMBLER  DAC0832                                                              09/13/2007 03:37:31 PAGE     4

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


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

B. . . . . . . . .  D ADDR   00F0H   A   
CMD_BYTE . . . . .  N NUMB   002EH   A   
DABL . . . . . . .  N NUMB   0030H   A   
DAC0832. . . . . .  C ADDR   014DH   A   
DAC_CS . . . . . .  B ADDR   00B0H.3 A   
DAC_WR . . . . . .  B ADDR   00B0H.4 A   
DAT_BYTE . . . . .  N NUMB   002FH   A   
DELAY0 . . . . . .  C ADDR   01ABH   A   
DELAY1 . . . . . .  C ADDR   01ADH   A   
DISPDPBL . . . . .  C ADDR   01B1H   A   
E. . . . . . . . .  B ADDR   00A0H.2 A   
IE . . . . . . . .  D ADDR   00A8H   A   
INITLCD. . . . . .  C ADDR   0180H   A   
JSDPBL . . . . . .  C ADDR   01CAH   A   
KEYBIT . . . . . .  B ADDR   0020H.0 A   
KEYSCAN. . . . . .  C ADDR   011CH   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   
MAIN . . . . . . .  C ADDR   0030H   A   
NEXT_DN. . . . . .  C ADDR   0133H   A   
NEXT_NC. . . . . .  C ADDR   0147H   A   
NEXT_UP. . . . . .  C ADDR   011FH   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
REN. . . . . . . .  B ADDR   0098H.4 A   
RI . . . . . . . .  B ADDR   0098H.0 A   
RS . . . . . . . .  B ADDR   00A0H.0 A   
RS232. . . . . . .  C ADDR   0023H   A   
RS232OKBIT . . . .  B ADDR   0020H.1 A   
RW . . . . . . . .  B ADDR   00A0H.1 A   
SBUF . . . . . . .  D ADDR   0099H   A   
SCAN_RE. . . . . .  C ADDR   0149H   A   
SCON . . . . . . .  D ADDR   0098H   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TIME0_1. . . . . .  C ADDR   0100H   A   
TIME0_RE . . . . .  C ADDR   011BH   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TL1. . . . . . . .  D ADDR   008BH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   
TR1. . . . . . . .  B ADDR   0088H.6 A   
WRITE_CMD. . . . .  C ADDR   015CH   A   
WRITE_DAT. . . . .  C ADDR   016EH   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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