📄 serial port.lst
字号:
A51 MACRO ASSEMBLER SERIAL_PORT 12/20/2006 10:51:54 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN serial port.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE serial port.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*******************************************************************
2 ;* *
3 ;* ME500单片机开发系统演示程序 - 串行通迅(中断方式) *
4 ;* *
5 ;* P0口LED显示 *
6 ;* *
7 ;* 工作芯片:AT89S52 晶振频率:11.0592MHz *
8 ;* *
9 ;* 版本: V1.0 (2006/11/20) *
10 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
11 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
12 ;* 时间: 2006/12/15 *
13 ;* *
14 ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
15 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
16 ;* *
17 ;*******************************************************************
18 ;* *
19 ;* 描述: *
20 ;* *
21 ;* 主机发送数据给单片机,单片机接收到数据后,再发送给主机。 *
22 ;* *
23 ;* P0口LED显示接收数据的ASCII码。 *
24 ;* *
25 ;*******************************************************************
26
0030 27 TEMP EQU 30H
28
29 ;*********************************************************
30
0000 31 ORG 0000H
0000 020030 32 LJMP MAIN
0023 33 ORG 0023H
0023 020053 34 LJMP T_SERIL
0030 35 ORG 0030H
36
37 ;*********************************************************
38
39 ; 主程序
40
41 ;*********************************************************
0030 42 MAIN:
0030 758160 43 MOV SP,#60H
0033 7580FF 44 MOV P0,#0FFH
0036 75A0FF 45 MOV P2,#0FFH
0039 753000 46 MOV TEMP,#00H
47
003C 758920 48 MOV TMOD,#20H ; 定时器1工作于8位自动重载模式,用于产生波特率
003F 758DFD 49 MOV TH1,#0FDH
0042 758BFD 50 MOV TL1,#0FDH ; 波特率9600
51
0045 759850 52 MOV SCON,#50H ; 设定串行口工作方式
0048 538700 53 ANL PCON,#00H ; 波特率不倍增
54
004B D2AF 55 SETB EA ; 允许总中断
004D D2AC 56 SETB ES ; 允许串行中断
004F D28E 57 SETB TR1 ; 启动定时器1
58
A51 MACRO ASSEMBLER SERIAL_PORT 12/20/2006 10:51:54 PAGE 2
0051 59 MAIN1:
60
0051 80FE 61 JMP MAIN1 ;等待中断
62
63 ;*********************************************************
64
65 ; 串口中断服务子程序
66
67 ;*********************************************************
0053 68 T_SERIL:
69
0053 C0E0 70 PUSH ACC
0055 C0D0 71 PUSH PSW
0057 C2AC 72 CLR ES ;关闭串行中断
0059 C298 73 CLR RI ;清除串行接受标志位
005B E599 74 MOV A,SBUF ;从串口缓冲区取得数据
75
005D B40D02 76 CJNE A,#0DH,T_LOOP ;0D-回车
0060 800C 77 JMP T_END
0062 78 T_LOOP:
0062 B40A02 79 CJNE A,#0AH,T_LOOP1 ;0A-换行
0065 8007 80 JMP T_END
0067 81 T_LOOP1:
0067 F530 82 MOV TEMP,A
0069 1175 83 CALL SENDDATA
006B F4 84 CPL A
006C F580 85 MOV P0,A
006E 86 T_END:
006E D2AC 87 SETB ES
0070 D0D0 88 POP PSW
0072 D0E0 89 POP ACC
0074 32 90 RETI
91
92 ;*********************************************************
93
94 ; 发送数据子程序
95
96 ;*********************************************************
0075 97 SENDDATA:
0075 E530 98 MOV A,TEMP
0077 F599 99 MOV SBUF,A
0079 3099FD 100 JNB TI,$ ; 等特数据传送
007C C299 101 CLR TI ; 清除数据传送标志
007E 22 102 RET
103
104 ;*********************************************************
105
106 END
A51 MACRO ASSEMBLER SERIAL_PORT 12/20/2006 10:51:54 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
EA . . . . . . . . B ADDR 00A8H.7 A
ES . . . . . . . . B ADDR 00A8H.4 A
MAIN . . . . . . . C ADDR 0030H A
MAIN1. . . . . . . C ADDR 0051H A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
PCON . . . . . . . D ADDR 0087H A
PSW. . . . . . . . D ADDR 00D0H A
RI . . . . . . . . B ADDR 0098H.0 A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SENDDATA . . . . . C ADDR 0075H A
SP . . . . . . . . D ADDR 0081H A
TEMP . . . . . . . N NUMB 0030H 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
T_END. . . . . . . C ADDR 006EH A
T_LOOP . . . . . . C ADDR 0062H A
T_LOOP1. . . . . . C ADDR 0067H A
T_SERIL. . . . . . C ADDR 0053H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -