SBUF = *pTI = 0
这里的SBUF与TI都没有定义,应该不在这个函数里。猜测,SBUF,是发送缓冲区。TI是发送标志位。当发送缓冲区有字符时,等待发送标志位为0。毁滑也即这个标志位为0的时候,这个字符已经发送纤毕腊出去了。然后,p++,SBUF=*p,再发送下一个字符。
全部的循环,直到遇到字符串的结束标志'\0'。也即最后一个字符之后的字数芹符串结束标志,这个发送函数也就执行完了。
由于没有电路,只能猜一下,大概是个智能传感器滑含,通过MAX1240模拟量入口测量某个数据,转换成数字量(2字节)后通过单片机串口以9600波特发送出去。ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:CLR C
MOV SP#60H设置堆栈
MOV SCON,#50H;串口方式判则1,允许接收
MOV PCON,#80H;SMOD=1
MOV TCON,#0
MOV TMOD,#26HT1定时方式2,T0计数方式2
MOV TL1,#0FAH波特率9600
MOV TH1,#0FAH
SETB TR1
SETB EA
CLR TI
MAX1240:MOV A,#00H;MAX1240是12位串行接口ADC,8脚。
MOV R7,#08H;8位
CLR P1.0;应该是接了MAX1240的/CS
CLR P1.1;应该是接了MAX1240的SCLK
NOP
JNB P1.2,$;应该是接了MAX1240的DOUT,此时等待接收数据
SETB P1.0
MSB: CLR P1.0;以下程序段MSB开始接收第一个字节保存在R3
NOP
SETB P1.0
MOV C,P1.2
MOV P1.3,C
RLC A
DJNZ R7,MSB
MOV R3,A
MOV R7,#08H
MOV A,#00H
LSB: CLR P1.0以下程序段LSB开始接收第二个字节保存在R2
NOP
SETB P1.0
MOV C,P1.2
RLC A
DJNZ R7,LSB
MOV R2,A
NOP
SETB P1.1
MOV 41H,R3;收到的测量模拟量转换值转存到41H,40H
MOV 40H,R2
LOOP:MOV A,41H;两字节数据41H40H通过串口发送出去
MOV SBUF,A
ACALL WAIT
ACALL Delay
MOV A,40H这信冲笑句你没有,似乎是少写了
MOV SBUF,A
ACALL WAIT
AJMP MAX1240
WAIT:JNB T1,$
CLR T1
RET
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)