接口2013上复习提纲(10本)17周的星期三

《接口与通信》期末复习
QQ:465729206
============================================
一、考试题型
1.填空题(20分)
2.分析题(30分)
3.编程题(30分)
4.综合题(20分)

二、考点分析
1.基本知识
接口的概念、分类、构成、基本功能,主机与外设之间的数据传递方式(五种),串行通信的RS-232协议帧格式、关键问题、性能计算(参考例题),中断过程、条件。
例:RS-232通信,数据传输率为9600bps,帧格式为8位数据位、奇校验、1位停止位,发送1000个字节需要多少时间?有效数据传输率为多少?
解:一个帧的长度=1+8+1+1=11(b)
发送时间=1000*11/9600=...(s)
有效数据传输率=1000*8/发送时间=...(bps)
2.MCS-51接口技术
内部资源(存储器、定时/计数器、并行接口、串行接口、中断系统,如SFR、存储容量、位地址、中断向量、中断优先级等),常用指令(如MOV、MOVX、MOVC、DJNZ、CJNE、ADD、INC等),寻址方式。
3.PC接口技术
常用接口芯片(8255、8250、8253、8259),中断类型号,中断向量,工作方式(8255、8253)
4.程序设计
(1)MCS-51简单汇编程序:参考求和、求极值、查找、访存程序。(循环、指针,参考例题)
例:用MCS-51汇编语言求内部RAM中30H开始的50个字节之和,保存于20H、21H单元。
ORG 0000H
LJMP START
ORG 0100H
START: MOV R0, #30H ;指针
MOV R2, #50 ;循环次数
MOV 20H, #0 ;和清0
MOV 21H, #0
NEXT: MOV A, @R0 ;取数
ADD A, 21H ;求和
JNC X1
INC 20H ;高8位+1
X1: MOV 21H, A ;保存低8位
INC R0 ;调节指针
DJNZ R2, NEXT
WAIT: SJMP WAIT
END
注:内/外部存储器(RAM或ROM),求和/极值/查找/统计/传输,指令MOV/MOVX/MOVC,指针R0/R1/DPTR/A+DPTR
(2)MCS-51简单C程序:要求同上。(参考例题)
例题:同上要求。
#include <reg51.h>
#include <absacc.h>
main()
{unsigned char i, p=0x30;
unsigned int s=0;
for(i=0; i<50; i++) s=s+DBYTE[p++];
DBYTE[0x20]=s>>8;
DBYTE[0x21]=s;
}
访问存储器DBYTE/XBYTE/CBYTE
(3)8255初始化程序:PC汇编语言(参考例题)
例:已知某PC机8255的基地址为1230H,试用汇编语言初始化8255,设置PA口为方式2,PB口为方式1输出,PC3=1,PC6=0。
MOV DX, 1233H
MOV AL, 11000100B ;方式控制字
OUT DX, AL
MOV AL, 00000111B ;置位/复位控制字PC3=1
OUT DX, AL
MOV AL, 00001100B ;置位/复位控制字PC6=0
OUT DX, AL
(4)MCS-51双机串行通信程序:C语言,计数初值计算、串口和T1初始化,查询方式和中断方式,参考例题(两种方式的初始化、发送、接收子程序)。
A.初始化
T1,定时,方式2(8位重复)
TMOD=00100000B=20H
T1周期=(256-计数初值)*(12/fosc)
波特率=T1频率/16=fosc/[12*16*(256-计数初值)]
计数初值=256-fosc/[波特率*12*16] (

SMOD=1)
如:fosc=11.0592MHz,波特率=9600bps

则计数初值=256-6=250
void init()
{
TMOD=0x20; //T1定时方式2
PCON=0x80; //SMOD=1
TH1=TL1=250; //9600bps*
TR1=1;//启动T1
SCON=0x50; //方式1,双机,允许接收
ES=EA=1;//允许串口中断*
}
B.发送子程序
void send(unsigned char x) //查询方式
{
while(TI==0); //等待发送空
TI=0;
SBUF=x;
}
void send( ) interrupt 4 //中断方式
{
if(TI==1){
TI=0;
SBUF=...;}
}
C.接收子程序
unsigned char receive() //查询方式
{
while(RI==0); //等待接收就绪
RI=0;
return SBUF;
}
void receive() interrupt 4 //中断方式
{unsigned char x;
if(RI==1){
RI=0;
x=SBUF;
...}
}
D.主程序
#include <reg51.h>
#include <absacc.h>
//定义全局变量和子函数
void main()
{
init(); //初始化
//发送或接收处理
while(1);
}


相关主题
相关文档
最新文档