用单片机STC12C5A60S2的串口2发送00H、01H、23H、45H三个数,用汇编语言怎么编?

如题所述

AUXR EQU 8EH ;辅助寄存器
S2CON EQU 9AH ;串口2控制寄存器
S2BUF EQU 9BH ;串口2数据缓冲区
BRT EQU 9CH ;波特率寄存器

S2RI EQU 01H ;S2CON.0
S2TI EQU 02H ;S2CON.1
;------------------------------------------
ORG 0000H
LJMP START
;------------------------------------------
ORG 0050H
START:
MOV S2CON,#50H ;8位数据,可变波特率
MOV BRT,#0FAH ;[email protected]
ORL AUXR,#14H ;独立波特率发生器时钟为Fosc,即1T
MOV R2,#4
MOV DPTR,#TABLE
LOOP:
CLR A
MOVC A,@A+DPTR
MOV S2BUF,A
LP1:
MOV A,S2SCON
JNB ACC.1,LP1
INC DPTR
DJNZ R2,LP1
SJMP $

TABLE: DB 00H,01H,23H,45H
END追问

感谢你的回答。还有三个问题:1.开头的寄存器地址声明是把所有需要用到的寄存器和寄存器位声明一下吗?2.S2RI和S2TI为什么是01H 02H?3.LP1中的'MOV A,S@SCON JNB ACC.1,LP1'能够写成'JNB S2TI,$'吗?
我是初学者,问题比较低级,见谅哈~

追答

哦,这里不行,因为这个不能位操作,这里定义出来是为了做移位处理,不过没有用而已。
开头当然是将用到的寄存器定义一遍,不然就不能用了。默认是没有这些寄存器的。

追问

应该是DJNZ R2,LOOP吧,要是不断重复发送这三个数据程序该怎样写呢

追答

对,你说的是对的,应该转移到LOOP,我笔误。

温馨提示:答案为网友推荐,仅供参考