📄 232.lst
字号:
A51 MACRO ASSEMBLER 232 20/04/03 23:19:59 PAGE 1
DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN 232.OBJ
ASSEMBLER INVOKED BY: C:\C51EVAL\BIN\A51.EXE 232.A51 DB EP
LOC OBJ LINE SOURCE
1 ;程序名: m51实验板配套程序-232通讯及显示
2 ;电路介绍:显示由一片74164驱动4位共阴数码管
3 ; DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3
4 ; 通讯用中断方式
5 ;照顾到初学者,程序中的标号大多使用汉语拼音或简写,常用的标号使用英文!
6 ;www.01mcu.net www.01mcu.com 2003/4/20编写
7 ;*******************************************************************
8 ;定义
0094 9 xsdat bit p1.4 ;定义部分,意思是:程序中管脚名用前面字符替代
0095 10 xsclk bit p1.5
0090 11 gw bit p1.0
0091 12 sw bit p1.1
0092 13 bw bit p1.2
0093 14 qw bit p1.3
0030 15 sjgw equ 30h ;数据存储器
0031 16 sjsw equ 31h
0032 17 sjbw equ 32h
0033 18 sjqw equ 33h
0020 19 temp equ 20h
20 ;**********************************************************
21
0000 22 ORG 0000H
0000 020026 23 LJMP INIT
0023 24 ORG 0023H
0023 020061 25 LJMP COMM ;串口中断
26 ;初始化//串口收发均用查询方式
0026 7580FF 27 INIT: mov p0,#0ffh
0029 759000 28 MOV P1,#0
002C 758140 29 MOV SP,#40H
002F 7400 30 MOV A,#0 ;清内存
0031 7850 31 MOV R0,#50h
0033 F6 32 INILO: MOV @R0,A
0034 D8FD 33 DJNZ R0,INILO
0036 758920 34 MOV TMOD,#20H ;
0039 758DFD 35 MOV TH1,#0FDH ;FAH=9600BPS串口速度
003C 758BFD 36 MOV TL1,#0FDH
003F 758700 37 MOV PCON,#00H ;不加速
0042 759850 38 MOV SCON,#50H
0045 D28E 39 SETB TR1
0047 D2AC 40 setb es
0049 D2AF 41 setb ea
004B 120077 42 lcall display
43 ;****主程序***************************************************
004E E520 44 MAIN: mov a,temp
0050 540F 45 anl a,#0fh
0052 F530 46 mov sjgw,a
0054 E520 47 mov a,temp
0056 54F0 48 anl a,#0f0h
0058 C4 49 swap a
0059 F531 50 mov sjsw,a
005B 120077 51 lcall display
005E 02004E 52 ljmp main
53
54 ;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
55 ;*****接收/发送 串口数据**用中断,返回************************
0061 56 COMM:
57 ; JNB RI,$
0061 C2AF 58 clr ea
A51 MACRO ASSEMBLER 232 20/04/03 23:19:59 PAGE 2
0063 C0E0 59 push acc
0065 C298 60 CLR RI
0067 E599 61 MOV A,SBUF
0069 F520 62 mov 20h,a ;先保存
006B F599 63 MOV SBUF,A ;再转发
006D 3099FD 64 JNB TI,$
0070 C299 65 CLR TI
0072 D2AF 66 setb ea
0074 D0E0 67 pop acc
0076 32 68 RETi
69
70 ;************************************************************************
71 ;74164显示程序,使用RS1=1,RS0=0的1区
72 ;---------------------------------------------------------
0077 C0E0 73 display: PUSH ACC ;保存ACC
0079 C0D0 74 push psw
007B C2D4 75 clr rs1
007D D2D3 76 setb rs0 ;使用第一区工作寄存器
007F 9000C8 77 mov dptr,#xstab
0082 E530 78 mov a,sjgw ;取得数据
0084 93 79 movc a,@a+dptr ;提取字模
0085 11B3 80 acall dsout ;调用送出子程序
0087 C290 81 clr gw
0089 11BF 82 acall ds1ms ;调用显示1ms延时程序
008B D290 83 setb gw
008D E531 84 mov a,sjsw
008F 93 85 movc a,@a+dptr ;提取字模
0090 11B3 86 acall dsout ;送出
0092 C291 87 clr sw
0094 11BF 88 acall ds1ms ;显示1ms
0096 D291 89 setb sw
0098 E532 90 mov a,sjbw
009A 93 91 movc a,@a+dptr ;提取字模
009B 11B3 92 acall dsout ;送出
009D C292 93 clr bw
009F 11BF 94 acall ds1ms ;显示1ms
00A1 D292 95 setb bw
00A3 E533 96 mov a,sjqw
00A5 93 97 movc a,@a+dptr ;提取字模
00A6 11B3 98 acall dsout ;送出
00A8 C293 99 clr qw
00AA 11BF 100 acall ds1ms ;显示1ms
00AC D293 101 setb qw
00AE D0D0 102 pop psw
00B0 D0E0 103 POP ACC ;出栈
00B2 22 104 ret ;返回调用
105 ;---送出循环----------
00B3 106 dsout:
00B3 7808 107 MOV R0,#8 ;传送一个字节8位
00B5 33 108 dSLOOP: RLC A ;右移
00B6 9294 109 MOV xsdat,C ;送数据到数据口
00B8 D295 110 SETB xsclk ;送一时钟
00BA C295 111 CLR xsclk
00BC D8F7 112 DJNZ R0,dSLOOP
00BE 22 113 RET
114 ;---显示延时----------
00BF 7905 115 ds1ms: mov r1,#5
00C1 7A64 116 ds1lo: mov r2,#100
00C3 DAFE 117 djnz r2,$
00C5 D9FA 118 djnz r1,ds1lo
00C7 22 119 ret ;延时返回
120 ;************************************************************************
121 ;显示字表(共阴)
00C8 122 xstab: DB 3FH,06H,5BH,4FH ;"0","1","2","3"
00CC 123 DB 66H,6DH,7DH,07H ;"4","5","6","7"
00D0 124 DB 7FH,6FH,77H,7cH ;"8","9","A","B"
A51 MACRO ASSEMBLER 232 20/04/03 23:19:59 PAGE 3
00D4 125 DB 39H,5eh,79h,71h ;"C","D","E","F"
126
127
128 END
A51 MACRO ASSEMBLER 232 20/04/03 23:19:59 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
BW . . . . . . . . B ADDR 0090H.2 A
COMM . . . . . . . C ADDR 0061H A
DISPLAY. . . . . . C ADDR 0077H A
DS1LO. . . . . . . C ADDR 00C1H A
DS1MS. . . . . . . C ADDR 00BFH A
DSLOOP . . . . . . C ADDR 00B5H A
DSOUT. . . . . . . C ADDR 00B3H A
EA . . . . . . . . B ADDR 00A8H.7 A
ES . . . . . . . . B ADDR 00A8H.4 A
GW . . . . . . . . B ADDR 0090H.0 A
INILO. . . . . . . C ADDR 0033H A
INIT . . . . . . . C ADDR 0026H A
MAIN . . . . . . . C ADDR 004EH A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
PCON . . . . . . . D ADDR 0087H A
PSW. . . . . . . . D ADDR 00D0H A
QW . . . . . . . . B ADDR 0090H.3 A
RI . . . . . . . . B ADDR 0098H.0 A
RS0. . . . . . . . B ADDR 00D0H.3 A
RS1. . . . . . . . B ADDR 00D0H.4 A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SJBW . . . . . . . N NUMB 0032H A
SJGW . . . . . . . N NUMB 0030H A
SJQW . . . . . . . N NUMB 0033H A
SJSW . . . . . . . N NUMB 0031H A
SP . . . . . . . . D ADDR 0081H A
SW . . . . . . . . B ADDR 0090H.1 A
TEMP . . . . . . . N NUMB 0020H 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
XSCLK. . . . . . . B ADDR 0090H.5 A
XSDAT. . . . . . . B ADDR 0090H.4 A
XSTAB. . . . . . . C ADDR 00C8H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -