微控制器原理与应用复习
- 格式:doc
- 大小:95.00 KB
- 文档页数:12
微控制器原理与应用
一、简答题
1.MC9S12DG128 MCU核心包括哪些部分?
2.MC9S12DGl28微控制器片内资源包括哪些?
3.MC9S12DG128有几种操作模式?MC9S12DG128有哪两种引脚封装形式?分别适用哪些操作模式
4.S12系列微控制器有哪些时钟信号,分别提供给哪些部分? MC9S12DG128片内总线时钟频率最高可达多少?
5.
6.简要说明程序状态寄存器CCR各位的作用。
7.S12CPU寄存器具有哪些特点?
9.累加器有哪些作用? S12CPU有哪些累加器?
10.ROM和RAM存储器特点,用途
11. EEPROM存储器特点?
12.微控制器存储器的主要类型有哪几种?现在应用比较广泛的是哪几种?说出它们主要特点。
13.微控制器I/O端口功能? 12系列微控制器的外围接口采用设计方式?
14.S12系列微控制器I/O技术包括哪些量的输入/输出?S12外围接口设计特点?有哪些端口?
15.S12 MCU接口功能的特点?I/O口最多可达到多少个?与用户自行扩充的I/O口有什么区别?
16.S12的中断可分为哪两种,怎样控制? 有什么不同?
17.S12中断优先级排序怎样确定?
19.S12增强型定时器模块作用?
20.什么是输入捕捉?MC9S12DGl28每个IC通道组由哪些部分组成?
第 1 页共12 页
21. S12微控制器有哪两种产生PWM波形方法?并说出S12PWM模块的特性。
22.比较S12微控制器产生PWM波形两种方法优缺点?并说出MC9S12DGl28PWM模块的结构。
23.在S12微控制器PWM模块,什么是左对齐方式?左对齐方式整个输出周期?左对齐方式占空比?在S12微控制器PWM
24.在S12微控制器PWM模块,什么是中心对齐方式?整个输出周期?占空比?
1. 注解如下C程序,并说出功能。
/* This function waits for th timer overflow.Then it changes the LEDs bargraph display */
#include
#include
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
int counter;
void TimerOverflow(void)
{ while (TCNT != 0x0000);
while (TCNT == 0x0000);
counter++;
if (counter == 8) PORTB = 0x7f; //
if (counter == 7) PORTB = 0xbf;
if (counter == 6) PORTB = 0xdf; //
if (counter == 5) PORTB = 0xef;
if (counter == 4) PORTB = 0xf7; //
if (counter == 3) PORTB = 0xfb;
if (counter == 2) PORTB = 0xfd; //
if (counter == 1) PORTB = 0xfe;
}
void main(void)
{
TSCR1 = 0x80; //使用IC/OC功能
TSCR2 = 0x03; //禁止定时器溢出中断,计数器自由运行,预分频系数8
counter = 0;
DDRB=0xff; //
PORTB=0xff; //
asm{
nop
}
第 2 页共12 页
for (;;)
{
TimerOverflow();
if (counter >= 8)
{ counter = 0;
TSCR2 = 0x05;
}
}
}
程序功能:Main初始化定时器计数器,B口工作方式和初始状态后,先调用TimerOverflow函数,函数检测计数TCNT值返0后,变量counter加1,根据counter 值,B口相应位输出低电平,然后判别,当counter计到8时, counter返回0计数,以此循环调用TimerOverflow函数和判别。如用B口输出低电平点亮发光二极管,则可实现走马灯实验。
2.void setbusclock( void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR =0xc0 | 0x05;
REFDV=0x80 | 0x01;
POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=96MHz;
_asm(nop); //BUS CLOCK=48M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
void PWMInit(void) //ZHUTAO 23级联
{
PWME = 0x00; //PWM禁止
PWMCTL = 0x30; //通道01,23级联
PWMPRCLK= 0x55; //ClockA=ClockB=40/32=1.25MHz
//PWMSCLA=3; //CLOCKA/6; 1.25M/6=208K
//PWMSCLB=3; //CLOCKB/2;
PWMCLK = 0X00; //时钟来源选择pwm01 选择ClockA,pwm23 选择ClockB
PWMPOL = 0XFF; //PWM输出起始为高电平
PWMCAE = 0X00; //左对齐方式
PWMPER01= 20000; //设定通道01输出频率(1.25M/2.5k=50Hz),控制方向
第 3 页共12 页