嵌入式复习材料(完整版)

  • 格式: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接口复用?控制寄存器是什么?控制寄存器各位的意义?