中北大学单片机复习资料
2.利用单片机串口扩展
3.利用可编程并口扩展
4.存储器扩展【习题6-10】
设以8051为主机,外部扩展EEPROM28128一片、8255A一片和6264一片,利用译码法实现,画出设计电路图,并写出对应的地址空间。
3.
【注】上面是书上A/D转换连接图ADC0809【A/D转换都是这个连法】
#include <absacc.h>
二、
1.异步串行数据通信的帧格式由启动位,数据位,奇偶校验位和停止位组成
2.8051系列单片机中,片内数据存储区一共分为3个区,这3个区分别为:寄存器区;位寻址区;数据缓冲区。
3.通过堆栈操作实现子程序调用,首先就要把PC的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到PC。
4.在MCS-51中,PC和DPTR都用于提供地址,但PC是为了访问程序存储器提供地址,而DPTR是为访问数据存储器提供地址。
5.指令格式是由(操作码)和(操作数)所组成,也可能仅由(操作码)组成。
6.计算机三总线分别为:(数据)总线;(地址)总线;(控制)总线。
7.8051内部有(4)个并行端口,P0口直接作为I/O端口使用时,必须外接(上位电阻);并行端口作输入端口时,必须先执行(输出高电平)指令,然后执行输入指令,才能正确的读入端口的状态。
delay();
P1=ADC0809;//单片机哪个端口输出,就写哪个端口
}
}
4.
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
DelayMS(150);
}
}
}
TMOD=0x20; //定时器1工作在方式2
TH1=0x0F4;
TL1=0x0F4;
TR1=1;
}
5.
矩阵式键盘的工作原理
矩阵式按键的工作过程如下:
1)判断是否有键闭合。
2)判断按键闭合位置
3)键码计算
4)等待键的释放
五、
1.
定时方式:
其中:方式0时n=13
方式1时n=16
方式2和3时n=8
2.
1.简单输入输出扩展
方式1:【波特率不定】 【注:常使用定时器1作波特率发生器。工作在方式2】
方式2:【波特率固定】
【例】:
89C51单片机始终振荡频率为11.0592MHz,选用定时器T1工作方式2作为波特率发生器,波特率为2400bit/s,采用查询方式求初值并编写初始化程序。
【解:】
串行口波特率--2400bit/s,波特率不倍增,SMOD=0,
已知单片机的外部晶振振荡平路为6MHZ,试计算出机器周期和指令周期
振荡周期:振荡周期=1/振荡频率=1/6(us)
时钟周期:时钟周期=2*振荡周期=2/6(us)
机器周期:机器周期=6*时钟周期=2(us)
指令周期:指令周期=(1~4)*机器周期=(2~8)(us)
4.
Scon设置位
方式0:【波特率固定】
得(TH1)=(TL1)=F4H
初始化程序如下:
#include<reg51.h>
Void InitUART(void)
{
PCON=0x00;//【注:】翻倍时为0x80;不翻倍时为0x00;不可位寻址
SCON=0x50;
-------------------------------------------------------------------------
#include <reg51.h>
#define uchar unsigned char
#define ADC0809 XBYTE[0x78ff]
Voபைடு நூலகம்d delay()
{
uchar j;
for(j=0;j<250;j++);
}
Void main()
{
while(1)
{
ADC0809=0;//启动A/D
④bit bdata flag;
⑤sfr SCON = 0x98;
⑥sfr16 T0 = 0x8A;
D7
D6
D5
D4
D3
D2
D1
D0
C
AC
F0
RS1
RS0
OV
-
P
四、简答题
1.
两个外部中断,两个定时/计数器中断,一个串行口中断
2.
设置外部中断和串行口终端为高优先级,两个定时器为低优先级
Pspt1px1pt0px0
8.
三、
1.C51语言的data、bdata、idata有什么区别?
答:data:直接寻址片内数据区的低128字节。
bdata:片内数据区的位寻址区0x20~0x2f,16字节,也可字节访问。
idata:间接寻址片内数据区的256字节。
2.按照给定存储器类型和数据类型,写出下列变量的说明形式。
1在data区定义字符变量val1。
10101
所以IP=0x15
3.
一个机器周期等于6个始终周期,12个振荡周期。
一个指令周期等于1、2、4个机器周期。
【时钟周期是单片机最基本的时间单位,机器周期是完成莫一个规定操作所需要的时间】
【一个机器周期为6个时钟周期,共12个振荡周期,依次为S1P1,S1P2,....S6P1,S6P2】
【例:】
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void main()
{
uchar i;
P2=0x01;
while(1)
{
for(i=7;i>0;i--)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i>0;i--)
{
P2=_cror_(P2,2);
2在idata区定义整型变量val2。
3在xdata区定义无符号字符数组val[3]。
4定义可寻址的位变量flag。
5定义特殊功能寄存器变量SCON。
6定义16位特殊功能寄存器变量T0。
答:①char data val1;
②int idata val2;
③unsigned char xdata val[3];