8031单片机串行口应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
END
/*NET 51实验15:双机通信实验_接收*/
#include <reg51.h>
#include <ABSACC.H>
#include <8279.h>
void main(void)
{
unsigned char dispt;
SP=0x60;
buffer[0]=0x08;
buffer[1]=0x00;
六、实验步骤
1、用8芯排线将8279区(a-h)连接到数码管显示区的DU(a-h),JB53(BIT0-BIT7)连接到数码管显示区的BIT0-BIT7。用4芯排线将8279区的JB52(H1-H7)连到键盘区的KH(H4-H1)上;JB54(L4-L1)连到键盘区的KL(L4-L1)上。8279区8279CS2连到系统译码的Y6上,8279CLK连接到固定脉冲的1MHz。
MOV @R0,A
INC R0
MOV A,#0H
MOV @R0,A
INC R0
MOV A,#3H
MOV @R0,A
INC R0
MOV A,#01H
MOV @R0,A
INC R0
MOV A,#12H
MOV @R0,A
INC R0
MOV A,#12H
MOV @R0,A
INC R0
MOV A,#12H
MOV @R0,A
MOV A,#12H
MOV @R0,A
INC R0
MOV A,#12H
MOV @R0,A
INC R0
MOV A,#1H
MOV @R0,A
MOVSCON,#50H;串口方式1
MOVTMOD,#20H;T1方式1
MOVTL1,#0E6H;波特率1200的常数,11.0592M晶振
MOVTH1,#0E6H
MOV A,#90H
MOVX @DPTR,A ;设置从左边开始写入数据
DISP1: MOVX A,@DPTR
JB ACC.7,DISP1 ;读8279工作是否正常
MOV R0,#78H ;显示缓冲首址
MOV R1,#08H
DISP2: MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查字型
2、1号机的P3.0和P3.1分别接到2号机的P3.1和P3.0上,并且将二台的GND连接在一起。
3、先在2号机上调试运行程序test13中RXD.ASM数码管上显示“8031-2”。
4、然后在1号机上调试运行程序test13中TXD.ASM,数码管上显示“8031-1”。
5、在1号机的键盘上输入数字,会在2号机的显示器上显示。
INC R0
MOV A,#02H
MOV @R0,A
MOVSCON,#50H;串口方式1
MOVTMOD,#20H;T1方式1
MOVTL1,#0E8H;波特率1200的常数
MOVTH1,#0E8H
SETBTR1;开中断
CLRET1
CLR ES
MOV 30H,#78H
LCALL DISP
WAIT: JBC RI, DIS_REC
DB 08CH,0C1H,0BFH,91H,89H,0C7H,0FFH,07FH ; P(10),U(11),-(12),Y(13),H(14),L(15),关(16) ,.(17)
CLEAR8279:MOV DPTR,#C8279 ;清显示子程序
MOV A,#0D0H
MOVX @DPTR,A
RET
JMP WAIT
DIS_REC: MOV A,SBUF
LCALL DATAKEY
LCALL DISP
AJMP WAIT
DATAKEY:
MOV R1,30H
MOV @R1,A
MOV A,30H
CJNE A,#7FH,LOOP
MOV 30H,#78H
JMP DATEEND
LOOP: INC 30H
DATEEND : RET
MOV DPTR,#D8279
cpl a
MOVX @DPTR,A ;送字型到8279显示
INC R0
DJNZ R1,DISP2
RET
;字型代码
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;0,1,2,3,4,5,6,7
DB 80H,90H,88H,83H,0C6H,0A1H,86H,08EH ;8,9,A,B,C,D,E,F
DISP: ;显示子程序,缓冲区为78H-7fH
C8279 EQU 0E001H ;
D8279 EQU 0E000H ;
MOV DPTR,#C8279
MOV A,#0H
MOVX @DPTR,A ;写8279方式字
MOV A,#2aH
MOVX @DPTR,A ;写分频系数
MOV A,#0D0H
MOVX @DPTR,A ;清显示
DB 08CH,0C1H,0BFH,91H,89H,0C7H,0FFH,07FH ; P(10),U(11),-(12),Y(13),H(14),L(15),关(16) ,.(17),R(18)
END
;系统晶振是11.059 MHz
FLAG BIT 00H
ORG0000H
AJMP START
ORG 0030H
DISP: ;显示子程序,缓冲区为78H-7fH
C8279 EQU 0E001H ;
D8279 EQU 0E000H ;
MOV DPTR,#C8279
MOV A,#0H
MOVX @DPTR,A ;写8279方式字
MOV A,#2aH
MOVX @DPTR,A ;写分频系数
MOV A,#0D0H
MOVX @DPTR,A ;清显示
buffer[1]=0x00;
buffer[2]=0x03;
buffer[3]=0x01;
buffer[4]=0x12;
buffer[5]=0x12;
buffer[6]=0x12;
buffer[7]=0x02;
SCON=0x50;//串口方式1
TMOD=0x20; //T1方式1
TL1=0xFD;//波特率9600的常数
MOV DPTR,#D8279
cpl a
MOVX @DPTR,A ;送字型到8279显示
INC R0
DJNZ R1,DISP2
RET
;字型代码
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;0,1,2,3,4,5,6,7
DB 80H,90H,88H,83H,0C6H,0A1H,86H,08EH ;8,9,A,B,C,D,E,F
示。
三、实验说明
1、实验时需将1号机8031串行接收信号线P3.0(RXD)连到2号机8031串行发送信号线P3.1(TXD),1号机的P3.1(TXD)连到2号机的P3.0(RXD)。
2、两台实验机必须共地。
一、实验接线图
键盘显示部分原理参考键盘控制器8279应用实验
图(13-1)
五、实验程序框图
TH1=0xFD;
TR1=1;//开中断
ET1=0;
ES=0;
init8279();
disp8279();
delay(10);
disp8279();
while(1)
{
keyv=getkey();
buffer[7]=keyv;
while(TI!=1)
{SBUF=keyv;
delay(10);}
TI=0;
SETBTR1;开中断
CLRET1
CLR ES
MOV 30H,#78H
READIKEY:lcall disp
LCALLGETKEY;读键盘
CJNE A,#10H,SS0
SS0: JNC READIKEY
MOVSBUF,A;串口输出键盘输入的值
NOP
SS:JBCTI,READIKEY;是否发送完毕
SJMPSS
GETKEY: MOV DPTR,#C8279
MOVX A,@DPTR
ANL A,#07H
CJNE A,#0H,GET1
JMP GETKEY
GET1: MOV DPTR,#D8279
MOVX A,@DPTR
MOV B,A
MOV R2,#00H
MOV DPTR,#KEYDATA
KEY1: MOV A,#00H
else dispt++;
RI=0;
}
}
}
/*51实验17: 8031串行口应用(与PC机通信实验)*/
#include <reg51.h>
#include <ABSACC.H>
#include <8279.h>
void main(void)
{unsigned char keyv;
SP=0x60;
buffer[0]=0x08;
TH1=0xFD;
TR1=1;//开中断
ET1=0;
ES=0;
dispt=0x00;
init8279();
disp8279();
delay(10);
disp8279();
while(1)
{
disp8279();
if (RI==1)
{
buffer[dispt]=SBUF;
if (dispt==7) dispt=0x00;
disp8279();
delay(100);
}
}
MOV A,#90H
MOVX @DPTR,A ;设置从左边开始写入数据
DISP1: MOVX A,@DPTR
JB ACC.7,DISP1 ;读8279工作是否正常
MOV R0,#78H ;显示缓冲首址
MOV R1,#08H
DISP2: MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查字型
buffer[2]=0x03;
buffer[3]=0x01;
buffer[4]Biblioteka Baidu0x12;
buffer[5]=0x12;
buffer[6]=0x12;
buffer[7]=0x01;
SCON=0x50;//串口方式1
TMOD=0x20; //T1方式1
//PCON=0x80;
TL1=0xFD;//波特率9600的常数
6、也可以通过RS232接口进行双机通信。
注意:如果只有一个串口,则先关闭上位机的调试软件,不复位单片机,然后再打开串口调试软件。
;系统晶振是11.059 MHz
FLAG BIT 00H
ORG0000H
AJMP START
ORG 0030H
START:
MOVSP,#60H
mov A,#08H
MOV R0,#78H
8031
一、实验目的
1、掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。
2、了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。
3、掌握双机通信的原理和方法。
二、实验内容
1、利用8031单片机串行口,实现双机通信。
2、本实验实现以下功能:1号实验机键盘上键入的数字在2号实验机的数码管上显
START:
MOVSP,#60H
mov A,#08H
MOV R0,#78H
MOV @R0,A
INC R0
MOV A,#00H
MOV @R0,A
INC R0
MOV A,#3H
MOV @R0,A
INC R0
MOV A,#01H
MOV @R0,A
INC R0
MOV A,#12H
MOV @R0,A
INC R0
MOVC A,@A+DPTR
CJNE A,B,KEY2
JMP KEY3
KEY2: INC DPTR
INC R2
JMP KEY1
KEY3:
MOV A,R2
MOV 31H,A
KEY4: RET
KEYDATA: DB 23H,2BH,33H,3BH , 22H,2AH,32H,3AH
DB 21H,29H,31H,39H,20H,28H,30H,38H
相关文档
最新文档