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

📄 wl013.lst

📁 此程序为单片机开发过程中的串口通信演示程序。用 汇编编写
💻 LST
字号:
A51 MACRO ASSEMBLER  WL013                                                                01/23/2005 15:55:56 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*    标题       : ME300系列开发板演示程序 - PC与ME300串行通迅程序              *
                       3     ;*    文件       : wl013.asm                                                    *
                       4     ;*    时间       : 2005-1-18                                                    *
                       5     ;*    版本       : 1.0                                                          *
                       6     ;*                                                                              *
                       7     ;*    作者       : 伟纳电子 - Freeman                                           *
                       8     ;*    邮件       : freeman@willar.com                                           *
                       9     ;*    网址       : www.willar.com                                               *
                      10     ;*                                                                              *
                      11     ;********************************************************************************
                      12     ;*    描述       :                                                              *
                      13     ;*                 单片机接收主机的数据,然后将数据传送到P0口, 并传回给主机;     *
                      14     ;*                 当按下AN1时, 单片机发送字串"welcome! www.willar.com\n\r"    *
                      15     ;*                 给主机.                                                      *
                      16     ;*                                                                              *
                      17     ;********************************************************************************
  00B2                18     AN1     EQU     P3.2                    ; 按键端口
                      19     ; 变量定义
  0050                20     KEY_S   EQU     50H                     ; 当前的按键状态                        
  0051                21     KEY_V   EQU     51H                     ; 上次的按键状态
                      22     
                      23     
0000                  24             ORG     0000H
0000 020003           25             LJMP    MAIN
                      26             
0003                  27     MAIN:
0003 758920           28             MOV     TMOD,#20H               ; 定时器1工作于8位自动重载模式,用于产生波特率
0006 758DFD           29             MOV     TH1,#0FDH
0009 758BFD           30             MOV     TL1,#0FDH               ; 波特率9600
                      31             
000C 759850           32             MOV     SCON,#50H               ; 设定串行口工作方式
000F 5387EF           33             ANL     PCON,#0EFH              ; 波特率不倍增
                      34             
0012 D28E             35             SETB    TR1                     ; 启动定时器1
0014 75A800           36             MOV     IE,#0                   ; 禁止任何中断
                      37     
0017 755101           38             MOV     KEY_V,#01H              ; 
                      39             
001A                  40     MAIN_RX:
001A 309809           41             JNB     RI,MAIN_KEY             ; 是否有数据到来
001D C298             42             CLR     RI
001F E599             43             MOV     A,SBUF                  ; 暂存接收到的数据
0021 F580             44             MOV     P0,A                    ; 数据传送到P0口
0023 120055           45             LCALL   SEND_CHAR               ; 回传接收到的数据
                      46             
0026                  47     MAIN_KEY:
0026 12003B           48             LCALL   SCAN_KEY                ;  扫描按键
0029 60EF             49             JZ      MAIN_RX
002B 12005D           50             LCALL   DELAY_15MS              ;  延时去抖动
002E 12003B           51             LCALL   SCAN_KEY
0031 60E7             52             JZ      MAIN_RX
0033 855051           53             MOV     KEY_V,KEY_S             ;  保存键值
0036 120045           54             LCALL   PROC_KEY                ; 键处理
0039 80DF             55             SJMP    MAIN_RX
                      56     ;===============================================================================
003B                  57     SCAN_KEY:
                      58     ; 扫描按键, (在此实例中仅扫描按键AN1)   
A51 MACRO ASSEMBLER  WL013                                                                01/23/2005 15:55:56 PAGE     2

                      59     ; 传入参数: 无
                      60     ; 返回值: 无
003B E4               61             CLR     A
003C A2B2             62             MOV     C,AN1
003E 92E0             63             MOV     ACC.0, C
0040 F550             64             MOV     KEY_S,A
0042 6551             65             XRL     A,KEY_V                 ; 检查按键状态是否改变
0044 22               66             RET
                      67     ;===============================================================================        
0045                  68     PROC_KEY:
                      69     ; 按键处理子程序 --- 发送字符串到PC
                      70     ; 传入参数: KEY_V --- 按键值
                      71     ; 返回值: 无    
0045 20B20C           72             JB      AN1,END_PROC_KEY        ; AN1未按下时,直接返回
0048 900068           73             MOV     DPTR,#TAB_WWW           ; 字串表格地址
                      74     
004B                  75     SEND_STRING:
004B E4               76             CLR     A
004C 93               77             MOVC    A,@A+DPTR
004D 6005             78             JZ      END_PROC_KEY            ; 查到00H时,表示字串结束
004F 1155             79             ACALL   SEND_CHAR
0051 A3               80             INC     DPTR                    ; 下一字符
0052 80F7             81             SJMP    SEND_STRING
0054                  82     END_PROC_KEY:
0054 22               83             RET     
                      84     
                      85     ;===============================================================================
0055                  86     SEND_CHAR:
                      87     ; 传送一个字符
                      88     ; 传入参数: ACC(要发送的数据)
                      89     ; 返回值: 无
0055 F599             90             MOV     SBUF,A
0057 3099FD           91             JNB     TI,$                    ; 等特数据传送
005A C299             92             CLR     TI                      ; 清除数据传送标志
005C 22               93             RET
                      94     ;===============================================================================
                      95     ; 扫描按键, (在此实例中仅扫描按键AN1)   
                      96     ; 传入参数: 无
                      97     ; 返回值: 无
005D                  98     DELAY_15MS:
005D 7F0F             99             MOV     R7,#15
005F                 100     DELAY15MS_1:
005F 7EE8            101             MOV     R6,#0E8H
0061                 102     DELAY15MS_2:
0061 00              103             NOP
0062 00              104             NOP
0063 DEFC            105             DJNZ    R6,DELAY15MS_2
0065 DFF8            106             DJNZ    R7,DELAY15MS_1
0067 22              107             RET
                     108     
                     109             
0068                 110     TAB_WWW:
0068 77656C63        111             DB      "welcome! www.willar.com"
006C 6F6D6521                
0070 20777777                
0074 2E77696C                
0078 6C61722E                
007C 636F6D                  
007F 0A0D            112             DB      0AH,0DH         ;换行/回车
0081 00              113             DB      00H
                     114             END
A51 MACRO ASSEMBLER  WL013                                                                01/23/2005 15:55:56 PAGE     3

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
AN1. . . . . . . .  B ADDR   00B0H.2 A   
DELAY15MS_1. . . .  C ADDR   005FH   A   
DELAY15MS_2. . . .  C ADDR   0061H   A   
DELAY_15MS . . . .  C ADDR   005DH   A   
END_PROC_KEY . . .  C ADDR   0054H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
KEY_S. . . . . . .  N NUMB   0050H   A   
KEY_V. . . . . . .  N NUMB   0051H   A   
MAIN . . . . . . .  C ADDR   0003H   A   
MAIN_KEY . . . . .  C ADDR   0026H   A   
MAIN_RX. . . . . .  C ADDR   001AH   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PCON . . . . . . .  D ADDR   0087H   A   
PROC_KEY . . . . .  C ADDR   0045H   A   
RI . . . . . . . .  B ADDR   0098H.0 A   
SBUF . . . . . . .  D ADDR   0099H   A   
SCAN_KEY . . . . .  C ADDR   003BH   A   
SCON . . . . . . .  D ADDR   0098H   A   
SEND_CHAR. . . . .  C ADDR   0055H   A   
SEND_STRING. . . .  C ADDR   004BH   A   
TAB_WWW. . . . . .  C ADDR   0068H   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TI . . . . . . . .  B ADDR   0098H.1 A   
TL1. . . . . . . .  D ADDR   008BH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR1. . . . . . . .  B ADDR   0088H.6 A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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