📄 check.lst
字号:
A51 MACRO ASSEMBLER CHECK 04/24/2006 17:04:16 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN check.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE check.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
00B3 1 RS BIT P3.3 ;寄存器选择,1表示数据寄存器,0表示指令寄存器
00B5 2 RW BIT P3.5 ;读写信号线,高电平为读,低电平为写,
3 ;RS RW同时为低表示写指令,RS低RW高则是读忙信号,反之写入数据
00B4 4 E BIT P3.4 ;液晶显示使能,高到低时执行命令
0001 5 key_bit bit 01h ;键盘标志位
00A6 6 keyboard bit P2.6
0092 7 lcd_bg bit P1.2 ;背光
0080 8 output equ p0
00A7 9 cs bit p2.7 ;x5045电路选择端
00B5 10 so bit p3.5 ;x5045串行数据输入端
00B7 11 si bit p3.7 ;x5045串行数据输出端
00B6 12 sclk bit p3.6 ;x5045串行时钟信号
002C 13 mrd equ 2ch ;读数据存于MRD开始的缓冲区
002F 14 numbyt equ 2fh ;传送字节数存放单元
15
0000 16 org 0000h
0000 0105 17 ajmp init
0003 18 org 0003h
0003 2109 19 ajmp ankey
0005 7581F0 20 init: mov sp,#0f0h
0008 C292 21 clr lcd_bg
000A 75F001 22 mov b,#01h ;清屏
000D 120046 23 lcall enable ;每次操作都要保存
0010 75F038 24 mov b,#38h ;功能选择
0013 120046 25 lcall enable
0016 75F00E 26 mov b,#0eh ;开显示幕
0019 120046 27 lcall enable
001C 75F006 28 mov b,#06h ;表示光标向右移,屏幕上文字不移动
001F 120046 29 lcall enable
0022 D2AF 30 setb ea ;中断开放
0024 D2A8 31 setb ex0 ;允许INT0
0026 75F080 32 welcome: mov b,#80h ;设定第一行起始地址
0029 120046 33 lcall enable
002C 7441 34 mov a,#41h
002E 120057 35 lcall display
0031 75F0C0 36 mov b,#0c0h
0034 120046 37 lcall enable
0037 7442 38 mov a,#42h
0039 120057 39 lcall display
003C 300104 40 main: jnb key_bit,next
003F C201 41 clr key_bit
0041 2114 42 ajmp key
0043 00 43 next: nop
0044 013C 44 ajmp main
45 ;-----------------写入程序寄存器--------------------------
0046 C2B3 46 enable:clr rs ;写指令到寄存器
0048 C2B5 47 clr rw
004A C2B4 48 clr e ;先禁止,在第二次进入的时候就有效了
004C 120158 49 lcall delay
004F 85F080 50 mov output,b
0052 D2B4 51 setb e
0054 C2B4 52 clr e
0056 22 53 ret
54 ;----------------显示-------------------------------------
0057 C2B5 55 display: clr rw
0059 D2B3 56 setb rs
005B F580 57 mov output,a
005D D2B4 58 setb e
A51 MACRO ASSEMBLER CHECK 04/24/2006 17:04:16 PAGE 2
005F 120158 59 lcall delay
0062 C2B4 60 clr e
0064 22 61 ret
62 ;****************x5045************************************
63 ;----------------单字节写---------------------------------
64 ;作用:这段程序送出命令,读EEPROM存储器中的一个字节数据
0065 78E0 65 byte_write:mov r0,#0e0h ;地址单元的高8位
0067 E6 66 mov a,@r0
0068 F583 67 mov dph,a
006A 08 68 inc r0
006B E6 69 mov a,@r0
006C F582 70 mov dpl,a
006E 792F 71 mov r1,#numbyt ;从传送字节数存元中获取待写字节数
0070 782C 72 mov r0,#mrd ;待写数据缓冲区
0072 1200C5 73 w_l:lcall wren ;写允许
0075 C2B6 74 clr sclk ;将SCK拉低
0077 C2A7 75 clr cs ;将/CS拉低
0079 7402 76 mov a,#02h
007B 8583F0 77 mov b,dph
007E A2F0 78 mov c,b.0
0080 92E3 79 mov acc.3,c
0082 1200EF 80 lcall byte_out ;送出含有地址最高位的写指令
0085 E582 81 mov a,dpl
0087 1200EF 82 lcall byte_out ;送出地址的低8位
008A E6 83 mov a,@r0
008B 1200EF 84 lcall byte_out ;送出数据
008E C2B6 85 clr sclk ;将SCK拉低
0090 D2A7 86 setb cs ;升高/CS
0092 0582 87 inc dpl
0094 08 88 inc r0
0095 1200E4 89 LCALL check_wip ;测试是否已器件内部是否写完
0098 D9D8 90 djnz r1,w_l
009A 22 91 ret
92 ;---------------单字节读-----------------------------------
93 ;作用:这段程序送出命令,读EEPROM存储器中的一个字节数据
009B 78E0 94 byte_read: mov r0,#0e0h ;地址单元的高8位
009D E6 95 mov a,@r0
009E F583 96 mov dph,a
00A0 08 97 inc r0
00A1 E6 98 mov a,@r0
00A2 F582 99 mov dpl,a
00A4 792F 100 mov r1,#numbyt ;从传送字节数存元中获取待写字节数
00A6 782C 101 mov r0,#mrd ;待读数据缓冲区
00A8 C2B6 102 R_L:clr sclk ; 将SCK拉低
00AA C2A7 103 clr cs ; 将/CS拉低
00AC 7403 104 MOV a,#03h
00AE 8583F0 105 mov b,dph
00B1 A2F0 106 mov c,b.0
00B3 92E3 107 mov acc.3,c
00B5 1200EF 108 lcall byte_out ; 送出含有地址最高位的读指令
00B8 E582 109 mov a,dpl
00BA 1200EF 110 lcall byte_out ;送出低8位地址
00BD 1200FD 111 lcall byte_in ; 读数据
00C0 C2B6 112 clr sclk ; 将SCK拉低
00C2 D2A7 113 setb cs ;升高/CS
00C4 22 114 ret
115 ;-------------写使能所存(使能写操作)---------------------
00C5 C2B6 116 wren: clr sclk
00C7 C2A7 117 clr cs
00C9 7406 118 mov a,#06h ;对应设置写使能锁存器
00CB 1200EF 119 lcall byte_out
00CE C2B6 120 clr sclk ;关闭x5045
00D0 D2A7 121 setb cs
00D2 22 122 ret
123 ;-----------读状态寄存器-----------------------------------
00D3 C2B6 124 rdsr: clr sclk
A51 MACRO ASSEMBLER CHECK 04/24/2006 17:04:16 PAGE 3
00D5 C2A7 125 clr cs
00D7 7405 126 mov a,#05h ;对应设置读状态寄存器
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -