📄 asmpro.lst
字号:
A51 MACRO ASSEMBLER ASMPRO DATE 21/06/03 PAGE 1
MS-DOS MACRO ASSEMBLER A51 V4.4
OBJECT MODULE PLACED IN ASMPRO.OBJ
ASSEMBLER INVOKED BY: A51 ASMPRO.ASM DB
LOC OBJ LINE SOURCE
1 ;****************************************************************************
2 ;=============================== ASMPRO(V10)=================================
3 ;-------------------------------- 内存分配 ----------------------------------
4 ;内存助记符清单...
5 ;N (常数)
6 ;B (位变量, bdata)
7 ;BC (单片机控制脚)
8 ;R (内部内存变量, data)
9 ;RG (内部内存变量数组, data)
10 ;RX (外部内存变量, xdata)
11 ;RXG (外部内存变量数组, xdata)
12 ;例子: N_XXX, B_XXX, R_XXX ...
13
14 PUBLIC RESET
15 ;A51汇编器伪指令(PUBLIC) 为其它模块所使用
16 ;....................... 常量、变量定义 ...........................
17 ;N_KEEPM EQU 42D
18
19
20 ;***** 汇编的子程序之间的过程数据传递数组 uchar par[4] *****
21 EXTRN DATA(PAR) ;第1字节 -- PAR
22 ;第2字节 -- PAR+01H
23 ;第3字节 -- PAR+02H
24 ;第4字节 -- PAR+03H
25 ;...
26 ;A51汇编器伪指令(EXTRN) 列出其它模块中定义过的符号,字节和位
27 ;***** 汇编的子程序之间的过程数据传递位组 *****************
28 EXTRN BIT(SYS_START) ;第一位显示最高位
29
30 ;=========================== 汇编程序开始 ===================================
31 ;****************************************************************************
32 CSEG AT(0003H) ;External Interrupt 0
0003 32 33 RETI
34 ;A51汇编器伪指令(CSEG),程序绝对段
35 CSEG AT(000BH) ;Timer 0
000B 32 36 RETI
37 ;A51汇编器伪指令(CSEG),程序绝对段
38 CSEG AT(0013H) ;External Interrupt 1
0013 32 39 RETI
40 ;A51汇编器伪指令(CSEG),程序绝对段
41 CSEG AT(001BH) ;Timer 1
001B 0204BD 42 LJMP TIME1_INT
001E 32 43 RETI
44 ;A51汇编器伪指令(CSEG),程序绝对段
45 CSEG AT(0023H) ;Serial Port
0023 32 46 RETI
47 ;A51汇编器伪指令(CSEG),程序绝对段
48 CSEG AT(002BH) ;Serial 52 CPU Timer2/T2Ex
002B 32 49 RETI
50 ;A51汇编器伪指令(CSEG),程序绝对段
002C 00 51 NOP
002D 00 52 NOP
002E 00 53 NOP
54
A51 MACRO ASSEMBLER ASMPRO DATE 21/06/03 PAGE 2
LOC OBJ LINE SOURCE
55 ;****** 包括外部的汇编子程序 **********************************
56 $INCLUDE (PT6311.ASM)
=1 57 ;*******************************第一个PT6311 器件子程序集 ****************************
=1 58 ;VFD控制驱动器
=1 59 ;占用: ACC, R0, R1
=1 60
=1 61 ;************ 公共变量定义 ****************
=1 62 PUBLIC WVFD_6311
=1 63 PUBLIC GETKEY_6311
=1 64 PUBLIC SETUP_6311
=1 65 PUBLIC DIM_VFD
=1 66 PUBLIC WLED_6311
=1 67
=1 68 EXTRN DATA(DIM_NUM) ;现键值寄存
=1 69
=1 70 ;************* 变量说明 *******************
00A6 =1 71 BC_DIN_6311 BIT P2.6 ;数据输入脚
00A6 =1 72 BC_DOUT_6311 BIT P2.6 ;数据输出脚
00B6 =1 73 BC_CLK_6311 BIT P3.6 ;时钟
00B7 =1 74 BC_STB_6311 BIT P3.7 ;使能脚
=1 75
=1 76
=1 77 ;************** 常数定义 ******************
0004 =1 78 PT6311KEY_NUM EQU 4 ;现在用的6311键总数(48个)
0042 =1 79 READ_6311KEY EQU 42H ;PT6311读键值命令符
=1 80 ;=============================== 公共子程序 (可被C调用) ===============================
=1 81
=1 82 ;************* 写6311显示内存 **************
=1 83 ;********************************************
=1 84 ;参数1: PAR 要写的显存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS)
=1 85 ;参数2: PAR+03H 写的高1位数据
=1 86 ;参数3: PAR+02H 写的中8位数据
=1 87 ;参数4: PAR+01H 写的低8位数据(先送出, 且从bit0位开始)
=1 88 ;返回:
=1 89 ;占用: ACC
=1 90
002F =1 91 WVFD_6311: ;发送数据到PT6311进行显示
002F C2B7 =1 92 CLR BC_STB_6311 ;pt6311 stb=0 (ENABLE)
0031 7440 =1 93 MOV A,#40H ;data set command--write data to disp mem by increment addr
ess mod
0033 1200DA =1 94 LCALL DISP ;sendn data to pt6311 here is data set command
0036 D2B7 =1 95 SETB BC_STB_6311 ;STD=1 (DISABLE)
0038 00 =1 96 NOP
0039 C2B7 =1 97 CLR BC_STB_6311 ;PT6311 ENABLE
003B E500 F =1 98 MOV A, PAR ;pt6311 disp mem start mem in 1DH
003D 1200DA =1 99 LCALL DISP ;send data to pt6311 here is address set command
0040 E500 F =1 100 MOV A, PAR+02H
0042 1200DA =1 101 LCALL DISP ;send data to pt6311 here is transmission data
0045 E500 F =1 102 MOV A, PAR+01H
0047 1200DA =1 103 LCALL DISP ;send data to pt6311 here is transmission data
004A D2B7 =1 104 SETB BC_STB_6311 ;PT6311 DISABLE
004C 22 =1 105 RET
=1 106
=1 107
=1 108 ;******** 读键盘按键子程序 ************
=1 109 ;***************************************
=1 110 ;参数:
=1 111 ;返回: PAR 返回键值, 0=无按键
=1 112 ;占用: ACC
A51 MACRO ASSEMBLER ASMPRO DATE 21/06/03 PAGE 3
LOC OBJ LINE SOURCE
=1 113
004D =1 114 GETKEY_6311:
004D D2B7 =1 115 SETB BC_STB_6311 ;STB
004F D2A6 =1 116 SETB BC_DOUT_6311 ;pt6311 Dout
0051 D2A6 =1 117 SETB BC_DIN_6311 ;pt6311 Din
0053 00 =1 118 NOP
0054 C2B7 =1 119 CLR BC_STB_6311 ;pt6311 STB
0056 7442 =1 120 MOV A, #READ_6311KEY
0058 1200DA =1 121 LCALL DISP ;向pt6311发送读键值命令
005B 750004 F =1 122 MOV PAR, #PT6311KEY_NUM
005E 00 =1 123 NOP
005F =1 124 LBL_P8:
005F C2B6 =1 125 CLR BC_CLK_6311 ;Pt6311 CLK
0061 00 =1 126 NOP
0062 00 =1 127 NOP
0063 00 =1 128 NOP
0064 00 =1 129 NOP
0065 A2A6 =1 130 MOV C,BC_DOUT_6311 ;pt6311 Dout
0067 400A =1 131 JC LBL_P9
0069 00 =1 132 NOP
006A D2B6 =1 133 SETB BC_CLK_6311 ;Pt6311 CLK
006C 00 =1 134 NOP
006D D500EF F =1 135 DJNZ PAR, LBL_P8 ;PAR表示键位置
0070 020074 =1 136 LJMP LBL_P99
0073 =1 137 LBL_P9:
0073 00 =1 138 NOP
0074 =1 139 LBL_P99:
0074 D2B7 =1 140 SETB BC_STB_6311 ;pt6311 STB
0076 22 =1 141 RET
=1 142
=1 143 ;*****************************************
=1 144 ;********** 送数据到6311的LED口 *********
=1 145 ;****************************************
=1 146 ;参数: PAR 要送入的数据
=1 147 ;返回:
=1 148 ;占用: ACC
=1 149
0077 =1 150 WLED_6311:
0077 C2B7 =1 151 CLR BC_STB_6311 ;pt6311 stb=0 (ENABLE)
0079 7441 =1 152 MOV A,#41H ;data set command--write data to LED PORT
007B 1200DA =1 153 LCALL DISP ;sendn data to pt6311 here is data set command
007E E500 F =1 154 MOV A, PAR ;pt6311 LED DATA
0080 1200DA =1 155 LCALL DISP ;send data to pt6311 here is address set command
0083 D2B7 =1 156 SETB BC_STB_6311 ;PT6311 DISABLE
0085 22 =1 157 RET
=1 158
=1 159 ;*********************************************
=1 160 ;参数:
=1 161 ;返回:
=1 162 ;占用: ACC
=1 163
0086 =1 164 SETUP_6311:
0086 C2B7 =1 165 CLR BC_STB_6311 ;ready to send data to pt6311 STB
0088 740C =1 166 MOV A,#0CH ;0000,1100=0CH 13G,15P
008A 1200DA =1 167 LCALL DISP ;send command to pt6311,here is set displayer mod,11dig/17seg
008D D2B7 =1 168 SETB BC_STB_6311 ;STD
008F 22 =1 169 RET
=1 170
A51 MACRO ASSEMBLER ASMPRO DATE 21/06/03 PAGE 4
LOC OBJ LINE SOURCE
=1 171 ;********** 打开荧光显示 **************
=1 172 ;参数:
=1 173 ;返回:
=1 174 ;占用: ACC
=1 175
0090 C2B7 =1 176 DIM_VFD: CLR BC_STB_6311 ;STD=0 点亮显示字符
0092 00 =1 177 NOP
0093 E500 F =1 178 MOV A,DIM_NUM
0095 B40005 =1 179 CJNE A,#00H,LBL_DIM_00
0098 7488 =1 180 MOV A,#88H
009A 0200CF =1 181 LJMP LBL_DIM_11
009D =1 182 LBL_DIM_00:
009D B40105 =1 183 CJNE A,#01H,LBL_DIM_1
00A0 7489 =1 184 MOV A,#89H
00A2 0200CF =1 185 LJMP LBL_DIM_11
00A5 =1 186 LBL_DIM_1:
00A5 B40205 =1 187 CJNE A,#02H,LBL_DIM_2
00A8 748A =1 188 MOV A,#8AH
00AA 0200CF =1 189 LJMP LBL_DIM_11
00AD =1 190 LBL_DIM_2:
00AD B40305 =1 191 CJNE A,#03H,LBL_DIM_3
00B0 748B =1 192 MOV A,#8BH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -