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

📄 check.lst

📁 x5045相关程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -