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 + -
显示快捷键?