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

📄 keynum-ts12864a-3.lst

📁 单片机中LED显示/数码管显示/键盘控制/蜂鸣器输出/中断应用/定时器和计数器/串口通信/键控看门狗/数据交换
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  KEYNUM_TS12864A_3                                                    12/20/2006 22:45:45 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN KEYNUM-TS12864A-3.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE KEYNUM-TS12864A-3.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;*******************************************************************
                       2     ;*                                                                 *
                       3     ;* ME500单片机开发系统演示程序 - 矩阵键盘键值读取器                *
                       4     ;*                                                                 *
                       5     ;* TS12864A-3(汉字库)显示                                         *
                       6     ;*                                                                 *
                       7     ;* 版本: V1.0 (2006/11/20)                                        *
                       8     ;* 作者: gguoqing (Email: gguoqing@willar.com)                    *
                       9     ;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) *
                      10     ;* 时间: 2006/11/12                                               *
                      11     ;*                                                                 *
                      12     ;*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved *
                      13     ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       *
                      14     ;*                                                                 *
                      15     ;*******************************************************************
                      16     
                      17     ;矩阵键盘定义:
                      18     ;P1.0-P1.3为列线,P1.4-P1.7为行线
                      19     ;=================================================
                      20     
  0026                21             X     EQU  26H        ;LCD 地址变量
                      22     
  00B7                23             BEEP   EQU  P3.7
  0093                24             RELAY  EQU  P1.3
                      25     
  00A0                26             RS      EQU     P2.0
  00A1                27             RW      EQU     P2.1
  00A2                28             EN      EQU     P2.2
  00A3                29             PSB     EQU     P2.3
  00A5                30             RST     EQU     P2.5
                      31     
                      32     ;==================================================
0000                  33              ORG 0000H
0000 8000             34              JMP  MAIN
                      35     ;==================================================
0002                  36     MAIN:
0002 758140           37               MOV   SP,#40H
0005 7400             38               MOV   A,#00H
0007 7820             39               MOV   R0,#20H
0009 F6               40     LOOP0:    MOV   @R0,A          ;20H-26H清零
000A 08               41               INC   R0
000B B827FB           42               CJNE  R0,#27H,LOOP0
                      43     
000E D2A5             44               SETB  RST
0010 00               45               NOP
0011 D2A3             46               SETB  PSB            ;8位数据,并口
                      47     
0013 112F             48               CALL  SET_LCD        ;初始化TS12864A-3
0015 1199             49               CALL  MENU1
0017 11B2             50               CALL  MENU2
0019 11CB             51               CALL  MENU3
001B 11E3             52               CALL  MENU4
001D                  53     LOOP1:
001D 7590F0           54                MOV  P1,#0F0H
0020 E590             55                MOV  A,P1
0022 B4F002           56                CJNE  A,#0F0H,LOOP2  ;有键按下转LOOP2
0025 80F6             57                JMP   LOOP1
0027                  58     LOOP2:
A51 MACRO ASSEMBLER  KEYNUM_TS12864A_3                                                    12/20/2006 22:45:45 PAGE     2

0027 3135             59                CALL  KEY_IN
0029 3162             60                CALL  KEY_CONV
002B 317C             61                CALL  BEEP_BL
002D 80EE             62                JMP  LOOP1
                      63     
                      64     ;=============================================
                      65     ;  LCD 初始化设置
                      66     ;=============================================-
002F                  67     SET_LCD:
002F C2A2             68               CLR  EN
0031 7434             69               MOV  A,#34H     ;34H--扩充指令操作
0033 11FC             70               CALL  WCOM
0035 319A             71               CALL  DELAY1
0037 7430             72               MOV  A,#30H     ;30H--基本指令操作
0039 11FC             73               CALL  WCOM
003B 319A             74               CALL  DELAY1
                      75     
003D 740C             76               MOV  A,#0CH     ;开显示,关光标,
003F 11FC             77               CALL  WCOM
0041 319A             78               CALL  DELAY1
0043 7401             79               MOV  A,#01H     ;清除 LCM 显示屏
0045 11FC             80               CALL  WCOM
0047 319A             81               CALL  DELAY1
0049 22               82               RET
                      83     ;===================================================
                      84     ;在 LCM 各行显示信息字符
                      85     ;===================================================
004A                  86     LCD_SHOW:
                      87     
004A B4010C           88               CJNE  A,#1,LINE2  ;判断是否为第一行
004D 7480             89       LINE1:  MOV  A,#80H       ;设置 LCD 的第一行地址
004F 11FC             90               CALL  WCOM        ;写入命令
0051 1190             91               CALL  CLR_LINE    ;清除该行字符数据
0053 7480             92               MOV  A,#80H       ;设置 LCD 的第一行地址
0055 11FC             93               CALL  WCOM        ;写入命令
0057 802B             94               JMP  FILL
                      95     
0059 B4020C           96       LINE2:  CJNE  A,#2,LINE3  ;判断是否为第二行
005C 7490             97               MOV  A,#090H      ;设置 LCD 的第二行地址
005E 11FC             98               CALL  WCOM        ;写入命令
0060 1190             99               CALL  CLR_LINE    ;清除该行字符数据
0062 7490            100               MOV  A,#090H      ;设置 LCD 的第二行地址
0064 11FC            101               CALL  WCOM
0066 801C            102               JMP  FILL
                     103     
0068 B4030C          104       LINE3:  CJNE  A,#3,LINE4  ;判断是否为第三行
006B 7488            105               MOV  A,#088H      ;设置 LCD 的第三行地址
006D 11FC            106               CALL  WCOM        ;写入命令
006F 1190            107               CALL  CLR_LINE    ;清除该行字符数据
0071 7488            108               MOV  A,#088H      ;设置 LCD 的第三行地址
0073 11FC            109               CALL  WCOM
0075 800D            110               JMP  FILL
                     111     
0077 B4040F          112       LINE4:  CJNE  A,#4,LINE5  ;判断是否为第四行
007A 7498            113               MOV  A,#098H      ;设置 LCD 的第四行地址
007C 11FC            114               CALL  WCOM        ;写入命令
007E 1190            115               CALL  CLR_LINE    ;清除该行字符数据
0080 7498            116               MOV  A,#098H      ;设置 LCD 的第四行地址
0082 11FC            117               CALL  WCOM
                     118     
0084 E4              119       FILL:   CLR  A            ;填入字符
0085 93              120               MOVC  A,@A+DPTR   ;由消息区取出字符
0086 B40001          121               CJNE  A,#0,LC1    ;判断是否为结束码
0089 22              122       LINE5:  RET
008A 3109            123       LC1:    CALL  WDATA       ;写入数据
008C A3              124               INC  DPTR         ;指针加1
A51 MACRO ASSEMBLER  KEYNUM_TS12864A_3                                                    12/20/2006 22:45:45 PAGE     3

008D 80F5            125               JMP  FILL         ;继续填入字符
008F 22              126               RET
                     127     ;=================================================
                     128     ;清除该行 LCM 的字符
                     129     ;=================================================
0090                 130     CLR_LINE:
0090 7810            131               MOV  R0,#16      ;
0092 7420            132        CL1:   MOV  A,#' '
0094 3109            133               CALL  WDATA
0096 D8FA            134               DJNZ  R0,CL1
0098 22              135               RET
                     136     ;==================================================
                     137     ;LCM 显示工作菜单信息
                     138     ;==================================================
0099                 139     MENU1:
0099 9000A1          140              MOV   DPTR,#MENU1A
009C 7401            141              MOV   A,#1         ;在第一行显示信息
009E 114A            142              CALL  LCD_SHOW
00A0 22              143              RET
00A1 2D2D2D2D        144     MENU1A:  DB  "-----ME500------",0
00A5 2D4D4535                
00A9 30302D2D                
00AD 2D2D2D2D                
00B1 00                      
                     145     
00B2                 146     MENU2:
00B2 9000BA          147              MOV   DPTR,#MENU2A
00B5 7402            148              MOV   A,#2         ;在第二行显示信息
00B7 114A            149              CALL  LCD_SHOW
00B9 22              150              RET
00BA BED8D5F3        151     MENU2A:  DB   "矩阵键盘值读取器",0
00BE BCFCC5CC                
00C2 D6B5B6C1                
00C6 C8A1C6F7                
00CA 00                      
                     152     
00CB                 153     MENU3:
00CB 9000D3          154              MOV   DPTR,#MENU3A
00CE 7403            155              MOV   A,#3         ;在第三行显示信息
00D0 114A            156              CALL  LCD_SHOW
00D2 22              157              RET
00D3 BCFCD6B5        158     MENU3A:  DB  "键值编码:- H  ",0
00D7 B1E0C2EB                
00DB A3BA2D20                
00DF 48202000                
                     159     
00E3                 160     MENU4:
00E3 9000EB          161              MOV   DPTR,#MENU4A
00E6 7404            162              MOV   A,#4         ;在第四行显示信息
00E8 114A            163              CALL  LCD_SHOW
00EA 22              164              RET
00EB 20777777        165     MENU4A:  DB  " www.willar.com ",0
00EF 2E77696C                
00F3 6C61722E                
00F7 636F6D20                
00FB 00                      
                     166     
                     167     ;==============================================
                     168     ; 写指令使能子程序
                     169     ;RS=L,RW=L,D0-D7=指令码,E=高脉冲
                     170     ;==============================================
00FC                 171     WCOM:
00FC F580            172               MOV  P0,A
00FE C2A0            173               CLR RS
0100 C2A1            174               CLR RW
0102 D2A2            175               SETB EN
A51 MACRO ASSEMBLER  KEYNUM_TS12864A_3                                                    12/20/2006 22:45:45 PAGE     4

0104 3116            176               CALL  DELAY0

⌨️ 快捷键说明

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