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

📄 ex3-6.lst

📁 《51单片机应用开发桉例精选》源代码及图片下载
💻 LST
字号:
A51 MACRO ASSEMBLER  EX3_6                                                                06/23/2007 17:05:37 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN ex3-6.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ex3-6.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;--------------程序信息-----------------
                       2     ;文件名   : ex3-6.asm
                       3     ;版本     : 1.0
                       4     ;作者     :
                       5     ;修改时间 :
                       6     
                       7     ;--------------程序说明------------------
                       8     ;CHAP 3.6 LED动态显示实例
                       9     
                      10     ;-----------常量和变量声明---------------
                      11     
                      12      
  0090                13              LED EQU P1;                    宏定义LED显示器
  00A0                14              Dq BIT P2.0
  0030                15              ADDR EQU 30H;                  显示的温度值地址
  0033                16              ADDREND EQU 33H;
                      17     
                      18     ;--------------预定义--------------------
                      19     
0000                  20                    ORG 0000H
0000 020003           21                    LJMP START
                      22     
                      23     ;------------中断入口地址分配------------
                      24                    ;ORG 0003H
                      25                    ;LJMP INT0PRG
                      26                    ;ORG 000BH
                      27                    ;LJMP INT1PRG
                      28                    ;ORG 0013H;
                      29                    ;LJMP
                      30                    ;ORG 0030H
                      31     
0003                  32     START:
                      33     ;--------------初始化子程序--------------
0003 856081           34          MOV SP,60H;
                      35     ;--------------主程序--------------------
0006 120024           36     MAIN:   LCALL GETTEMP;          通过传感器获得温度值
0009 12000F           37             LCALL DISP;             动态扫描显示温度值
                      38     
000C 020006           39     LJMP MAIN
                      40     
                      41     
                      42     ;----------------子程序------------------
                      43     
000F                  44     DISP:                           ;动态液晶显示子程序
000F A830             45             MOV R0,ADDR;
0011 9000AF           46             MOV DPTR,#LEDDB;
0014 E0               47     DISP1:  MOVX A,@DPTR;
0015 F9               48             MOV R1,A;
0016 E6               49             MOV A,@R0;
0017 49               50             ORL A,R1;;
0018 F590             51             MOV LED,A;
001A 1200A2           52             LCALL DELAY1MS;
001D 08               53             INC R0;
001E A3               54             INC DPTR;
001F E8               55             MOV A,R0;
0020 B433F1           56             CJNE A,#ADDREND,DISP1;
0023 22               57             RET;
                      58     
A51 MACRO ASSEMBLER  EX3_6                                                                06/23/2007 17:05:37 PAGE     2

                      59     
                      60     ;---------------------------------
                      61     ;    DS1820温度采集主程序
                      62     ;---------------------------------
0024                  63     GETTEMP:
0024 C2D4             64             CLR PSW.4
0026 D2D3             65             SETB PSW.3              ;设置工作寄存器当前所在的区域
0028 C2AF             66             CLR EA                  ;使用ds1820一定要禁止任何中断产生
002A 12004D           67             LCALL INT               ;调用初使化子程序
002D 74CC             68             MOV A,#0CCH
002F 120071           69             LCALL WRITE             ;送入跳过ROM命令
0032 7444             70             MOV A, #44H
0034 120071           71             LCALL WRITE             ;送入温度转换命令
0037 12004D           72             LCALL INT               ;温度转换完全,再次初使化ds1820
003A 74CC             73             MOV A,#0CCH
003C 120071           74             LCALL WRITE             ;送入跳过ROM命令
003F 74BE             75             MOV A,#0BEH
0041 120071           76             LCALL WRITE             ;送入读温度暂存器命令
0044 120089           77             LCALL READ
0047 FF               78             MOV R7,A                ;读出温度值低字节存入R7
0048 120089           79             LCALL READ
004B FE               80             MOV R6,A ;              读出谩度值高字节存入R6
                      81             ;LCALL TEMPCHANGE;
                      82             ;SETB EA
004C 22               83             RET
004D                  84     INT:                            ;初始化ds1820子程序
004D C2AF             85             CLR EA
004F C2A0             86     L0:     CLR dq                  ;ds1820总线为低复位电平
0051 7AC8             87             MOV R2,#200
0053 C2A0             88     L1:     CLR dq
0055 DAFC             89             DJNZ R2,L1              ;总线复位电平保持400us
0057 D2A0             90             SETB dq                 ;释放ds1820总线
0059 7A1E             91             MOV R2,#30
005B DAFE             92     L4:     DJNZ R2,L4              ;释放ds1820总线保持60us
005D C3               93             CLR C                   ;清存在信号
005E 72A0             94             ORL C,dq
0060 40ED             95             JC L0                    ;存在吗?不存在则重新来
0062 7E50             96             MOV R6,#80
0064 72A0             97     L5:     ORL C,dq
0066 4004             98             JC L3
0068 DEFA             99             DJNZ R6,L5
006A 80E3            100             SJMP L0
006C 7AF0            101     L3:     MOV R2,#240
006E DAFE            102     L2:     DJNZ R2,L2
0070 22              103             RET
0071                 104     WRITE:                                  ;向ds1820写操作命令子程序
0071 C2AF            105             CLR EA
0073 7B08            106             MOV R3,#8                ;写入ds1820的bit数,一个字节8个bit
0075 D2A0            107     WR1:    SETB dq
                     108     
0077 7C08            109             MOV R4,#8
0079 13              110             RRC A                    ;把一个字节data(A)分成8个bit环移给 C
007A C2A0            111             CLR dq                   ;开始写入ds1820总线要处于复位(低)状态
007C DCFE            112     WR2:    DJNZ R4,WR2              ;ds1820总线复位保持16us
007E 92A0            113             MOV dq,C                         ;写入一个bit
0080 7C14            114             MOV R4,#20
0082 DCFE            115     WR3:    DJNZ R4,WR3              ;等待40us
0084 DBEF            116             DJNZ R3,WR1             ;写入下一个bit
0086 D2A0            117             SETB dq                         ;重新释放ds1820总线
0088 22              118             RET
0089                 119     READ:
0089 C2AF            120             CLR EA
008B 7E08            121             MOV R6,#8                ;连续读8个bit
008D C2A0            122     RE1:            CLR dq                  ;读前总线保持为低
008F 7C04            123             MOV R4,#4
0091 00              124             NOP
A51 MACRO ASSEMBLER  EX3_6                                                                06/23/2007 17:05:37 PAGE     3

0092 D2A0            125             SETB dq                         ;开始读总线释放
0094 DCFE            126     RE2:            DJNZ R4,RE2             ;持续8us
0096 A2A0            127             MOV C,dq                         ;从ds1820总线读得一个bit
0098 13              128             RRC A                   ;把读得的位值环移给 A
0099 7D1E            129             MOV R5,#30
009B DDFE            130     RE3:    DJNZ R5,RE3     ;持续60us
009D DEEE            131             DJNZ R6,RE1              ;读下一个bit
009F D2A0            132             SETB dq                  ;重新释放ds1820总线
00A1 22              133             RET
                     134     
                     135     
                     136     ;--------------中断子程序----------------
                     137     
                     138     ;---------------延时子程序---------------
                     139     
00A2 7D02            140     DELAY1MS: MOV R5,#02H;
00A4 7EF4            141      DELAY10: MOV R6,#00F4H;
00A6 7FFF            142      DELAY11: MOV R7,#0FFH;
00A8 DFFE            143      DELAY12: DJNZ R7,DELAY12;
00AA DEFA            144             DJNZ R6,DELAY11;
00AC DDF6            145             DJNZ R5,DELAY10;
00AE 22              146             RET;
                     147     
00AF 102040          148     LEDDB:  DB 10H,20H,40H;          高位表示LED的片选端
                     149     
                     150     END
                             
                             ;---------------注意事项-----------------
                             
A51 MACRO ASSEMBLER  EX3_6                                                                06/23/2007 17:05:37 PAGE     4

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


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

ADDR . . . . . . .  N NUMB   0030H   A   
ADDREND. . . . . .  N NUMB   0033H   A   
DELAY10. . . . . .  C ADDR   00A4H   A   
DELAY11. . . . . .  C ADDR   00A6H   A   
DELAY12. . . . . .  C ADDR   00A8H   A   
DELAY1MS . . . . .  C ADDR   00A2H   A   
DISP . . . . . . .  C ADDR   000FH   A   
DISP1. . . . . . .  C ADDR   0014H   A   
DQ . . . . . . . .  B ADDR   00A0H.0 A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
GETTEMP. . . . . .  C ADDR   0024H   A   
INT. . . . . . . .  C ADDR   004DH   A   
L0 . . . . . . . .  C ADDR   004FH   A   
L1 . . . . . . . .  C ADDR   0053H   A   
L2 . . . . . . . .  C ADDR   006EH   A   
L3 . . . . . . . .  C ADDR   006CH   A   
L4 . . . . . . . .  C ADDR   005BH   A   
L5 . . . . . . . .  C ADDR   0064H   A   
LED. . . . . . . .  D ADDR   0090H   A   
LEDDB. . . . . . .  C ADDR   00AFH   A   
MAIN . . . . . . .  C ADDR   0006H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
PSW. . . . . . . .  D ADDR   00D0H   A   
RE1. . . . . . . .  C ADDR   008DH   A   
RE2. . . . . . . .  C ADDR   0094H   A   
RE3. . . . . . . .  C ADDR   009BH   A   
READ . . . . . . .  C ADDR   0089H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0003H   A   
WR1. . . . . . . .  C ADDR   0075H   A   
WR2. . . . . . . .  C ADDR   007CH   A   
WR3. . . . . . . .  C ADDR   0082H   A   
WRITE. . . . . . .  C ADDR   0071H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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