同济大学浙江学院嵌入式系统复习.docx
《同济大学浙江学院嵌入式系统复习.docx》由会员分享,可在线阅读,更多相关《同济大学浙江学院嵌入式系统复习.docx(14页珍藏版)》请在冰豆网上搜索。
同济大学浙江学院嵌入式系统复习
第一章
1.列举你听说过的著名半导体厂商公司的名字吗,并简要说明其情况,如国籍、英文名、主要产品、最近几年销售额等。
2.列出至少两家MCU厂商的网址,上网分别查询它们生产的至少一种MCU产品的型号,并简要说明这种MUC的特点。
8位MCU命名法解说
MC
9
S08
AW
60
X
XX
E
产品品质等级:
MC=完全品质保证
XC=部分品质保证
PC=工程样品
KMC=样品
KXC=样品
存储器类型:
9=Flash
8=EEPROM 7=OTPROM
CPU内核:
S08=HC08
S08=HCS08
RS08=RS08
产品系列:
AW/DZ/DV/DN/EN/EL/SL/SG
存储器容量:
60表示60KB
温度范围:
C=-40~85℃
V=-40~105℃
M=-40~125℃
封装形式:
PU=LQFP
FU=QFP
FD=QFN
FG=LQFP
无铅
3.MCU是英文MicroControllerUnit的缩写,中文含义是微控制器。
4.MCU选型时主要应该注意哪三方面的因素?
各自含义的什么?
MCU的适用性:
MCU的适用性主要是考虑MCU的片内资源能否满足实际需求。
MCU的可开发性:
MCU的可开发性是指所选择的MCU是否有足够的开发手段。
MCU的可购买性:
MCU是否容易购买;是否有足够的供应量;是否仍然在生产中;是否在改进中。
5.FreescaleS08系列MCU的HCS08核由哪些部分组成?
CPU寄存器有哪几个、位数是什么、各有什么作用?
HCS08CPU;背景调试控制器;支持高达32个中断/复位源的中断/复位机制;片级地址解码器。
CPU寄存器有5个:
累加器A(8位):
是主要的数据寄存器,用于存储算术逻辑单元的输入参数或运算结果
程序计数器PC(16位):
用于存放下一个预取指令或操作数的地址
变址寄存器H:
X(16位)
堆栈指针SP(16位):
当子程序最后执行返回指令时,该返回地址会自动从堆栈中恢复,并由此从先前暂停的指令处继续执行程序
条件码寄存器CCR(8位)
6.FreescaleS08系列MCU的最高总线时钟速率可以达到20MHz,内部CPU的最高工作时钟速率可以达到40MHz。
HCS08系列的CPU时钟速率是总线时钟频率的2倍。
HCS08系列MCU的总线时钟除了可以对外接高频时钟_2__分频得到外,也可以利用内部ICG模块对外接的__32~100kHz__低频范围时钟或_1~16MHz___高频范围时钟进行倍频得到。
7.FreescaleS08系列MCU复位时SP的初值为__$086F__,PC会自动装入位于__$FFFE__和__$FFFF__存储单元中的复位向量值,MCU产生中断时CPU存储器自动入栈顺序从先到后依次是__程序计数器的低字节PCL、_程序计数器的高字节PCH__、_变址寄存器的低字节X___、__累加器A__、__CCR寄存器__,为了和HC08系列保持兼容,__H__寄存器并不会被自动压入堆栈。
8.CCR中的I位为_0__表示CPU允许中断,I位为_1_表示CPU禁止中断,I位的上电复位默认值为__1__。
在响应中断时,CCR被自动入栈保存后I位会被自动设为__1__以阻止不必要的中断嵌套。
9.如何把SP初始化到RAM末地址?
一般初始化SP的值指向片内RAM空间的末字节,以便释放出0页地址空间的一些存储单元作为通用作为通用存储区使用。
LDHX#$086F+1
TXS
10.MC9S08AW60内部集成了哪些模块?
片内RAM存储器容量多大?
Flash容量又有多大?
AD转换器,内部时钟生成器,IIC,键盘中断,串行通信接口,串行外围接口,
定时器脉宽调制器,中央处理器,调试模块
2KB的RAM存储器
60KB的Flash存储器
第二章
1.存储器独立编址和同一编址的含义是什么?
各有什么特点?
存储器独立编址方式:
哈佛结构。
独立编址的好处是可以生成双倍的存储空间,独立编址的存储器地址出现重迭,但通过不同的控制线并配合不同的指令就可以区分不同的存储器
存储器统一编址方式:
普林斯顿结构。
统一编址所获得的存储器空间比分离编址减半,但通过同一指令再配合不同地址的参数就可以区分不同存储器。
2.MCU内部的RAM的作用主要是什么?
Flash的主要作用是什么?
内部寄存器的主要作用是什么?
CPU如何访问片内外围模块?
RAM主要用于存放用户程序中的各种变量,堆栈也处于RAM空间
Flash主要用作程序存储器,存放用户程序机器码和常数,表格等
?
CPU读/写存储器需要通过存储器的地址来进行读写,CPU和片内外围模块通信需要通过外围模块的地址(寄存器地址)来进行访问。
3.MC9S08AW60的整个$0000~$FFFF范围64KB的空间分成寄存器、_RAM___、Flash三大区域,寄存器又分为三组:
直接页寄存器(地址从$0000_到_$006F)、_高页寄存器___(地址从$1800____到_$185F___)和非易失性寄存器(地址从_$FFB0___到$FFBF____),Flash又分为2两组:
_用户程序Flash区___(地址从_$0870___到_$17FF___、从$1860____到_$FFAF___)和_中断复位矢量区_____(地址从_$FFC0___到_$FFFF___)。
4.非易失性寄存器NVPROT和NVOPT的作用是什么?
在上电复位时,非易失性寄存器NVPROT和NVOPT中的值被传送到地址为$1821的高页寄存器FPROT里和地址为$1824的高页寄存器FOPT里,用于控制块保护和加密。
5.S08系列MCU的每个中断向量表占用__2__字节,其中的中断复位向量地址为__$FFFE__和__$FFFF__。
6.MC9S08AW60内部地址从$00到$FF的区域的每一个位都可以通过位操作指令进行访问。
7.写出把SP初始化为$086F的指令代码。
LDHX#$086F+1
TXS
8.若MC9S08AW60上电复位之后PC=1860H,则FFFEH存储单元中的值为__18H__,FFFFH存储单元中的值为__60H__。
第四章
1.MC9S08系列的MCU通常具有RUN模式__、_活动背景调试模式_、Wait模式___、_STOP模式___等工作模式,其中,__RUN模式功耗最大,__STOP__模式功耗最小,__RUN_模式是MCU的正常工作模式,也就是MCU复位后进入的模式。
2.MC9S08系列的MCU具有的四种低功耗模式,分别是__STOP1模式__、_STOP2模式___、_STOP3模式__和_Wait模式___,其中的_Wait___模式功耗最大,_STOP1___模式功耗最小。
3.如何进入S08单片机的活动背景调试模式?
①BKGD/MS引脚在reset的上升沿为低;
②通过BKGD引脚接受到BACKGROUND命令;
③执行BGND指令;
④遇到BDC断点;
⑤遇到DBG断点;
第五章
1.
MC9S08AW60系列MCU的一种外部复位为____RESET引脚________复位,六种内部复位分别为:
____上电______复位、____看门狗________复位、____低电压检测________复位、____非法操作码________复位、___背景调试强制_________复位、___时钟发生器时钟失锁和时钟丢失____复位。
2.
MC9S08AW60系列的MCU发生复位后,PC从复位向量____$FFFE:
$FFFF________处载入地址值,CCR中的I位为__1__,SP的复位值为_$00FF___,总线时钟频率约为___4_____MHz,CPU时钟频率约为____8____MHz,同时还会把寄存器___SRS____中的相应标志位自动置1.
3.RESET#引脚出现至少___1.5/8ns_____时间的负脉冲,就会产生外部引脚复位,同时把SRS中的标志位PIN自动置1.
4.COP能够使得MCU在程序跑飞之后自动恢复正常运行的原理是什么?
COP实质上是一个计数器,它从0开始对总线时钟BUSCLK脉冲加1计数,即对每一个BUSCLK脉冲,COP计数器加1,当COP计数器计满2^13个或2^18个BUSCLK脉冲,就会产生COP复位,使得MCU重新开始执行程序。
5.COP具有两种溢出周期,分别是__2^13__和__2^18__个BUSCLK周期,通过__SOPT__寄存器中的__COPT__位进行选择,此位为__0__位时选择溢出短周期,此位为___1_____位时选择溢出长周期,此位的复位默认值为__1__。
6.允许COP需要设定_SOPT___寄存器中的____COPE____位为____1____来实现,COP在复位之后默认状态是_____1______,其溢出周期为____2^18____个BUSCLK周期:
为了防止COP计数器溢出,需要使用指令___STA____SRS_____周期性清零COP计数器,也可以设置__COPE__位为__0__来禁止COP。
7.CCR中的I位在复位之后默认为___1_____,开总中断指令为_____CLI_______。
8.当寄存器___IRQSC_____中的____IRQPE____位为____1___时允许IRQ引脚功能,若要将IRQ引脚设为仅为上升沿触发,需要分别设定___IRQEDQ____位为_____1___,设定____IRQMOD____位为___0_____。
IRQ的中断向量表首地址为_____$FFFA_______。
清零IRQF位需要向_____IRQACK___写1来实现。
第六章
1.HCS08系列单片机的CPU时钟频率是总线时钟频率的__2__倍,HCS08系列单片机的最高总线频率可达___20MHz_____,CPU的频率最高可达__40MHz______
2.除了关断模式外,ICG模块具有四种工作模式:
____SCM____、___FEI_____、____FBE____和____FEE____。
MCU上电复位之后的默认模式是____SCM____,此时不需要外接晶振,CPU频率约为___8MHz_____,总线拼了约为___4MHz_____。
第七章
1.MC9S08AW60系列的MCU具有7个I/O端口,64引脚的封装具有54个I/O引脚,48引脚的封装具有38个I/O引脚,44引脚的封装具有34个I/O引脚。
3.MCU采用5V供电情况下所有I/O端口总电流不能超过___100mA_____,若采用3V供电则所有I/O端口总电流不能超过____60mA________。
第九章
1.MC9S08A60内部__2__个___16_位的TPM模块,每个模块都支持传统的四种功能:
____计数定时____、___输入捕捉_____、___输出比较_____和___脉宽调制PWM_____。
2.MC9S08AW60复位之后,CLKSB:
CLKSA=___0:
0_____,因此没有选中TPM时钟源,TPM不工作,通常设定CLKSB:
CLKSA=___0:
1_____,让总线时钟驱动定时器。
每一个TPM模块的时钟源能够独立选定三种时钟源:
__总线时钟______、__固定系统时钟______或___外部时钟_____。
3.TPMx模块允许的最大外部时钟频率是总线速率的_四分之一_。
4.TPMx模块寻顶时钟源后,还可以对时钟源进一步分频后再作为TPMx计数时钟,其中的分频系数可以为__1_____、_____2___、_____4___、_____8___、_____16___、_____32___、____64____、或____128____。
它们由寄存器___TPMxSC_________中的_____2:
0_______位设定。
5.
MC9S08AW60包含两个独立的TPM模块:
TPM1和TPM2,TPM1具有__6__个通道,TPM2具有__2__个通道;每个模块的每一个通道引脚都可以单独配置为___输入捕捉_____、___输出比较_____、或____带缓冲的边沿对齐PWM____功能;每个模块的所有通道引脚都可以配置为____带缓冲的中心对齐PWM________功能。
6.TPM具有两种PWMS:
____边沿对齐PWM__和__中心对齐PWM_____,具有受寄存器_____TPMxSC__中__CPWMS____位的控制。
7.当CPWMS=0时,TPMxCNT从0开始每隔一个TPMx计数周期就加1计数,加到___0xFFFF_____或___TPM模数寄存器中的值_____时,重新从___0x0000____开始加1计数。
8.当CPWMS=0时,TPMxCNT从0开始每隔一个TPMx计数周期就加1计数,加到____结束值____时,进行减1计数直到__0x0000______,然后又开始加1计数。
9.当计数器溢出标致TOF为1时,若中断允许信号TOIE=__1__则允许向CPU产生中断请求。
定时器:
已知总线时钟Fbus=4MHz,用TPM1模块精确定时500ms,然后使得PTE2/TPM1CH0管脚外接的LED0按照500ms时间交替亮灭,写出完整代码。
(TPM1SC=0EH500ms:
TPM1MOD=7A12H1s:
TPM1MOD=F424H)
(TPM1SC=0FH2s:
TPM1MOD=F424H)
PS:
B端口第2位E端口第二位
查询方式代码:
PTBDDEQU$0003
PTBDEQU$0002
PTEDEQU$0008
PTEDDEQU$0009
TPM1SCEQU$0020
TPM1MODHEQU$0023
TPM1MODLEQU$0024
RAMstartAddrEQU$0070
FlashStartAddrEQU$1860
ORGRAMstartAddr
ORGFlashStartAddr
TPM1_Init:
;TPM1模块查询方式初始化程序
MOV#$0E,TPM1SC;禁止TPM1溢出中断,BUSCLK为TPM1时钟源,64频
MOV#$7A,TPM1MODH
MOV#$12,TPM1MODL;500ms对应的模数值
RTS
Main:
BSET2,PTEDD;PTE2作为输出
BCLR2,PTBDD;PTB2作为输入,控制白天黑夜,高电平为黑夜
BSET2,PTED;PTE2=1,LED0灭(高低电平看题目确定)
JSRTPM1_Init;TPM1查询初始化
MainLoop1:
LDAPTBD;把按键值存放给累加器A,
AND#%00000100;若为黑夜则A=00000100(Z标志位为0)
BNEAGN;如果标志位Z为0,则为黑夜,航标灯开启
JMPMainLoop1;循环
AGN:
BRCLR7,TPM1SC,AGN;查询500ms时间是否已到
LDATPM1SC;读状态控制寄存器
BCLR7,TPM1SC;写TOF为0来清零TOF标志位
LDAPTED
EOR#%00000100;bit2取反
STAPTED;输出
JMPMainLoop1;死循环
ORG$FFFE;复位向量地址
DC.WMain
调试过程:
八个窗口:
调试主要看的窗口:
加法:
编写三字节(压缩BCD码形式)无符号十进制数加法程序。
假定两个加数分别在内部RAM(M1)(M1+1)(M1+2)和(M2)(M2+1)(M2+2)单元中,结果放在(M3)(M3+1)(M3+2)(M3+3)单元(高位在前)。
(非循环)
图1三字节的两数无循环相加流程图
M1EQU$70;标号赋值
M2EQU$73
M3EQU$76
ORG$8000
Main:
LDAM1+2;取加数1的低字节
ADDM2+2;加上加数2的低字节
DAA;十进制调整
STAM3+3;送到和的第一字节(低字节)
LDAM1+1;取加数1的第二字节
ADCM2+1;加上加数2的第二字节(带进位)
DAA;十进制调整
STAM3+2;送到和的第二字节
LDAM1;取加数1的高字节
ADCM2;加上加数2的高字节(带进位)
DAA;十进制调整
STAM3+1;送到和的第三字节
LDA#$0;计算最高位进位
ADC#$0
STAM3;送到和的最高字节
ORG$FFFE;复位矢量
DC.WMain