嵌入式复习材料(完整版)
- 格式:doc
- 大小:3.89 MB
- 文档页数:18
单片机复习材料(仅供复习使用)
一、相关基础知识
1为什么说单片机是典型的嵌入式系统?
嵌入式系统是一种计算机软硬件的组合,也许还有机械装置,用于实现一个特定功能。以MCU为核心的系统是应用最广的嵌入式系统。
2十进制数126,117,97化为二进制、十六进制数
126 ; 1111110 ; 7e
117 ; 1110101 ; 75
97 ; 1100001 ; 61
3求+112、-112的原码、反码、补码.
+112 0111 0000(正数的原码、反码、补码都是它本身)
-112 ;11110000 (第一位为符号位);10001111 ;10010000(取反加一)
4.什么是BCD码?什么是ASCII码?
BCD码亦称二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式。
ASCII是用来制订计算机中每个符号对应的代码,这也叫做计算机的内码。每个ASCII码以1个字节(Byte)储存,从0到数字127代表不同的常用符号,例如大写A的ASCII码是65,小写a则是97。
二、课程基础知识
1. 一个CPU必须包含哪几个部分?
运算器、处理器、寄存器组
2.什么是堆栈?其特点是什么?MC9S08AW60的堆栈在哪个位置?由什么决定共位置?
堆栈是一段连续的存储器空间,
堆栈按照后入先出的方式工作(Last In First Out)
只能向/从堆栈的顶部加入或取出数据
堆栈能够保持数据的顺序
堆栈在RAM区
堆栈顶端位置通过CPU内的堆栈指针寄存器确定
堆栈指针的初始位置由程序代码确定,指向预先划定的堆栈空间的底部
特点:先入后出;只能从顶部加入或取出数据
在2KB的堆栈RAM区,地址为$0070~086F
堆栈由堆栈指针SP来控制,进栈减一,出栈加一
3.MC9S08AW60型号各部分含义
MC-(合格);9-(带闪存Flash);S08-内核;AW-子类型;60-60KB存储
4.MC9S08AW60有内核是多少位的CPU?RAM及FLASH容量?都有什么外围模块?最高总线频率为多少?
S08是8位微控制器
2KB片内RAM,60KBFLASH
外围模块: 定时器/PWM模块、看门口模块、通用IO模块、串口通信模块(SCI)、串行外设接口(SPI)、IIC模块、A/D转换模块、键盘中断模块、时钟发生模块、复位与中断模块等。
CPU总线40MHz,内部总线20MHz
5.MC9SAW60的存储器映射
MC9S08AW60系列产品中的片内存储器包括RAM、FLASH程序存储器、I/O和控制/状态寄存器。其中I/O寄存器可分为以下二类:
直接页寄存器($0000-$006F)
高页寄存器($1800-$185F)
片内存储器RAM、FLASH的地址映射:
RAM($0070-$086F)
FLASH($0870-$17FF)及($1860-$FFFF)
6.MC9SAW60的最小系统都包含哪几个部分
1.电源及其滤波电路
2.复位电路
3.晶振电路及PLL滤波电路
4.写入器接口电路
7.HCS08内核CPU都有哪些寄存器?条件码寄存器有哪些位,代表什么意义?
HCS08 CPU中有5个寄存器:累加器A、变址寄存器HX、堆栈指针SP、程序计数器PC和条件码寄存器CCR(其中中断屏蔽位I为总中断开关,I=0代表允许中断)
8.看懂简单汇编程序,例如:
总线频率为20MHZ,下面程序段执行所用时间
LDA #200 ;(2T)(T表示总线周期)
Delay_1: NOP ;(1T)
NOP
NOP
NOP
NOP
NOP
NOP
DBNZA Delay_1;(3T)
把200装载到寄存器A中,由于T=5*10^(-5)ms,所以延时6*10^(-4)ms。
三、GPIO应用
1. MC9S08AW60有几个GPIO口?每个GPIO有哪些寄存器?
AW60有7个GPIO(A\B\C\D\E\F\G)
总共54个I/O口(C口、G口只有6个)
数据方向寄存器:PTxDDn=0/1(设置x口n通道为输入/输出引脚)
数据寄存器:PTxDn
上拉寄存器:PTxPEn=0/1(无上拉/有上拉)
输出斜率控制使能寄存器:PTxSE
输出驱动能力选择控制寄存器:PTxDE
2.MC9S08AW60应用工程中关系到GPIO应用的函数中,必须包含哪个头文件?
#include “MC9S08AW60.h”(芯片寄存器及相关定义头文件)
3.GPIO应用程序设计,例如:
PTD0、PTD1接两个拨动开关,PTB口接八个LED灯,由两个拨动开关的四种不同状态,使八个LED分别为八个LED灯亮—灭循环;四个LED灯亮,四个LED灭交替;左移流水灯:右移流水灯。
#include”MC9S08AW60.h”
#define Switch_D PTDDD
#define Switch_P PTDD
#define LED_D PTBDD
#define LED_P PTBD
Switch_D =0xfc; //设置为输入
LED_D =0xff; //设置为输出
void delay(void); //延时函数声明
void LED1(void);
void LED2(void);
void LED3(void);
void LED4(void);
void main(void) //主函数
{
DisableInterrupts;
MCUInit();
EnableInterrupts;
unsigned char s;
s= Switch_P;
char CF;
char LED_shift=0xfe;
switch(s)
{
case 0x00 : CF=1;break;
case 0x01 : CF=2;break;
case 0x02 : CF=3;break;
case 0x03 : CF=4;break;
}
for(;;) //主循环
{
if(CF=1)LED1();
if(CF=2)LED2();
if(CF=3)LED3();
if(CF=4)LED4();
}
}
void LED1(void) //全亮全灭
{
LED_P=0xff;
delay();
LED_P=0x00;
delay();
}
void LED2(void) //半亮半灭
{
LED_P=0xf0;
delay();
LED_P=0x0f;
delay();
}
void LED3(void) //循环左移
{
LED_P= LED_shift;
if((LED_shift &0x80)==0) LED_shift =0xfe;
else
LED_shift =( LED_shift <<1)|0x01;
delay();
}
void LED4(void) //循环右移
{
LED_P= LED_shift;
if((LED_shift &0x01)==0) LED_shift =0x7f;
else
LED_shift =( LED_shift >>1)|0x80;
delay();
}
void delay(void) //延时函数
{
unsigned int i,j;
for(j=0;j<2;j++)
for(i=0;i<60000;i++)
;
}
四、SCI
1.串行通讯几种传输方式?串行通讯的双方必须要约定什么?
(1)单工(2)半双工(3)全双工
发送端和接收端应有相同的波特率(每秒传送的位数);校验位(奇偶校验);传输位数
2.什么是中断?MC9S08AW60的中断机制CPU响应中断时将哪几个寄存器压入堆栈保护?
程序接收到特定信号后,终止当前运行的程序并保护起来,转而执行中断程序,执行完毕后,回到之前中断的位置,继续运行。
A、X、CCR、PC进入堆栈
3.MC9S08AW60有几个串行通讯(SCI)模块?每个模块有几个中断资源?
AW60中有两组独立的SCI模块,每个模块有3个中断资源
一个中断向量与发送器的TDRE与TC事件相关;
一个中断向量与RDRF与IDLE事件相关;
一个中断向量用于OR、NF、FE与PF错误事件。
4.MC9S08AW60共有多少个中断资源?这些中断事件发生时,能不能被CPU响应由什么控制?
26个中断资源(中断号越低,级别越高);
由条件码寄存器CCR中的中断允许位控制
5.掌握实验二工程程序设计,主是掌握SCI初始化函数(相关的波特率、传递模式,发送等设计)与接收中断处理函数。
五、键盘与显示
1、MC9S08AW60的键盘模块与哪几个GPIO接口复用?控制寄存器是什么?控制寄存器各位的意义?