《51单片机应用开发桉例精选》源代码及图片下载

源代码在线查看: ex3-6.lst

软件大小: 3718 K
上传用户: williamchen199
关键词: 51单片机 应用开发 源代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				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)
							

相关资源