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

📄 ex08.lst

📁 单片机串行通讯程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  EX08                                                                 05/23/2005 23:22:42 PAGE     1


MACRO ASSEMBLER A51 V7.03
OBJECT MODULE PLACED IN ex08.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ex08.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     
                       3     
                       4     
                       5     
                       6     
                       7     
                       8     
                       9     
                      10     CODE_SEG        SEGMENT CODE 
                      11     DATA_SEG        SEGMENT DATA
                      12     STACK_SEG       SEGMENT IDATA
                      13     
----                  14             RSEG  DATA_SEG
                      15             
0000                  16     INDATA:         DS      1
0001                  17     ADDR:           DS      1
                      18     
----                  19             RSEG    STACK_SEG
0000                  20     STACK:          DS      20
                      21     
                      22     
  0091                23     CS      BIT     P1.1
  0092                24     SK      BIT     P1.2
  0090                25     DI      BIT     P1.0
  0093                26     DO      BIT     P1.3
                      27     
                      28     ;===============================================================================
----                  29             CSEG    AT      0000H
0000 020000   F       30             JMP     MAIN
                      31     
                      32     ;===============================================================================
----                  33             RSEG  CODE_SEG
0000                  34     MAIN:
                      35             USING   0
0000 758100   F       36             MOV     SP,#(STACK-1)           ; 设置堆栈
                      37             
0003 C291             38             CLR     CS                      ; 初始化端口
0005 C292             39             CLR     SK
0007 D290             40             SETB    DI
0009 D293             41             SETB    DO
                      42     
000B 120000   F       43             LCALL   EWEN                    ; 使能写入操作
000E 120000   F       44             LCALL   ERASE                   ; 擦除全部内容
                      45             
0011 E4               46             CLR     A                       ; 写入显示代码到AT93C46
0012 F500     F       47             MOV     ADDR,A
0014                  48     WRITE_LP:
0014 E500     F       49             MOV     A,ADDR
0016 900000   F       50             MOV     DPTR,#DIS_CODE
0019 93               51             MOVC    A,@A+DPTR
                      52             
001A FD               53             MOV     R5,A                    ; 数据到R5
001B AF00     F       54             MOV     R7,ADDR                 ; 地址到R7
001D 120000   F       55             LCALL   WRITE
                      56             
0020 0500     F       57             INC     ADDR                    ; 地址加1
0022 E500     F       58             MOV     A,ADDR
A51 MACRO ASSEMBLER  EX08                                                                 05/23/2005 23:22:42 PAGE     2

0024 C3               59             CLR     C
0025 9408             60             SUBB    A,#08H                  ; 共8个字节,判断是否完成
0027 40EB             61             JC      WRITE_LP
                      62             
0029 120000   F       63             LCALL   EWDS                    ; 禁止写入操作  
                      64             
                      65     
002C E4               66             CLR     A
002D F500     F       67             MOV     ADDR,A
                      68             
002F                  69     MAIN_LP:                                ; 循环读取AT93C46内容,并输出到P0口
002F AF00     F       70             MOV     R7,ADDR
0031 120000   F       71             LCALL   READ
                      72             
0034 8F80             73             MOV     P0,R7
0036 0500     F       74             INC     ADDR
0038 530007   F       75             ANL     ADDR,#07H               ; 循环读取地址为0x00~0x07
                      76     
003B 7FFA             77             MOV     R7,#250
003D 120000   F       78             LCALL   DELAYMS                 ; 延时250ms
                      79             
0040 80ED             80             SJMP    MAIN_LP
                      81     
                      82     
                      83     ;===============================================================================
----                  84             RSEG    CODE_SEG
0042                  85     WRITE:
                      86     ; 定入数据到AT93C46
                      87     ; 传入参数:R7 --- 要写入数据的地址
                      88     ; 传入参数:R5 --- 要写入的数据
                      89     ; 返回值:无
                      90     
                      91             USING   0
0042 8D00     F       92             MOV     INDATA,R5               ; 暂存要写入的数据
                      93     
0044 AD07             94             MOV     R5,AR7                  ; 地址
0046 7F40             95             MOV     R7,#040H                ; 写入指令
0048 120000   F       96             LCALL   INOP                    ; 调用INOP子程序,写入指令和地址
                      97     
004B AF00     F       98             MOV     R7,INDATA               ; 数据
004D 120000   F       99             LCALL   SHIN                    ; 移入数据
                     100     
0050 C291            101             CLR     CS
                     102     
0052 7F0A            103             MOV     R7,#10
0054 020000   F      104             LJMP    DELAYMS                 ; 延时10ms,Twp
                     105     ; END OF WRITE
                     106     
                     107     ;===============================================================================
----                 108             RSEG  CODE_SEG
0057                 109     READ:
                     110     ; 读取AT93C46内的数据
                     111     ; 传入参数:R7 --- 地址
                     112     ; 返回值:R7 --- 读取的数据
                     113     
                     114             USING   0
                     115             
0057 AD07            116             MOV     R5,AR7
0059 7F80            117             MOV     R7,#080H
005B 120000   F      118             LCALL   INOP                    ; 调用INOP子程序,写入指令和地址
                     119     
005E 120000   F      120             LCALL   SHOUT                   ; 调用SHOUT,读出数据保存到R7
                     121             
0061 C291            122             CLR     CS
                     123     
0063 22              124             RET     
A51 MACRO ASSEMBLER  EX08                                                                 05/23/2005 23:22:42 PAGE     3

                     125     ; END OF READ
                     126     
                     127     ;===============================================================================
----                 128             RSEG  CODE_SEG
0064                 129     EWEN:
                     130     ; 写入使能指令
                     131     ; 传入参数:无
                     132     ; 返回值:无
                     133     
                     134             USING   0
                     135     
0064 7D60            136             MOV     R5,#060H
0066 E4              137             CLR     A
0067 FF              138             MOV     R7,A
0068 120000   F      139             LCALL   INOP
                     140     
006B C291            141             CLR     CS
                     142     
006D 22              143             RET     
                     144     ; END OF EWEN
                     145     
                     146     
                     147     ;===============================================================================
----                 148             RSEG  CODE_SEG
006E                 149     EWDS:
                     150     ; 写入禁止指令
                     151     ; 传入参数:无
                     152     ; 返回值:无
                     153     
                     154             USING   0
                     155             
006E E4              156             CLR     A
006F FD              157             MOV     R5,A
0070 FF              158             MOV     R7,A
0071 120000   F      159             LCALL   INOP
                     160     
0074 C291            161             CLR     CS
                     162     
0076 22              163             RET     
                     164     ; END OF EWDS
                     165     
                     166     ;===============================================================================
----                 167             RSEG  CODE_SEG
0077                 168     ERASE:
                     169     ; 擦除所有内容
                     170     ; 传入参数:无
                     171     ; 返回值:无
                     172     
                     173             USING   0
                     174             
0077 7D40            175             MOV     R5,#040H
0079 E4              176             CLR     A
007A FF              177             MOV     R7,A
007B 120000   F      178             LCALL   INOP
                     179     
007E 7F1E            180             MOV     R7,#01EH
0080 120000   F      181             LCALL   DELAYMS
                     182     
0083 C291            183             CLR     CS
                     184     
0085 22              185             RET     
                     186     ; END OF ERASE
                     187     
                     188     ;===============================================================================
----                 189             RSEG  CODE_SEG

⌨️ 快捷键说明

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