93rw.lst

来自「01单片机网站51单片机开发板全部配套程序」· LST 代码 · 共 169 行

LST
169
字号
A51 MACRO ASSEMBLER  93RW                                                                   14/05/03 22:42:36 PAGE     1


DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN 93RW.OBJ
ASSEMBLER INVOKED BY: C:\C51EVAL\BIN\A51.EXE 93RW.A51 DB EP

LOC  OBJ            LINE     SOURCE

                       1     ;程序名:  MCS51实验板配套程序-93系列EEPROM读写
                       2     ;电路介绍:由P3.6=DIO,P3.7=CLK,P3.4=CS(与SADD键公用);显示电路同前面例子
                       3     ;          93c46的DI/DO连接到一起组成DIO
                       4     ;功能操作:按S3加数,按S1将_93add指定地址数据读出、显示,按S2将指定数据写入
                       5     ;WWW.01MCU.NET WWW.01MCU.COM 2003/5/14编写
                       6     ;********************************************************************
  0094                 7     XSDAT BIT P1.4    ;定义驱动74164的数据脚为P1.4
  0095                 8     XSCLK BIT P1.5    ;74164的时钟
  0090                 9     GW    BIT P1.0    ;个位显示控制脚
  0091                10     SW    BIT P1.1    ;十位
  0092                11     BW    BIT P1.2    ;百位
  0093                12     QW    BIT P1.3    ;千位
  00B2                13     READ  BIT P3.2    ;读按键
  00B3                14     WRI   BIT P3.3    ;写按键
  00B4                15     SADD  BIT P3.4    ;+数键,与CS公用
                      16     
  0030                17     SJGW    EQU 30H     ;个位数据存储器
  0031                18     SJSW    EQU 31H     ;10
  0032                19     SJBW    EQU 32H     ;100
  0033                20     SJQW    EQU 33H     ;1000
                      21     
  00B6                22     DIO     BIT P3.6    ;93DIO
  00B5                23     CLK     BIT P3.5    ;93CLK
  00B4                24     CS      BIT P3.4    ;与+键公用
  0020                25     ADDH    EQU 20H     ;OP指令
  0021                26     ADDL    EQU 21H     ;OP指令+地址
  0022                27     _93data EQU 22H    ;数据
  0023                28     _93add  EQU 23H    ;地址
                      29     ;*****************************************************
                      30     
0000 758140           31               MOV SP,#40H
0003 752310           32               MOV _93add,#10H   ;对A93的10H地址进行操作
0006 753000           33               MOV SJGW,#0
0009 753100           34               MOV SJSW,#0
000C 753200           35               MOV SJBW,#0
000F 753300           36               MOV SJQW,#0
0012 120082           37               LCALL AT93READ
0015 116E             38               ACALL B2C       ;开始显示为读A93 10H的数据
0017 12019A           39     MAIN :    LCALL DISPLAY
001A D2B4             40               SETB SADD        ;共用,使用时先置高
001C 20B403           41               JB SADD,N1
001F 020036           42               LJMP ADDKEY
0022 C2B4             43     N1:       CLR SADD         ;不用时清0
0024 12019A           44               LCALL DISPLAY
0027 20B203           45               JB READ,N2
002A 020049           46               LJMP READKEY
002D 12019A           47     N2:       LCALL DISPLAY
0030 20B3E4           48               JB WRI,MAIN
0033 02005B           49               LJMP WRIKEY
                      50               
                      51     ;-+1键处理--------------------------
0036 7C05             52     ADDKEY:   MOV R4,#5
0038 12019A           53     ADDL1:    LCALL DISPLAY
003B 30B4FA           54               JNB SADD,ADDL1 
003E DCF8             55               DJNZ R4,ADDL1
0040 C2B4             56               CLR SADD         ;不用时清0
0042 0522             57               INC _93data         ;+1
0044 116E             58               ACALL B2C         ;转换
A51 MACRO ASSEMBLER  93RW                                                                   14/05/03 22:42:36 PAGE     2

0046 020017           59               LJMP MAIN
                      60     ;--READ键处理----------------------
0049 7C05             61     READKEY:  MOV R4,#5
004B 12019A           62     READL1:   LCALL DISPLAY
004E 30B2FA           63               JNB READ,READL1 
0051 DCF8             64               DJNZ R4,READL1
0053 120082           65               LCALL AT93READ     ;将93ADD地址指定的数据读出
0056 116E             66               ACALL B2C         ;转换
0058 020017           67               LJMP MAIN
                      68     ;--WRI键处理-----------------------
005B 7C05             69     WRIKEY:   MOV R4,#5
005D 12019A           70     WRIL1:    LCALL DISPLAY
0060 30B3FA           71               JNB WRI,WRIL1
0063 DCF8             72               DJNZ R4,WRIL1
0065 120096           73               LCALL AT93WRIT      ;将_93data写到SADD 
0068 1200B2           74               LCALL EWEND         ;写禁止,以便下次再写
006B 020017           75               LJMP MAIN             
                      76     ;***2-10转换程序**********************************
006E E522             77     B2C:      MOV A,_93data
0070 75F064           78               MOV B,#100
0073 84               79               DIV AB
0074 F532             80               MOV SJBW,A
0076 E5F0             81               MOV A,B
0078 75F00A           82               MOV B,#10
007B 84               83               DIV AB
007C F531             84               MOV SJSW,A
007E 85F030           85               MOV SJGW,B
0081 22               86               RET
                      87     ;★★93c46读写子程序★★★★★★★★★★★★★★★★★★★★★★★★
                      88     ;资源:程序中用到R6,操作地址为_93add,收、送数据_93data
                      89     ;      使用8位操作,PRG=0
                      90     ;2002/5/15调试通过
                      91     ;定义:
                      92     ;cs      bit 
                      93     ;dio     bit 
                      94     ;addh    equ 
                      95     ;addl    equ
                      96     ;_93add  equ
                      97     ;_93data equ
                      98     ;调用程序
0082                  99     AT93READ:   ;读
0082 C2B4            100                 CLR CS               ;初始
0084 C2B6            101                 CLR DIO
0086 752003          102                 MOV ADDH,#11B        ;读指令110 
0089 752100          103                 MOV ADDL,#00000000B  ;传送指令和地址
008C E523            104                 MOV A,_93add
008E 4521            105                 ORL A,ADDL
0090 F521            106                 MOV ADDL,A           ;地址加入
0092 12013E          107                 LCALL READDATA       ;读指令
0095 22              108                 RET
                     109                 
0096                 110     AT93WRIT:   ;写允许
0096 C2B4            111                 CLR CS               ;初始
0098 C2B6            112                 CLR DIO
009A 752002          113                 MOV ADDH,#10B
009D 752160          114                 MOV ADDL,#01100000B  ;9346允许擦除指令
00A0 1200BC          115                 LCALL WRICOMM        ;写允许擦写指令
                     116                 ;写数据
00A3 752002          117                 MOV ADDH,#10B        ;写指令101
00A6 752180          118                 MOV ADDL,#10000000B  ;传送指令和地址
00A9 E523            119                 MOV A,_93add
00AB 4521            120                 ORL A,ADDL
00AD F521            121                 MOV ADDL,A           ;地址合成加入
00AF 1200EF          122                 LCALL WRIDATA        ;将_93data中的数据写到片中
00B2                 123     EWEND:      ;写禁止
00B2 752002          124                 MOV ADDH,#10B
A51 MACRO ASSEMBLER  93RW                                                                   14/05/03 22:42:36 PAGE     3

00B5 752100          125                 MOV ADDL,#00000000B
00B8 1200BC          126                 LCALL WRICOMM        ;写禁止
00BB 22              127                 RET
                     128     
                     129     ;******* 9 3公共子程序************************************
                     130     ;写不含地址的指令,如,写允许、禁止、擦除等
                     131     ;**************************************************************
00BC D2B4            132     WRICOMM:    SETB CS              ;复位
00BE 7E08            133                 MOV R6,#8
00C0 8520E0          134                 MOV ACC,ADDH         ;送出指令字
00C3 33              135     WCOM:       RLC A
00C4 92B6            136                 MOV DIO,C            ;移出到C并送DIO端
00C6 12018D          137                   LCALL D15US
00C9 D2B5            138                   SETB CLK
00CB 12018D          139                   LCALL D15US
00CE C2B5            140                   CLR CLK
00D0 12018D          141                   LCALL D15US
00D3 DEEE            142                 DJNZ R6,WCOM         
00D5 7E08            143                 MOV R6,#8
00D7 8521E0          144                 MOV ACC,ADDL         ;送出地址
00DA 33              145     WADD:       RLC A
00DB 92B6            146                 MOV DIO,C            ;移出到C并送DIO端
00DD 12018D          147                   LCALL D15US
00E0 D2B5            148                   SETB CLK
00E2 12018D          149                   LCALL D15US
00E5 C2B5            150                   CLR CLK
00E7 12018D          151                   LCALL D15US
00EA DEEE            152                 DJNZ R6,WADD
00EC C2B4            153                 CLR CS
00EE 22              154                 RET
                     155     ;******* 9 3公共子程序************************************
                     156     ;写数据

⌨️ 快捷键说明

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