嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx

上传人:b****3 文档编号:7299968 上传时间:2023-05-08 格式:DOCX 页数:21 大小:38.09KB
下载 相关 举报
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第1页
第1页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第2页
第2页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第3页
第3页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第4页
第4页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第5页
第5页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第6页
第6页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第7页
第7页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第8页
第8页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第9页
第9页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第10页
第10页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第11页
第11页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第12页
第12页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第13页
第13页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第14页
第14页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第15页
第15页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第16页
第16页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第17页
第17页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第18页
第18页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第19页
第19页 / 共21页
嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx

《嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。

嵌入式技术基础与实践王宜怀复习指导Word文件下载.docx

7.S08CPU的寻址方式:

(1)内在寻址方式(INH)

(2)立即寻址方式(IMM)

(3)直接寻址方式(DIR)

(4)扩展寻址方式(EXT)

(5)无偏移量变址方式(IX)

(6)8位偏移量变址方式(IX1)

(7)16位偏移量变址方式(IX2)

(8)相对变址寻址方式(REL)

(9)存储器:

直接地址—直接地址寻址方式(DD)

(10)存储器:

直接地址—变址、变址加1的寻址方式(DIX+)

(11)存储器:

立即数—直接地址寻址方式(IMD)

(12)存储器:

变址—直接地址、变址加1的寻址方式(IX+D)

(13)无偏移量变址、变址加1寻址方式(IX+)

(14)8位偏移量变址、变址加1寻址方式(IX1+)

(15)8位偏移量堆栈寻址方式(SP1)

(16)16位偏移量堆栈寻址方式(SP2)

8.S08CPU的指令系统:

(1)数据传送指令:

取数指令、存数指令、堆栈操作指令、寄存器间数据传送指令、存储器间数据传送指令。

(2)算术运算指令:

加减指令堆栈操作指令、乘/除法指令、加1/减1指令、取反/求补指令、比较指令、清零指令、测试是否为0指令、SP与HX增加指令。

(3)逻辑运算指令:

完成逻辑与、或、异或等操作。

(4)位操作类指令:

位测试、位置1、位清0等操作。

(5)移位类指令:

单向移位指令、循环移位指令。

(6)程序控制指令:

一般转移指令、特殊转移指令、跳转指令。

(7)其他指令。

第3章第一个样例程序及CodeWarrior工程组织

1.通用I/O接口:

I/O接口,即输入输出接口,是微控制器同外界进行交互的重要通道。

所谓通用I/O,也记为GPIO(GeneralPurposeI/O),即基本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最基本形式。

2.上拉电阻和下拉电阻:

MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”。

与之相对应,若MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。

3.AW60的GPIO接口:

AW60有7个GPIO口,每个GPIO口的名称由一位英文字母组成,分别是A、B、C、D、E、F、G。

GPIO模块的每个口最多对应8个GPIO引脚,但各个GPIO口的编程寄存器均为8位,没有对应引脚的位无效。

GPIO的基本寄存器:

(1)端口数据方向寄存器(DDR):

若为0,则为输入,若为1,则为输出。

(2)端口数据寄存器:

存放要输入或输出的数据。

第4章基于硬件构件的嵌入式系统开发方法

1.嵌入式系统开发主要存在以下两大问题:

硬件设计缺乏重用支持

驱动程序可移植性差

2.根据接口之间的生产消费关系,接口可分为两类:

提供接口和需求接口。

根据所拥有接口类型的不同,硬件构件分为三类:

核心构件、中间构件、终端构件。

第5章串行通信接口SCI

1.串行通信的概念:

SCI(standardnon-return-zeromark/spacedataformat)“标准不归零传号/空号数据格式,通常采用NRZ数据格式。

“不归零”的最初含义是:

用正、负电平表示二进制值,不使用零电平。

“mark/space”即“传号/空号”分别是表示两种状态的物理名称,逻辑名称记为“1/0”。

下图给出了8位数据、无校验情况的传送格式

2.奇偶校验:

字符奇偶校验检查(characterparitychecking)称为垂直冗余检查(verticalredundancychecking,VRC),它是每个字符增加一个额外位使字符中“1”的个数为奇数或偶数。

奇校验:

如果字符数据位中“1”的数目是偶数,校验位应为“1”,如果“1”的数目是奇数,校验位应为“0”。

偶校验:

如果字符数据位中“1”的数目是偶数,则校验位应为“0”,如果是奇数则为“1”。

3.串行通信的传输方式:

单工(Simplex)、全双工(Full-duplex)、半双工(Half-duplex)。

4.AW60的SCI模块的编程结构:

从程序员角度看,涉及SCI的有8个8位寄存器,其中2个波特率寄存器,1个数据寄存器,3个控制寄存器,2个状态寄存器。

SCI波特率计算公式:

SCI波特率=fBUSCLK/(16×

BR),其中fBUSCLK为内部总线频率

SCI控制寄存器1(SCIxC1)用于设置SCI的工作模式,可选择运行模式、唤醒模式、空闲类型检测以及奇偶校验。

SCI控制寄存器2(SCIxC2)用于收/发及相关中断控制的设置。

5.SCI模块的编程结构:

(1)SCI构件的初始化功能函数:

voidSCIInit(uint8SCINo,uint8sysclk,uint16baud){

uint16ubgs=0;

if(SCINo>

2)

SCINo=2;

//若传进的通道号大于2,则按照2来处理

//计算波特率并设置:

ubgs=fsys/(波特率*16)(其中fsys=sysclk*1000000)

ubgs=sysclk*(10000/(baud/100))/16;

//理解参考上一行,此处便于CPU计算

SCI_BDH(SCINo)=(uint8)((ubgs&

0xFF00)>

>

8);

SCI_BDL(SCINo)=(uint8)(ubgs&

0x00FF);

//无校验,正常模式(开始信号+8位数据(先发最低位)+停止信号)

SCI_C1(SCINo)=0b00000000;

//允许发送,允许接收,中断方式收发

SCI_C2(SCINo)=0b00001100;

}

(2)SCI构件的单字节发送功能函数:

voidSCISend1(uint8SCINo,uint8ch){

if(SCINo>

SCINo=2;

while(!

SCI_S1(SCINo)&

0b1000000);

//判断发送缓冲区是否为空

SCI_D(SCINo)=ch;

(3)SCI构件的单字节接收功能函数:

uint8SCIRe1(uint8SCINo,uint8*p){

uint16k;

uint8i;

if(SCINo>

for(k=0;

k<

0xFBBB;

k++){//有时间限制

if(SCI_S1(SCINo)&

0b00100000)!

=0){//判断接收缓冲区是否满

i=SCI_D(SCI_No);

*p=0x00;

break;

if(k>

=0xFBBB){//接收失败

i=0xFF;

*p=0x01;

returni;

6.中断向量表:

中断向量表是一个指针数组,其中每一项都存放了中断处理函数的入口地址。

7.中断的处理过程一般为:

关中断、保护现场、执行中断服务程序、恢复现场、开中断。

8.AW60中断源:

AW60有26个中断源,按优先级从高到低的顺序分别是:

复位中断(1个)、SWI指令中断(1个)、引脚中断(1个)、低电压检测中断(1个)、ICG中断(1个)、定时器中断(10个)、SPI中断(1个)、SCI中断(6个)、键盘输入中断(1个)、ADC转换完成中断(1个)、I2C中断(1个)和实时中断(1个)。

26个中断源只有18个中断向量,有的是几个中断源使用同一个中断向量。

第6章GPIO的应用实例——键盘、LED与LCD

1.键盘

(1)AW60的键盘中断模块:

AW60单片机上的PTG0–PTG4、PTD2–PTD3、PTD7共8个引脚与键盘中断模块(KBI)的引脚复用。

键盘中断矢量地址:

$FFD2—$FFD3。

键盘中断初始化顺序:

先设置键盘中断状态和控制寄存器(KBI1SC),后设置键盘中断引脚使能寄存器(KBI1PE)。

(2)键盘编程扫描一次4X4键盘并返回扫描键值:

uint8KBScan1(){

uint8line,i,tmp,tmp1,tmp2;

line=0b11111110;

//是第一根行线为0(低电平)

for(i=0;

i<

4;

i++){

//当前扫描的一行,输出低电平

KB_GP=line;

//输出开始扫描

asm(“NOP”);

//读取键盘口数据寄存器

tmp1=KB_DP;

//输入扫描结果

tmp2=KB_GP;

//整合扫描结果,即键盘输入引脚的4位

tmp=(tmp1&

0x80);

tmp1&

=0x0C;

tmp1=(tmp1<

<

3);

tmp|=tmp1;

tmp|=(tmp2&

0x1F);

//通过观察4根列线中是否出现低电平来判断当前行有无按键

if((tmp&

0xF0)!

=0xF0)//当前行有按键按下

break;

line=(line<

1)|0x01;

returntmp;

2.数码管LED编程实例:

(1)LED的引脚使用:

利用MCU的PTB口控制8个位段(数据),PTB7–PTB0分别接h-a位段,PTD0,PTD1,PTD4,PTD5作为片选端(位控制)。

(2)LED编程结构:

voidLEDInit(){//LED初始化

LEDdata_D=0xFF;

LEDcs_D=0x33;

voidLEDshow1(uint8I,uint8c){//在LED上的第i位显示数字

LEDcs=CStable[i];

LEDdata=Dtable[i];

voidLEDshow(uint8*Buf){//在LED上显示4个十进制数

uint8i,j,c;

for(i=0;

c=Buf[i]-‘0’;

LEDshow(3-I,c);

//延时

for(j=0;

j<

100;

j++);

3.液晶LCD编程实例

(1)LCD的基本特点和分类方法

1)低电压微功耗,2)平板型结构,3)使用寿命长,4)被动显示,5)显示信息量大且易于彩色化,6)无电磁辐射

LCD的分类:

1)按电光效应分类,LCD可分为电场效应类,电流效应类,电热效应类和热效应类。

2)按现实内容分类,LCD可分为字段型,点阵字符型,点阵图形型。

3)按LCD的采光方式分类,分为带背光源与不带背光源两大类。

(2)HD44780:

HD44780的外部引脚一般有14条,其中有8条数据线,3条控制线。

HD44780指令集:

(要求RS=0)

1)R/W=0,DATA=00000001,清屏

2)R/W=0,DATA=0000001*,归位……

3)R/W=1,读忙操作。

(3)LCD的引脚使用

在实验板上LCD数据线7-14引脚分别MCU的PTA0-PTA7连接,LCD的控制线RS,R/W,E(4,5,6引脚)分别与MCU的PTC4,PTC6,PTF6连接。

(4)LCD编程结构:

voidLCDinit(void){

uint16i;

//定义数据口(PTA0-PTA7)为输出

LCDdata_D=0b11111111;

//定义控制口(PTC4,PTC6)为输出

LCDctrlD1|=(1<

LcdRS);

LcdRW);

LCDctrl1&

=~(1<

//RS,R/W=00,写指令

//定义控制口(PTF6)为输出

LCDctrlD2|=(1<

LcdE);

LCDctrl2|=(1<

//E=1

//1功能设置

LCDcommand(0b00111000);

//5*7点阵模式,2行显示,8位数据总线

//2显示开关控制

LCDcommand(0b00001000);

//不闪烁,关光标显示,关显示

//3清屏并等待结束

LCDcommand(0b00000001);

4000;

i++)

//4输入方式设置

LCDcommand(0b00000110);

//显示不移动,光标左移,数据读取后,AC自动加1

//5光标或画面移位设置

LCDcommand(0b00010100);

//光标右移一个字符位,AC自动加1

//6显示开关控制

LCDcommand(0b00001100);

//不闪烁,关光标显示,开显示。

voidLCDcommand(uint8cmd){

//1等待>

40us

for(i=0;

1000;

//2数据送到LCD数据线上

LCDdata=cmd;

//3给出E信号的下降沿,将数据写入LCD中

asm(“NOP”);

asm(“NOP”);

LCDctrl2&

//4等待>

for(i=0;

第7章定时器模块

1.AW60内的计时器:

AW60提供两个独立的定时器,分别是TPM1和TPM2,其中TPM1有6个通道,TPM2有2个通道。

2.定时器模块的寄存器:

(1)状态和控制寄存器:

D7(TOF)定时器溢出标志位,D6(TOIE)定时器溢出中断允许位,D4、D3(CLKS)时钟源选择位,D2-D0(PS)定时器分频因子选择位。

(2)TPM计数寄存器(TPMxCNT):

16位寄存器,每一计数周期自动加1,当时钟溢出时清零。

(3)TPM预置寄存器(TPMxMOD):

16位寄存器,用于设定计数寄存器的计数溢出值。

3.分频因子p与预置寄存器的设定:

t=n/(fBUS/p),其中n为预置寄存器值

4.定时器编程结构:

voidTPMInit(uint8TPMNo){

//参数溢出处理

if(TPMNo>

TPMNo=2;

elseif(TPMNo<

1)

TPMNo=1;

//设置定时器状态

TPM_CSTR(0b00010110);

//分频因子64,设置为固定时钟频率:

2MHz,禁止溢出中断

//计数寄存器初值=0x0000

TPM_CNTH(TPMNo)=0x00;

TPM_CNTL(TPMNo)=0x00;

//预置寄存器设定值=0x7A12

TPM_MODH=0x7A;

TPM_MODL=0x12;

voidSecAdd1(uint8*p){

*(p+2)+=1;

//秒加1

if(*(p+2)>

=60){//秒溢出

*(p+1)+=1;

//分加1

*(p+2)=0;

//清秒

if(*(p+1)>

=60){//分溢出

*p+=1;

//时加1

*(p+1)=0;

//清秒

if(*p>

=24)//时溢出

*p=0;

//清时

5.AW60定时器的脉宽调制(PWM):

分为两种模式,边沿对齐PWM和中心对齐PWM

voidPWM(uint8TPMNo,uint8CHNo,uint16Period,uint8Duty){

uint16j;

TPM_CSTR(TPMNo)=0x00;

//设置PWM波的周期=Period

TPM_MODH(TPMNo)=(uint8)(Period>

TPM_MODL(TPMNo)=(uint8)Period;

if(Duty>

100)Duty=100;

elseif(Duty<

0)Duty=0;

j=(Period/100)*Duty;

if(TPMNo<

=1){//定时器1

if(CHNo>

5)CHNo=5;

//根据占空比,设置相应通道数值寄存器

TPM1_CHVH(CHNo)=(uint8)(j>

TPM1_CHVL(CHNo)=(uint8)j;

//设置定时器1通道状态和控制寄存器

TPM1_CHSCSTR(CHNo)=0b00101000;

}else{//定时器2

2)CHNo=2;

TPM2_CHVH(CHNo)=(uint8)(j>

TPM2_CHVL(CHNo)=(uint8)j;

TPM2_CHSCSTR(CHNo)=0b00101000;

第8章串行外设接口SPI

1.串行外设概念:

一种同步串行通讯接口,用于微处理器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准。

时钟极性(CPHA):

表示时钟信号在空闲时是高电平还是低电平。

时钟相位(CPOL):

决定数据是在SPSCK的上升沿采样还是在SPSCK的下降沿采样。

2.SPI模块的时序:

确保发送数据在一周期开始的时刻上线,接收方在1/2周期的时刻从线上取数,这样是最稳定的通信方式。

3.AW60SPI模块编程

SPI模块有5个8位寄存器,分别是2个控制寄存器,1个波特率寄存器,1个状态寄存器和1个数据寄存器。

voidSPIInit(){

SPI_CR1=0b01010000;

//不产生中断,主机方式,时钟空闲低电平

SPI_CR2=0b00000000;

SPI_BR=0b01000001;

voidSPISendOntByte(uint8data){

SPI_DR=data;

while(0==(SPI_SR&

(1<

SPI_SendEmyptBit)));

//查询SPI状态寄存器是否发送成功

voidSPIRecvOneByte(){

SPI_ReceiveFullBit)));

//判断接收缓冲区是否满

returnSPI_DR;

第9章Flash存储器在线编程

1.Flash存储器编程方法有:

写入器模式(监控模式)和在线编程模式(用户模式)

2.Flash存储器的基本特点:

固有不挥发性;

易更新性;

成本低、密度高、可靠性好。

3.Flash编程的基本操作有两种:

擦除(Erase):

将存储单元的内容由二进制的0变成1

写入(Program):

将存储单元的内容由二进制的1变成0

擦除和写入操作都是通过设置或清除Flash存储器的控制寄存器(FLCR)的某个或某些位来完成的。

4.Flash存储器的编程寄存器:

6个,对应地址为$1820-$1826

Flash时钟分频寄存器(FCDIV)、Flash选项寄存器(FOPT)、Flash配置寄存器(FCNFG)、Flash保护寄存器(FPROT)、Flash状态寄存器(FSTAT)、Flash命令寄存器(FCMD)

5.在运行flash擦除及写入程序时,flash区会被加上高于普通工作电压的编程电压,导致flash区读取不稳定,应该怎么解决此问题?

答:

为了使擦除,写入程序正常执行,需将擦除,写入子程序移入RAM中并转入RAM区执行。

为此需在RAM区开辟一个缓冲区,供程序移入使用。

6

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2