串口通信的一个子程序,求注释?

串口通信的一个子程序,求注释?,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12221817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存