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

📄 t.lst

📁 MAX038 的中文资料及说明
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  T                                                                    04/20/2008 22:58:08 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN T.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE T.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

  00B7                 1      BEEP    BIT  P3.7
  00A0                 2             LCD_RS  BIT  P2.0
  00A1                 3             LCD_RW  BIT  P2.1
  00A2                 4             LCD_EN  BIT  P2.2
  003F                 5             LCD_X   EQU  3FH        ;LCD 地址变量
                       6     
  0030                 7             TIMER_H   EQU   30H    ;定时器高位字节单元
  0031                 8             TIMER_L   EQU   31H    ;定时器低位字节单元
  0032                 9             TIMCOUNT  EQU   32H    ;时间中断数
                      10     
                      11     
  0035                12             INT_G     EQU   35H    ;中断计数缓冲单元高地址
  0034                13           INT_H     EQU   34H    ;中断计数缓冲单元中地址
  0033                14           INT_L     EQU   33H    ;中断计数缓冲单元低地址
                      15     
                      16     
  0036                17             T_S       EQU   36H    ;数据显示低位
  0037                18             T_M       EQU   37H    ;数据显示中位
  0038                19             T_H       EQU   38H    ;数据显示高位
  0039                20             T_G       EQU   39H    ;数据显示最高位
                      21     
                      22     ;----------------------------------------------------------
0000                  23                   ORG 0000H
0000 802E             24                   JMP MAIN            ;主程序开始
000B                  25                   ORG 000BH
000B 2184             26                   JMP TIMER_INT        ;定时器T0中断服务程序
001B                  27                   ORG  001BH           ;定时器T1中断服务程序
001B 802A             28                   JMP  TIMER1
0030                  29                   ORG  0030H
                      30     ;----------------------------------------------------------
0030                  31        MAIN:
0030 758160           32                 MOV  SP,#60H          ;设置SP指针
0033 12004A           33                 LCALL PRO_SET         ;初始化
0036 117D             34                 CALL  SET_LCD
0038 12016B           35                 LCALL TIM_T0
                      36     ;-----------------------------------------------------------
                      37     ;LCD1602是慢速显示器件,故100MS显示一次。
                      38     ;-----------------------------------------------------------
003B                  39     MAIN1:
003B AD28             40                 MOV  R5,40
003D                  41     MAIN2:
003D 3162             42                 ACALL  DELAY1    ;3ms
003F DDFC             43                 DJNZ  R5,MAIN2
0041 31B1             44                 ACALL  SBIN_SBCD
0043 3133             45                 CALL  CONV
0045 80F4             46                 JMP MAIN1
                      47     ;------------------------------------------------------------
                      48     ;T1计数器中断服务子程序
                      49     ;计T1计数器溢出次数
                      50     ;------------------------------------------------------------
0047                  51     TIMER1:
0047 052A             52                 INC  2AH
0049 32               53                 RETI
                      54     ;------------------------------------------------------------
                      55     ;初始化程序
                      56     ;------------------------------------------------------------
004A 7400             57     PRO_SET:  MOV A,#00H
004C 75F000           58               MOV B,#00H
A51 MACRO ASSEMBLER  T                                                                    04/20/2008 22:58:08 PAGE     2

004F F52A             59               MOV  2AH,A
0051 7580FF           60               MOV P0,#0FFH
0054 7590FF           61               MOV P1,#0FFH
0057 75A0FF           62               MOV P2,#0FFH
005A 753400           63               MOV INT_H,#00H
005D 753300           64               MOV INT_L,#00H
0060 753500           65               MOV  INT_G,#00H
0063 753600           66               MOV  T_S,#00H
0066 753800           67               MOV  T_H,#00H
0069 753700           68               MOV  T_M,#00H
006C 753900           69               MOV  T_G,#00H
006F 753200           70               MOV TIMCOUNT,#00H
0072 75304C           71               MOV TIMER_H,#04CH      ;定时 50 MS
0075 753110           72               MOV TIMER_L,#10H       ;
0078 C2B7             73               CLR BEEP
007A D2B5             74               SETB  P3.5            ;P3.5端口置输入状态
007C 22               75               RET                   ;T1(TIMER1的外部输入脚)
                      76     ;-----------------------------------------------------
                      77     ;LCD 初始化设置
                      78     ;-----------------------------------------------------
007D                  79     SET_LCD:
007D C2A2             80               CLR  LCD_EN
007F 11B4             81               CALL  INIT_LCD     ;初始化 LCD
0081 3162             82               CALL  DELAY1
0083 900092           83               MOV  DPTR,#INFO1   ;指针指到显示信息1
0086 7401             84               MOV  A,#1          ;显示在第一行
0088 11D3             85               CALL  LCD_SHOW
008A 9000A3           86               MOV  DPTR,#INFO2   ;指针指到显示信息2
008D 7402             87               MOV  A,#2          ;显示在第二行
008F 11D3             88               CALL  LCD_SHOW
0091 22               89               RET
                      90     ;-----------------------------------------------------
0092 20202020         91     INFO1:  DB  "    CYMOMETER   ",0  ;LCD 第一行显示信息
0096 43594D4F                
009A 4D455445                
009E 52202020                
00A2 00                      
00A3 46524551         92     INFO2:  DB  "FREQ:        HZ ",0  ;LCD 第二行显示信息
00A7 3A202020                
00AB 20202020                
00AF 20485A20                
00B3 00                      
                      93     ;-----------------------------------------------------
                      94     ;LCD 接口初始化
                      95     ;8位I/O控制
                      96     ;-----------------------------------------------------
00B4                  97     INIT_LCD:
00B4 7438             98               MOV  A,#38H     ;双列显示,字形5*7点阵
00B6 311C             99               CALL  WCOM
00B8 3162            100               CALL  DELAY1
00BA 7438            101               MOV  A,#38H     ;双列显示,字形5*7点阵
00BC 311C            102               CALL  WCOM
00BE 3162            103               CALL  DELAY1
00C0 7438            104               MOV  A,#38H     ;双列显示,字形5*7点阵
00C2 311C            105               CALL  WCOM
00C4 3162            106               CALL  DELAY1
00C6 740C            107               MOV  A,#0CH     ;开显示,关光标,
00C8 311C            108               CALL  WCOM
00CA 3162            109               CALL  DELAY1
00CC 7401            110               MOV  A,#01H     ;清除 LCD 显示屏
00CE 311C            111               CALL  WCOM
00D0 3162            112               CALL  DELAY1
00D2 22              113               RET
                     114     ;----------------------------------------------------
00D3                 115     LCD_SHOW:       ;在LCD的第一行或第二行显示信息字符
                     116     
A51 MACRO ASSEMBLER  T                                                                    04/20/2008 22:58:08 PAGE     3

00D3 B4010C          117               CJNE  A,#1,LINE2  ;判断是否为第一行
00D6 7480            118       LINE1:  MOV  A,#80H       ;设置 LCD 的第一行地址
00D8 311C            119               CALL  WCOM        ;写入命令
00DA 11F8            120               CALL  CLR_LINE    ;清除该行字符数据
00DC 7480            121               MOV  A,#80H       ;设置 LCD 的第一行地址
00DE 311C            122               CALL  WCOM        ;写入命令
00E0 800A            123               JMP  FILL
00E2 74C0            124       LINE2:  MOV  A,#0C0H      ;设置 LCD 的第二行地址
00E4 311C            125               CALL  WCOM        ;写入命令
00E6 11F8            126               CALL  CLR_LINE    ;清除该行字符数据
00E8 74C0            127               MOV  A,#0C0H      ;设置 LCD 的第二行地址
00EA 311C            128               CALL  WCOM
00EC E4              129       FILL:   CLR  A            ;填入字符
00ED 93              130               MOVC  A,@A+DPTR   ;由消息区取出字符
00EE B40001          131               CJNE  A,#0,LC1    ;判断是否为结束码
00F1 22              132               RET
00F2 3121            133       LC1:    CALL  WDATA       ;写入数据
00F4 A3              134               INC  DPTR         ;指针加1
00F5 80F5            135               JMP  FILL         ;继续填入字符
00F7 22              136               RET
                     137     ;---------------------------------------------------
00F8                 138     CLR_LINE:                  ;清除该行 LCD 的字符
00F8 7818            139               MOV  R0,#24
00FA 7420            140        CL1:   MOV  A,#' '
00FC 3121            141               CALL  WDATA
00FE D8FA            142               DJNZ  R0,CL1
0100 22              143               RET
                     144     ;-----------------------------------------------------
                     145     ; 写指令、数据使能子程序
                     146     ;-----------------------------------------------------
0101                 147     ENABLE:                    ;写指令使能
0101 C2A0            148               CLR LCD_RS           ;RS=L,LCD_RW=L,D0-D7=指令码,E=高脉冲
0103 C2A1            149               CLR LCD_RW
0105 D2A2            150               SETB LCD_EN
0107 3117            151               CALL  DELAY0
0109 C2A2            152               CLR LCD_EN
010B 22              153               RET
010C                 154     ENABLE1:                  ;写数据使能
010C D2A0            155               SETB  LCD_RS        ;RS=H,RW=L,D0-D7=数据,E=高脉冲
010E C2A1            156               CLR   LCD_RW
0110 D2A2            157               SETB  LCD_EN
0112 3117            158               CALL  DELAY0
0114 C2A2            159               CLR   LCD_EN
0116 22              160               RET
                     161     
0117 7FFA            162     DELAY0:   MOV  R7,#250      ;延时500微秒
0119 DFFE            163               DJNZ  R7,$
011B 22              164               RET
                     165     ;----------------------------------------------------
                     166     ;写入命令子程序
                     167     ;----------------------------------------------------
011C                 168     WCOM:                     ;以8位控制方式将命令写至LCD
011C F580            169               MOV  P0,A       ;写入命令
011E 3101            170               CALL  ENABLE
0120 22              171               RET
                     172     ;----------------------------------------------------
                     173     ;写入数据子程序
                     174     ;----------------------------------------------------
0121                 175     WDATA:                    ;以8位控制方式将数据写至LCD
0121 F580            176               MOV  P0,A       ;写入数据
0123 310C            177               CALL  ENABLE1
0125 22              178               RET
                     179     ;---------------------------------------------------
                     180     ;在 LCD 第二行显示字符
                     181     ;A=ASC DATA, B=LINE X POS
                     182     ;---------------------------------------------------
A51 MACRO ASSEMBLER  T                                                                    04/20/2008 22:58:08 PAGE     4

0126                 183     LCDP2:                    ;在LCD的第二行显示字符
0126 C0E0            184               PUSH  ACC        ;
0128 E5F0            185               MOV  A,B         ;设置显示地址
012A 24C0            186               ADD  A,#0C0H     ;设置LCD的第二行地址
012C 311C            187               CALL  WCOM       ;写入命令
012E D0E0            188               POP  ACC         ;由堆栈取出A
0130 3121            189               CALL  WDATA      ;写入数据
0132 22              190               RET
                     191     ;-------------------------------------------------------
                     192     ;ASCII 转换并在第二行显示数字子程序
                     193     ;-------------------------------------------------------

⌨️ 快捷键说明

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