模拟外设
7.1 模数转换器
7.1.1 A/D 转换器工作原理
将 A/D 转换器电路集成到单片机内,可有效的减少外部器件,同时,具有低成本和减少器件空间需求的优势。 A/D 转换器广泛应用于触摸屏、电池电量检测等很多场合。
SPMC65 系列单片机具有 9 通道 A/D 转换功能,精度为 10 位,可选内部参考电压即电源电压( VDD ),也可选择外部参考电压输入( VRT )( 8 通道 10 位 ADC 模式), PB7 用作外部参考电压的输入管脚。 ADC 输入通道和 I/O 端口 A[7:0] 、 PB7 复用,具体请参见 表 7.1 。
表 7 . 1 A/D 转换模式简表
模式 |
9 通道 10 位 ADC 模式 |
8 通道 10 位 ADC 模式 |
参考电压源 |
内部参考电压即电源电压 |
外部参考电压输入( PB7 )或内部参考电压 |
端口复用 |
ADC 输入通道和端口 PA[7:0] 、 PB7 复用 |
ADC 输入通道和端口 A[7:0] 复用 |
A/D 转换器结构图请参见 图 7.1 。

图 7 . 1 A/D 转换器结构图
SPMC65 系列单片机的 A/D 输入范围为 0~VDD/VRT ,而 VRT 最高不能超过 VDD 。
而 A/D 转换时每完成一位所花的时间为 TAD ,在 SPMC65 系列单片机中,进行 10 位 A/D 转换总共需要 14 个 TAD 。 A/D 转换时钟频率共有 8 种选择,可以通过 P_AD_Ctrl0 寄存器中的 ADCS[2:0] 位设定,为了保证转换结果的正确, A/D 转换的时钟频率 (1/TAD) 应低于 1.4MHZ ,以配合 A/D 转换硬件部分的要求。由此可算出 SPMC65 系列单片机的 A/D 转换速率最高为 100KHz 。
7.1.2 控制寄存器
A/D 转换相关寄存器有如下 7 个:
A/D 转换控制寄存器 |
P_AD_Ctrl0 P_AD_Ctrl1 P_AD_Ctrl2 |
A/D 转换结果存放寄存器 |
P_AD_DataHi P_AD_DataLo |
A/D 转换中断控制和中断标志寄存器 |
P_INT_Ctrl0 P_INT_Flag0 |
A/D 转换控制寄存器
( 1 ) P_AD_Ctrl0 ( $28,R/W )
作用: A/D 转换使能、外部或内部参考电压选择、 A/D 转换的时钟频率选择、启动 A/D 转换功能;该寄存器默认初值为 #00h 。
表 7 . 2 A/D 转换控制寄存器 0P_AD_Ctrl0 ( $28,R/W )
|
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
R |
ADEN |
ADVRT |
- |
- |
ADCS2 |
ADCS1 |
ADCS0 |
ADRDY |
W |
ADEN |
ADVRT |
- |
- |
ADCS2 |
ADCS1 |
ADCS0 |
STARTB |
Bit 7 ADEN : A/D 转换使能位
0 = 禁止 A/D 转换功能
1 = 允许 A/D 转换功能
Bit 6 ADVRT : A/D 转换参考电压选择位
1 = 选用外部参考电压( VRT ), PB7 做为外部参考电压输入
0 = 选用电源电压作为参考电压( VDD )
Bit [5:4] 保留
Bit [3:1] ADCS[2:0] : A/D 转换时钟的频率选择位。
注意: AD 转换的时钟的频率不能超过 1.4MHz ,以保证转换结果的正确性。
111= F SYS ÷ 256
110= F SYS ÷ 128
101= F SYS ÷ 64
100= F SYS ÷ 32
011= F SYS ÷ 16
010= F SYS ÷ 8
001= F SYS ÷ 4
000= F SYS ÷ 2
F SYS :系统时钟
Bit 0 ADRDY/STARTB : A/D 转换状态标志和启动位
读操作: A/D 转换的状态
1: A/D 转换结束
0: 正在进行数据转换
写操作: A/D 转换启动位
1: 无效
0: 启动 A/D 转换 ( 2 ) P_AD_Ctrl1 ( $29,R/W ) 作用:设置 I/O 端口作为 ADC 的输入通道,该寄存器默认初值为 #00h 。
表 7 . 3 A/D 转换控制寄存器 1 P_AD_Ctrl1 ( $29,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
PCFG7 |
PCFG6 |
PCFG5 |
PCFG4 |
PCFG3 |
PCFG2 |
PCFG1 |
PCFG0 |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
PCFG7:
1= 模拟输入口 (AN7)
0= 普通 I/O 端口 (PA7)
PCFG6:
1= 模拟输入口 (AN6)
0= 普通 I/O 端口 (PA6)
PCFG5:
1= 模拟输入口 (AN5)
0= 普通 I/O 端口 (PA5)
PCFG4:
1= 模拟输入口 (AN4)
0= 普通 I/O 端口 (PA4)
PCFG3:
1= 模拟输入口 (AN3)
0= 普通 I/O 端口 (PA3)
PCFG2:
1= 模拟输入口 (AN2)
0= 普通 I/O 端口 (PA2)
PCFG1:
1= 模拟输入口 (AN1)
0= 普通 I/O 端口 (PA1)
PCFG0:
1= 模拟输入口 (AN0)
0= 普通 I/O 端口 (PA0) ( 3 ) P_AD_Ctrl2 ( $2A,R/W )
作用:通道选择寄存器,选择需要进行 A/D 转换的通道,该寄存器默认初值为 #00h 。
表 7 . 4 A/D 转换控制寄存器 2 P_AD_Ctrl2 ( $2A,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
ADCE |
ADS3 |
ADS2 |
ADS1 |
ADS0 |
- |
- |
PCFG8 |
R/W |
R/W |
R/W |
R/W |
R/W |
- |
- |
R/W |
Bit 7 ADCE : A/D 转换电源控制位。当不进行 A/D 转换时,关闭 ADC 电源可以省电。
1= 打开 A/D 转换电源
0= 关闭 A/D 转换电源
Bit [6:3] ADS[3:2] : A/D 转换通道选择
0000= 选择通道 0 (AN0).
0001= 选择通道 1 (AN1)
0010= 选择通道 2 (AN2)
0011= 选择通道 3 (AN3)
0100= 选择通道 4 (AN4)
0101= 选择通道 5 (AN5)
0110= 选择通道 6 (AN6)
0111= 选择通道 7 (AN7)
1000= 选择通道 8 (AN8)
其它 = 保留
Bit [2:1] 保留 Bit 0 PCFG8 :
1 = 模拟输入口 (AN8/Avref)
0 = 数字输入口 (PB7) A/D 转换结果存放寄存器
( 1 ) P_AD_DataHi ( $2B,R/W )
作用: 10bit A/D 转换结果的高 8 位存放寄存器。
表 7 . 5 A/D 转换值高字节寄存器 P_AD_DataHi ( $2B,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
ADData9 |
ADData8 |
ADData7 |
ADData6 |
ADData5 |
ADData4 |
ADData3 |
ADData2 |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
( 2 ) P_AD_ DataLo ( $2C,R/W )
作用: 10bit A/D 转换结果的低 2 位存放寄存器。
表 7 . 6 A/D 转换值低字节寄存器 P_AD_DataLo ( $2C,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
ADData1 |
ADData0 |
- |
- |
- |
- |
- |
- |
R/W |
R/W |
- |
- |
- |
- |
- |
- |
A/D 转换中断相关寄存器
A/D 转换的中断相关的寄存器为中断控制寄存器 0 ( P_INT_Ctrl0 )和中断标志寄存器 0 ( P_INT_Flag0 ),当需要用中断的方式读取 A/D 转换的结果时,在 P_INT_Ctrl0 的 Bit7 位设置为 1 ,并且打开总中断即可。
( 1 ) P_INT_Flag0 ( $0C,R/W )
作用:中断标志寄存器,其中 Bit7 为 ADC 中断标志位。
表 7 . 7 中断标志寄存器 0 P_INT_Flag0 ( $0C,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
ADIF |
WDIF |
IRQ5IF/
CAP5IF |
IRQ4IF/
CAP4IF |
IRQ3IF |
IRQ2IF |
IRQ1IF/
CAP3IF |
IRQ0IF/
CAP2IF |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
( 2 ) P_INT_Ctrl0 ( $0D,R/W )
作用:中断控制寄存器,其中 Bit7 为 ADC 中断控制位。
表 7 . 8 中断控制寄存器 0 P_INT_Ctrl0 ( $0D,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
ADIE |
WDIE |
IRQ5E/
CAP5E |
IRQ4E/
CAP4E |
IRQ3IE |
IRQ2IE |
IRQ1IE/
CAP3IE |
IRQ0IE/
CAP2IE |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
7.3.1 A/D 转换器应用
A/D 转换应用的一般步骤如下:
·打开 A/D 转换电源
·允许 A/D 转换,选择 A/D 转换的时钟速率
·将 I/O 口定义为模拟口
·选择模拟电压输入口
·启动 A/D 转换
·A/D 转换结束后读取结果
【例 7-1 】: 初始化 A/D 转换,从 AN1 输入模拟信号,并启动 A/D 转换器。
set P_AD_Ctrl2,7 ; 打开 A/D 转换电源
lda #85h ; 允许 A/D 转换功能, A/D 转换的时钟速率
; 为 Fcpu ( 8M ) /8 = 1M
sta P_AD_Ctrl0
lda #FFh ; 定义 PA 口为模拟口
sta P_AD_Ctrl1
lda #88h ; 选择通道 1(AN1)
sta P_AD_Ctrl2
lda P_AD_Ctrl0
and #11111110B ; 启动转换
sta P_AD_Ctrl0
|
A/D 转换结束后读取结果
A/D 转换结束后,转换结果保存在寄存器 P_AD_DataHi 和 P_AD_DataLo 中,转换结果有两种判断方式:查询方式和中断方式。
( 1 )查询方式:当 A/D 转换结束, P_AD_Ctrl0 的 Bit0 会被置 1 ,因而,可以在程序中不断查询该标志位,当该标志位被置 1 ,表示 A/D 转换结束,将 转换结果存入结果寄存器便可以 读取结果。流程如下:

图 7 . 2 查询式 A/D 转换流程
【例 7-2 】: 查询式 A/D 转换 。
set P_AD_Ctrl2,7 ; 打开 A/D 转换电源
lda #85h ; 允许 ADC 转换功能
; ADC clock= Fsys(8MHz)/8= 1MHz
sta P_AD_Ctrl0
lda #FFh ; 定义 PA 口为模拟口
sta P_AD_Ctrl1
lda #88h ; 选择通道 1 ( AN1 )
sta P_AD_Ctrl2
lda P_AD_Ctrl0
and #11111110B ; 启动 A/D 转换
sta P_AD_Ctrl0
L_TestAdcL2:
lda P_AD_Ctrl0
and #00000001B ; 查询是否转换完毕 ?
beq L_TestAdcL2 ; 没有转换完毕继续等待
lda P_AD_DataHi
sta G_MWorkReg1 ; G_MworkReg1 为定义的变量
lda P_AD_DataLo
sta G_MWorkReg2 ; G_MworkReg2 为定义的变量
lda P_AD_Ctrl0
and #11111110B ; 重新开始启动 A/D 转换
sta P_AD_Ctrl0
jmp L_TestAdcL2
|
( 2 )中断方式:如果我们将寄存器 P_INT_Ctrl0 中 ADIE 位置 1 ,即打开 A/D 中断,则当 A/D 转换结束, P_AD_Ctrl0 的 bit0 和 P_AD_Flag0 的 bit7 都会被置 1 ,程序会自动产生中断,此时便可以将转换结果读取出来。中断方式不像查询方式需要不断的查询等待,提高 CPU 效率。具体流程如下:

图 7 . 3 中断式 A/D 转换流程
【 例 7 -3 】: 中断式 A/D 转换
set P_AD_Ctrl2,7 ; 打开 A/D 转换电源
sta P_AD_Ctrl2
lda #85h ; 允许 ADC 转换功能 ADC clock= Fsys(8MHz)/8= 1MHz
sta P_AD_Ctrl0
lda #FFh ; 定义 PA 口为模拟口
sta P_AD_Ctrl1
lda #88h ; 选择通道 1 ( AN1 )
sta P_AD_Ctrl2
lda #FFh
sta P_INT_Flag0 ; 清中断请求标志位
lda #10000000B ; 使能 A/D 中断
sta P_INT_Ctrl0
cli ; 使能中断
lda P_AD_Ctrl0
and #11111110B ; 启动 A/D 转换
sta P_AD_Ctrl0
L_Loop:
jmp L_Loop
V_IRQ: ; 中断服务程序
pha
txa
pha
?L_AD:
lda P_INT_Flag0
and #80h ; 是否发生 A/D 中断?
beq ?L_IRQ_Exit ; 没有产生 A/D 中断继续等待
lda P_AD_DataHi
sta G_MWorkReg1
lda P_AD_DataLo
sta G_MWorkReg2
set P_INT_Flag0,7 ; 清中断标志
lda P_AD_Ctrl0
and #11111110B ; 重新开始启动 A/D 转换
sta P_AD_Ctrl0
?L_IRQ_Exit:
pla
tax
pla
rti
V_NMI:
rti |
7.2 DAC 原理及应用
7.2.1 D/A 转换器工作原理
SPMC65 系列单片机内置了一个 10 位的数模转换器 (DAC) ,输出的转换电流最大为 3.3mA ,转换完成时间约 80 微秒。当数据写入 DAC 数据寄存器 P_DA_DataHi 和 P_DA_DataLo 中时, DAC 模块自动将其转换为相应的的模拟电流,通过 I/O 端口 PE6 管脚输出( SPMC65 系列单片机视具体型号提供 DAC 功能,即只有引出 PE6 端口的芯片才提供)。向 P_DA_DataHi 寄存器写入 “11111111B” ,向 P_DA_DataLo 寄存器写入 “11000000B” (其中 P_DA_DataHi 寄存器存放数字量的高 8 位, P_DA_DataLo 寄存器存放数字量的低 2 位), PE6 输出最大转换电流 3.3mA 。
7.2.2 控制寄存器
D/A 转换相关寄存器有如下 3 个:
D/A 转换设置寄存器 |
P_DA_Ctrl |
D/A 转换数据存放寄存器 |
P_DA_DataHi P_DA_DataLo |
1 . P_DA_Ctrl ( $55,R/W )
作用:控制 D/A 转换使能以及启动 DAC 功能,该寄存器默认初值为 #00h 。
表 7 . 9 DAC 控制寄存器 P_DA_Ctrl ( $55,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
DAEN |
- |
- |
- |
- |
- |
- |
- |
R/W |
- |
- |
- |
- |
- |
- |
- |
Bit 7 DAEN : D/A 转换使能位
1 = 使能 DAC 功能并启动 DAC 转换
0 = 禁止 DAC 功能并停止 DAC 转换
Bit [6:0] 保留
2 . P_DA_ DataHi ( $57,R/W )
作用: 10bit D/A 转换数据的高 8 位存放寄存器,该寄存器默认初值为 #00h 。
表 7 . 10 D/A 转换值高字节寄存器 P_DA_DataHi ( $57,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
DAData9 |
DAData8 |
DAData7 |
DAData6 |
DAData5 |
DAData4 |
DAData3 |
DAData2 |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
Bit [7:0] DAData[9:2]: 10 位 D/A 转换数据的高 8 位数据。
3 . P_DA_ DataLo ( $56,R/W )
作用: 10bit D/A 转换数据的低 2 位存放寄存器,该寄存器默认初值为 #00h 。
表 7 . 11 D/A 转换值高字节寄存器 P_DA_DataLo ( $56,R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
DAData1 |
DAData0 |
- |
- |
- |
- |
- |
- |
R/W |
R/W |
- |
- |
- |
- |
- |
- |
Bit [7:6] DAData[1:0]: 10 位 D/A 转换数据的低 2 位数据, bit7 位和 bit6 位有效。
Bit [5:0] 保留
7.2.3 D/A 转换器应用
D/A 转换一般步骤如下:
进行 D/A 转换时,需要将寄存器 P_DA_Ctrl 中的 DAEN 位置 1 ,便开始进行转换, PE6 端口会输出转换电流。 DAC 数据寄存器包括两个字节:寄存器 P_DA_DataHi 存储转换数据的高 8 位,寄存器 P_DA_DataLo 存储转换数据的低 2 位。 DAC 转换完成需要约 80 微秒,用户必须等待本次转换完成才能进行下一次转换,以保证 D/A 转换的正确性。
【例 7 -4 】: D/A 转换
lda #C0h ; 将需要转换数据的低 2 位数值送入寄存器 P_DA_DataLo 中
sta P_DA_DataLo
lda #FFh ; 将需要转换数据的高 8 位数值送入寄存器 P_DA_DataHi 中
sta P_DA_DataHi
set P_DA_Ctrl,7 ; 使能 DAC 功能并启动 DAC 转换 |
7.3 电压比较器原理及应用
7.3.1 电压比较器工作原理 SPMC65 系列单片机内置两个电压比较器(也简称比较器)( SPMC65 系列单片机视具体型号提供电压比较器功能,即只有引出 PE[2:5] 端口的芯片才提供),这两个电压比较器相互独立,其电压输入端 CMPIN1/CMPIN0 与普通 I/O 端口复用( PE5/PE3 ),参考电压可选外部参考电压(来自 PE4/PE2 管脚上的电压)或选择内部参考电压 (1.2V) ,具体请参见 表 7.12 。
表 7 . 12 电压比较器表
电压比较器 |
电压比较器 1 ( Comparator1 ) |
电压比较器 0 ( Comparator0 ) |
比较电压输入端口 |
与 PE5 复用 |
与 PE3 复用 |
参考电压源选择 |
可选外部参考电压(来自 PE4 端口)
或内部参考电压( 1.2V ) |
可选外部参考电压(来自 PE2 端口)
或内部参考电压( 1.2V ) |
其中输入的比较电压范围为 0.2V~ (VDD-0.2) V 。 图 7 . 4 为电压比较器结构图。

图 7.4 电压比较器结构图
7.3.2 控制寄存器
电压比较器相关寄存器有如下 2 个:
电压比较器设置寄存器 |
P_CMP_Ctrl |
中断标志寄存器 2 |
P_INT_Flag2 |
1 .电压比较器控制寄存器 P_CMP_Ctrl ( $2E , R/W )
电压比较器控制寄存器 P_CMP_Ctrl ( $2E ) ,用来对电压比较器进行设置。比较器 1 和比较器 0 的电压比较模块相互独立,具有各自的控制位: Bit7~Bit4 分配给比较器 1 使用, Bit3~Bit0 分配给比较器 0 使用; P_CMP_Ctrl 默认初值为 #00h 。具体内容如下:
表 7 . 13 比较器控制寄存器 P_CMP_Ctrl ( $2E , R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
CMP1EN |
CMP1RS |
CMP1LOG |
CMP1OUT |
CMP0EN |
CMP0RS |
CMP0LOG |
CMP0OUT |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
Bit 7 CMP1EN: 比较器 1 使能位
1 = 使能比较器 1
0 = 禁止比较器 1
Bit 6 CMP1RS: 比较器 1 参考电压源选择位
1 = 选择外部参考电压 (PE4)
0 = 选择内部参考电压 (1.2v)
Bit 5 CMP1LOG: 比较器 1 的事件逻辑选择位
1 = 比较器 1 输入比较电压 > 比较器 1 参考电压, P_INT_Ctrl2 中 CMP1IE 位置 1
0 = 比较器 1 输入比较电压 < 比较器 1 参考电压, P_INT_Ctrl2 中 CMP1IE 位置 1
Bit 4 CMP1OUT: 比较器 1 结果指示位
1 = 比较器 1 输入比较电压 > 比较器 1 参考电压
0 = 比较器 1 输入比较电压 < 比较器 1 参考电压
Bit 3 CMP0EN: 比较器 0 使能位 .
1 = 使能比较器 0
0 = 禁止比较器 0
Bit 2 CMP0RS: 比较器 0 参考电压源选择位 .
1 = 外部参考电压 (PE2)
0 = 内部参考电压 (1.2v)
Bit 1 CMP0LOG: 比较器 0 的事件逻辑选择位
1 = 比较器 0 输入比较电压 > 比较器 0 参考电压, P_INT_Ctrl2 中 CMP0IE 位置 1
0 = 比较器 0 输入比较电压 < 比较器 0 参考电压, P_INT_Ctrl2 中 CMP0IE 位置 1
Bit 0 CMP0OUT: 比较器 1 结果指示位
1 = 比较器 0 输入比较电压 > 比较器 0 参考电压
0 = 比较器 0 输入比较电压 < 比较器 0 参考电压
2 .中断标志寄存器 2 P_INT_Flag2 ( $26 , R/W )
表 7 . 14 中断标志寄存器 P_INT_Flag2 ( $27 , R/W )
Bit7 |
Bit6 |
Bit5 |
Bit4 |
Bit3 |
Bit2 |
Bit1 |
Bit0 |
- |
- |
ITVALIF |
IICIF |
UARTIF |
SPIIF |
CMP1IF |
CMP0IF |
- |
- |
R/W |
R |
R |
R |
R/W |
R/W |
Bit 1 CMP1IF: 比较器 1 中断标志
读操作:
0 = 中断没有发生
1 = 中断发生
写操作:
0 = 无效
1 = 清比较器 1 中断标志
Bit 0 CMP0IF: 比较器 0 中断标志
读操作:
0 = 中断没有发生
1 = 中断发生
写操作:
0 = 无效
1 = 清比较器 1 中断标志
7.3.3 比较器应用
电压比较器设置的一般步骤:

图 7 . 5 比较器设置一般流程
电压比较器的比较结果的读取可以采用查询式:
事件逻辑选择位设置后,当相应的逻辑事件成立时,寄存器 P_INT_Flag2 的 bit1/bit0 位会被置 1 ,所以查询该位状态即可。比如当将 COM0EN 位和 CMP0LOG 位置 1 ,当比较器 0 的输入电压 > 比较器 0 的参考电压时,寄存器 P_INT_Flag2 的 bit0 便会被置 1 。
【例 7-5 】 查询方式检测 PE3 输入电压大于 PE2 的电压
lda #00001110B ; 选择比较器为外部参考电压输入( PE4 )
; 设置比较器 0 当输入电压大于参考电压时, CMP0IE 位置 1
; 启动比较器 0
sta P_CMP_Ctrl
lda #ffh ; 清中断标志寄存器 P_INT_ Flag2
sta P_INT_ Flag2
LOOP:
lda P_INT_ Flag2 ; 查询 P_INT_ Flag2 中 CMP0IE 位是否为 1
and #01h
equ LOOP
lda P_CMP_Ctrl ; 可以读 P_CMP_Ctrl 中 CMP0OUT 位确认
sta G_MWorkReg1 ; G_MworkReg1 为定义的变量 |
|