关于51单片机串口通信问题

DISP1:clrEAPUSHACCPUSHDPHPUSHDPLpd1:JBCRI,DISP1_1LJMPpd1DISP1_1:MOVA,SBUFMOVDPTR,#TAB... DISP1:
clr EA
PUSH ACC
PUSH DPH
PUSH DPL
pd1:
JBC RI,DISP1_1
LJMP pd1
DISP1_1:
MOV A,SBUF
MOV DPTR,#TAB1
MOVC A,@A+DPTR
cjne a,#0f9h,pd2

MOV A,50H ;50H中存放采样值
MOV B,#100
DIV AB
ORL A,#00110000B ;转换成ASCII码
MOV DIS_2,a
mov a,B
MOV B,#10
DIV AB
ORL A,#00110000B ;转换成ASCII码
MOV DIS_3,a

MOV A,b
ORL A,#00110000B ;转换成ASCII码
mov DIS_4,a

CLR TI
MOV A,DIS_2
MOV SBUF,A
JNB TI,$ ;发送给PC,通过串口调试助手显示整数第一位

CLR TI
MOV A,DIS_3
MOV SBUF,A
JNB TI,$ ;发送给PC,通过串口调试助手显示小数第一位

CLR TI
MOV A,DIS_4
MOV SBUF,A
JNB TI,$ ;发送给PC,通过串口调试助手显示小数第二位

pd2:

POP DPL
POP DPH
POP ACC

MOV SCON,#50H ;设置成串口1方式
SETB EA
RET

TAB1:DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

想知道这段程序中的
DISP1:
clr EA
PUSH ACC
PUSH DPH
PUSH DPL
pd1:
JBC RI,DISP1_1
LJMP pd1
DISP1_1:
MOV A,SBUF
MOV DPTR,#TAB1
MOVC A,@A+DPTR
cjne a,#0f9h,pd2
还有最下面那个表TAB1是什么意思?实现了什么功能?
展开
 我来答
zhangjg198
2010-07-08 · TA获得超过245个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:151万
展开全部
这个子程序是串口中断接收服务子程序
DISP1:
clr EA ;关中断
PUSH ACC ;入栈保护
PUSH DPH ;入栈保护
PUSH DPL ;入栈保护
pd1:
JBC RI,DISP1_1 ;判断是否接收完毕一个字节,没有完就等待
LJMP pd1
DISP1_1:
MOV A,SBUF ;将接收缓冲区的值复制出来
MOV DPTR,#TAB1 ;取查表首地址
MOVC A,@A+DPTR ;根据接收的数据值做偏移量取值,也就是说接收的数是十的话,就取TAB1中的第十个数据给累加器。
cjne a,#0f9h,pd2 ;比较从TAB1表中取的数是否为#0F9H,如果是的话继续执行,将采样值转换成ASCII码,并通过串口发出去,不是的话中断返回。

你这个程序是从一个大程序截取的一段,单纯看这一段的话没有实际意义
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式