标题:
51单片机汇编程序错误
[打印本页]
作者:
lyonkon
时间:
2024-3-8 21:05
标题:
51单片机汇编程序错误
这个程序是为了测试51用寄存器传递数据。流程是给r0-----r7 两个页面赋值,然后串口发送页面1 r0---r7的值。总是跑不起来,有的时候跑飞,有的时候死循环。以上程序 在子程序 SYSTEMSET: 的ret位置不返回。
无标题.png
(87.8 KB, 下载次数: 34)
下载附件
2024-3-8 21:04 上传
单片机汇编语言源程序如下:
AUXR EQU 08EH //辅助寄存器
T2H DATA 0D6H //定时器2高8位
T2L DATA 0D7H //定时器2低8位
P_SW1 EQU 0A2H //外设功能切换寄存器1
S1_S0 EQU 40H //P_SW1.6
S1_S1 EQU 80H //P_SW1.7
BUSY BIT 20H.0 //忙标志位
ORG 0000H
LJMP MAIN
ORG 0030H
//主程序 **************************************
MAIN:
LCALL SYSTEMSET
LCALL UART_2
D1:
LCALL DDATA
LJMP D1
RET
//主程序 **************************************
UART_2:
PUSH ACC
// PUSH PSW
CLR BUSY ;
// CLR EA ;
MOV SP,#3FH ;
ANL P_SW1,#03FH ;S1_S0=0 S1_S1=0
MOV SCON,#50H ;8位可变波特率
ORL AUXR,#04H ;定时器2时钟为Fosc,即1T
ORL AUXR,#01H ;串口1选择定时器2为波特率发生器 9600
MOV T2L,#0E0H ;设定定时初值 9600
MOV T2H,#0FEH ;设定定时初值
ORL AUXR,#10H ;启动定时器2
// SETB ES; //使能串口中断
// SETB EA;
// POP PSW
POP ACC
RET
SYSTEMSET:
PUSH ACC
MOV 00H,#0X01
MOV 01H,#0X02
MOV 02H,#0X03
MOV 03H,#0X04
MOV 04H,#0X05 ;寄存器 R0--R7 0页面
MOV 05H,#0X06
MOV 06H,#0X07
MOV 07H,#0X08
MOV 08H,#0X09
MOV 09H,#0X0A
MOV 0AH,#0X0B
MOV 0BH,#0X0C ;寄存器 R0--R7 1页面
MOV 0CH,#0X0D
MOV 0DH,#0X0E
MOV 0EH,#0X0F
MOV 0FH,#0X11
POP ACC
RET
DDATA:
PUSH ACC
PUSH PSW
SETB PSW.3 ;将r0---r7 1页面 8个值发送串口
SETB BUSY;
MOV A,R0
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R1
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R2
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R3
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R4
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R5
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R6
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
SETB BUSY;
MOV A,R7
MOV SBUF,A; //写数据到UART数据寄存器
JNB TI,$;
CLR TI;
POP PSW
POP ACC
RET;
end
复制代码
作者:
Hephaestus
时间:
2024-3-9 00:32
Register窗口被你点亮的sp值已经说明了问题。
作者:
mtdzok
时间:
2024-3-9 13:42
这段子程序把堆栈数据都修改了,怎么返回。
作者:
lyonkon
时间:
2024-3-9 17:11
已解决,没考虑到PC会自己找地方压栈。提前设置栈问题解决。
ORG 0000H
LJMP MAIN
ORG 0030H
MOV SP,#3FH
。感谢楼上二位。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1