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

📄 com.lst

📁 含有多个汇编以及c语言编程实例 用于单片机
💻 LST
字号:
A51 MACRO ASSEMBLER  COM                                                                  10/12/2006 09:00:39 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;*
                       2     ;*         单片机接收主机的数据,然后将数据传送到P0口, 并传回给主机;             *
                       3     ;*         当按下K1时, 单片机发送字www.hificat.com" 给主机       *                         
                                                   *
                       4     ;*                                                                              *
                       5     ;*    注意:演示此程序需要配合串口调试软件                                      *
                       6     ;*                                                                              *
                       7     
                       8     
  0094                 9     K1      EQU     P1.4                    ; 按键端口
                      10     ; 变量定义
  0050                11     KEY_S   EQU     50H                     ; 当前的按键状态                        
  0051                12     KEY_V   EQU     51H                     ; 上次的按键状态
                      13     
                      14     
0000                  15             ORG     0000H
0000 020003           16             LJMP    MAIN
                      17             
0003                  18     MAIN:
0003 758920           19             MOV     TMOD,#20H               ; 定时器1工作于8位自动重载模式,用于产生波特率
0006 758DFD           20             MOV     TH1,#0FDH
0009 758BFD           21             MOV     TL1,#0FDH               ; 波特率9600
                      22             
000C 759850           23             MOV     SCON,#50H               ; 设定串行口工作方式
000F 5387EF           24             ANL     PCON,#0EFH              ; 波特率不倍增
                      25             
0012 D28E             26             SETB    TR1                     ; 启动定时器1
0014 75A800           27             MOV     IE,#0                   ; 禁止任何中断
                      28     
0017 755101           29             MOV     KEY_V,#01H              ; 
                      30             
001A                  31     MAIN_RX:
001A 309809           32             JNB     RI,MAIN_KEY             ; 是否有数据到来
001D C298             33             CLR     RI
001F E599             34             MOV     A,SBUF                  ; 暂存接收到的数据
0021 F580             35             MOV     P0,A                    ; 数据传送到P0口
0023 120055           36             LCALL   SEND_CHAR               ; 回传接收到的数据
                      37             
0026                  38     MAIN_KEY:
0026 12003B           39             LCALL   SCAN_KEY                ;  扫描按键
0029 60EF             40             JZ      MAIN_RX
002B 12005D           41             LCALL   DELAY_15MS              ;  延时去抖动
002E 12003B           42             LCALL   SCAN_KEY
0031 60E7             43             JZ      MAIN_RX
0033 855051           44             MOV     KEY_V,KEY_S             ;  保存键值
0036 120045           45             LCALL   PROC_KEY                ; 键处理
0039 80DF             46             SJMP    MAIN_RX
                      47     ;===============================================================================
003B                  48     SCAN_KEY:
                      49     ; 扫描按键, (在此实例中仅扫描按键K1)    
                      50     ; 传入参数: 无
                      51     ; 返回值: 无
003B E4               52             CLR     A
003C A294             53             MOV     C,K1
003E 92E0             54             MOV     ACC.0, C
0040 F550             55             MOV     KEY_S,A
0042 6551             56             XRL     A,KEY_V                 ; 检查按键状态是否改变
0044 22               57             RET
A51 MACRO ASSEMBLER  COM                                                                  10/12/2006 09:00:39 PAGE     2

                      58     ;===============================================================================        
0045                  59     PROC_KEY:
                      60     ; 按键处理子程序 --- 发送字符串到PC
                      61     ; 传入参数: KEY_V --- 按键值
                      62     ; 返回值: 无    
0045 20940C           63             JB      K1,END_PROC_KEY ; K1未按下时,直接返回
0048 900068           64             MOV     DPTR,#TAB_WWW           ; 字串表格地址
                      65     
004B                  66     SEND_STRING:
004B E4               67             CLR     A
004C 93               68             MOVC    A,@A+DPTR
004D 6005             69             JZ      END_PROC_KEY            ; 查到00H时,表示字串结束
004F 1155             70             ACALL   SEND_CHAR
0051 A3               71             INC     DPTR                    ; 下一字符
0052 80F7             72             SJMP    SEND_STRING
0054                  73     END_PROC_KEY:
0054 22               74             RET     
                      75     
                      76     ;===============================================================================
0055                  77     SEND_CHAR:
                      78     ; 传送一个字符
                      79     ; 传入参数: ACC(要发送的数据)
                      80     ; 返回值: 无
0055 F599             81             MOV     SBUF,A
0057 3099FD           82             JNB     TI,$                    ; 等特数据传送
005A C299             83             CLR     TI                      ; 清除数据传送标志
005C 22               84             RET
                      85     ;===============================================================================
                      86     ; 扫描按键, (在此实例中仅扫描按键K1)    
                      87     ; 传入参数: 无
                      88     ; 返回值: 无
005D                  89     DELAY_15MS:
005D 7F0F             90             MOV     R7,#15
005F                  91     DELAY15MS_1:
005F 7EE8             92             MOV     R6,#0E8H
0061                  93     DELAY15MS_2:
0061 00               94             NOP
0062 00               95             NOP
0063 DEFC             96             DJNZ    R6,DELAY15MS_2
0065 DFF8             97             DJNZ    R7,DELAY15MS_1
0067 22               98             RET
                      99     
                     100             
0068                 101     TAB_WWW:
0068 7777772E        102             DB      "www.hificat.com"
006C 68696669                
0070 6361742E                
0074 636F6D                  
0077 0A0D            103             DB      0AH,0DH         ;换行/回车
0079 00              104             DB      00H
                     105             END
A51 MACRO ASSEMBLER  COM                                                                  10/12/2006 09:00:39 PAGE     3

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


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

ACC. . . . . . . .  D ADDR   00E0H   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   
K1 . . . . . . . .  B ADDR   0090H.4 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   
P1 . . . . . . . .  D ADDR   0090H   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 + -