一、相关基础知识
1、十进制数126,117,97化为二进制、十六进制数
二进制: 1111110 1110101 1100001
十六进制:7E 75 61
2、求+112、-112的原码、反码、补码.
112: 01110000 01110000 01110000
-112:11110000 10001111 10010000
3、什么是BCD码?什么是ASCII码?
BCD四位二进制代替以为十进制数
ASCII计算机中字母,符号所替代的二进制
二、课程基础知识
1. 一个CPU必须包含哪几个部分?
运算器 寄存器组 控制器
2.什么是堆栈?其特点是什么?
堆栈:在RAM中的一种存储空间
特点:先进后出
3.MC9S08AW60型号各部分含义
MC:产品状态合格
9:片内袋带闪存Flash EEPROM
S08:内核类型
AW:子系列型号标志
60:程序存储器大小为60KB
4.MC9S08AW60有内核是多少位的CPU?CPU内的寄存器组?RAM及FLASH容量?都有什么外围模块?最高总线频率为多少?
(1)8位
(2)累加器A;变址寄存器 HX;堆栈指针SP;程序计数器PC;条件码寄存 器CCR (书34页)
(3)RAM容量:2K
FLASH容量:60K
(4)GPIO外围模块:7个端口 54个引脚 2个串行口 2个TPM模块 1个键 盘模块、1个AD模块
(5)最高40MHz的CPU内部时钟频率,20MHZ的总线频率
5.MC9SAW60的存储器映射(书28页)
6.MC9SAW60的最小系统都包含哪几个部分(书31)
AW60芯片的硬件最小系统包括电源与其滤波电路、复位电路、晶振电路及 PLL滤波电路、写入器接口电路
三、GPIO应用
1.MC9S08AW60有几个GPIO口?每个GPIO有哪些寄存器?
(1)7个GPIO接口(54个引脚)
(2)PTxDD端口数据方向寄存器
PTxD端口数据寄存器
PTxPE端口上拉使能寄存器
PTxSE斜率寄存器
PTxDS驱动强度寄存器
2.MC9S08AW60应用工程中关系到GPIO应用的函数中,必须包含哪个头文
件?(书69)
MC9S08AW60.h
3.GPIO应用程序设计,例如:
PTD0、PTD1接两个拨动开关,PTB口接八个LED灯,由两个拨动开关的四种
不同状态,使八个LED分别为八个LED灯亮—灭循环;四个LED灯亮,四个
LED灭交替;左移流水灯:右移流水灯。【注:延时函数,开关对灯的控制
等程序详见实验一】
GPIO初始化程序:
PTBD=0XFF;
PTBDD=0XFF;
PTDDD&=0b11111100;(0xFC)
PTDPE|=0b00000011;
灯的控制:
void Light_on_off(void)
{
PTBD=0x00; //8个LED灯点亮
Delay(1000);
PTBD=0xff; //8个LED灯熄灭
Delay(1000);
}
void Light_half(void)
{
PTBD=0xf0; //4个LED灯熄灭4个点亮
Delay(2000);
PTBD=0x0f; //另4个LED灯亮4个熄灭
Delay(2000);
}
【注:设一个全局变量unit8 a=0xfe;unit8 b=0x7】
void Light_shift_left(void)
{
PTBD=a;
if(a==0x7f)
a=0xfe;
else
{
Delay(1000);
a<<=1; //左移//
a|=0x01; //设置左移后的前一盏灯为灭//
}
}
void Light_shift_right(void)
{
PTBD=b;
if(b==0xfe)
b=0x7f;
else
{
Delay(1000);
b>>=1;
b|=0x80;
}
}
四、SCI
1.串行通讯几种传输方式?串行通讯的双方必须要约定什么?
(1)3种 单工、双工、半双工
(2)串行通信的波特率,奇偶校验方式以及传输的数据模式。
2.什么是中断?MC9S08AW60的中断机制CPU响应中断时将哪几个寄存器压 入堆栈保护?(书131-132)
(1)把来自CPU外围设备的强行任务切换请求称为中断
(2)PC、X、A、CCR
备注:累加器A;变址寄存器 HX;堆栈指针SP;程序计数器PC;条件码寄存器CCR
3.MC9S08AW60有几个串行通讯(SCI)模块?每个模块有几个中断资源?
(1)2个
(2)3个
4.MC9S08AW60共有多少个中断资源?这些中断事件发生时,能不能被CPU 接收到?由什么控制?(书133)
(1)26个
(2)一个中断事件发生时,能不能被CPU接收及响应由两个因素控制,一 是对应事件的中断允许控制位,另一个是CCR中的总的中断屏蔽位I,如TPM1 的溢出中断事件,必须是对应该事件的中断允许控制位TOIE设置为1,及 CCR中的I设置为0,此中断事件才能被CPU响应!
5.掌握实验二工程程序设计,主是掌握SCI初始化函数(相关的波特率、传 递模式,发送等设计)数据发送与接收中断处理函数。【详见SCI实验】
SCI初始化:
void SCIInit(word baud )
{
word Mbaud=0;
Mbaud=20*(10000/(baud/100))/16;
SCI1BDH= (unit8)((Mbaud&0xFF00)>>8);
SCI1BDL= (unit8)(Mbaud&0x00FF);
;
}
数据发送:
void SCISendS(char *p) {
}
void SCISend1(char Sch){
}
中断接收:
void interrupt 17 SCI1Rec(void){
char Rechar,ReS;
while ( word i; if(p==0) return; for(i=0;p[i]!='\0';++i) { } SCISend1(p[i]);
五、键盘与显示
1、MC9S08AW60有几个键盘模块?键盘模块有几个接口?与哪几个GPIO接口 复用?控制寄存器是什么?控制寄存器各位的意义?
(1)1
(2)8个接口
(3)PTG0~4,PTD2,3,7
(4)KBI1SC
(5)D7~D4:键盘中断引脚的触发方式
D3:KBF键盘中断标志位,为1时产生键盘中断
D2:KBACK 键盘中断应答位,写1时,清除键盘中断标志位
D1:KBIE 键盘中断使能位,为1时,开放键盘中断
D0:KBIMOD 键盘中断检测模式
2、矩阵式键盘采用动态扫描方式进行,行线与列线要如何定义?矩阵式键 盘的行线与列线定义好后,每个键的键值如何确定?
(1)将列线n4~n1接在PTD7,PTD3,PTD2,PTG4,且定义为输入并进行上 拉;行线m4~m1接在PTG3,PTG2,PTG1,PTG0,并定义为输出
(2)按PTD7,PTD3,PTD2,PTG4,PTG3,PTG2,PTG1,PTG0的顺序所列 出的二进制码所对应的键值 【注:要会推算出矩阵键盘每个按键的键值!】
3、掌握实验三工程程序设计,主要是键盘的初始化。
void KBInit(void)
{
PTGD &=
PTGDD |= //行线(3-0位)为输出
PTDPE |= //输入引脚(列线)有内部上拉电阻
PTGPE |= KBI1SC &=屏蔽键盘中断(KBIE = 0)
KBI1PE |=
//定义输入引脚(列线)为可中断的键盘引脚
KBI1SC |= ; //清除键盘中断请求(KBACK = 1)
}
六、定时器
1、MC9S08AW60有几个TPM模块?每个模块有几个通道?每个通道都有什么 功能?每个TPM模块有几个中断资源?
(1)2
(2)TPM1:6
TPM2:2
(3)输入捕捉,输出比较,PWM
(4)TPM1有7个中断源(一个溢出事件6个通道事件),TPM2有3个中断 源(一个溢出事件,2个通道事件)
2、TPM模块的核心部分有几个控制寄存器?都有什么功能?如果设计一个 定时间隔时要进行什么设置?(如设计接在B口上的八个LED每隔500ms一 亮一灭)完成这个功能的程序设计?
(1)1个
(2)D7:TOF 定时器溢出标志位
D6:TOIE 定时器溢出中断允许位
D5:CPWMS 中心对齐PWM选择位
D3~D4:CLKS 时钟源选择位
D2~D0:定时器分频因子选择位
(3)【注:程序仅为大体思路,变量的定义等细节自己注意】
100ms
TPM1CNTH=0x00;
TPM1CNTL=0x00;
}
注意:定时器设置TPMxMODH:L的值必须先要列出计算该值的计算过程
计算方式为:
(1/系统时钟)*分频因子=a
设定时间ms/a*10^-3(最后的值不能超过65535)
中断实现灯灭灯亮
interrupt 11 void TPM1_100msover(void)
{
uint8 temp;
Count_100ms++;
while(Count_100ms== PTBD= Count_100ms=;
}
temp = ;
TPM1SC&=~TPM1SC_TOF_MASK;
}
TPM初始化 void TPM1Init(void){ TPM1SC=(); //TPM1时钟源选择系统时钟(20MHZ), 分频因子128 TPM1MODH=; TPM1MODL=; //根据时钟源及分频因子,将TPM1的定时时间 设定为
3、每个TPM模块的每个通道有什么控制寄存器?各控制寄存器的功能? TPM通道数值寄存器:当指定的沿跳变发生(即定时系统捕捉到沿跳变)时,锁存计数寄存器的值 TPM通道状态和控制寄存器: 4、TPM模块的某个通道设置为输入捕捉,并计数捕捉到的脉冲数(例如TPM1的通道0上接入光电编码器,设计完成相关程序使通道0对光电编码的输出脉冲计数)
TPM1的初始化
void TPM1Init(void){
TPM1SC=;
//TPM1不允许溢出中断, 时钟源选择系统时钟(20MHZ), 分频因子64 TPM1MODH=TPM1MODL=; //如果只是输入捕捉并不需要一个特定的定时周期,只要定时 器工作就可以
TPM1CNTH=0x00;
TPM1CNTL=0x00;
}
void TPM1ChInit(void){
//设置通道0允许中断,输入捕捉,捕捉上升沿
TPM1C0SC=; }
中断完成脉冲计数
interrupt 13 void TPM1Ch0_isr(void){
uint8 temp;
uint16 P2_count;
P2_count++;
if (P2_count==65535) {
P2_count=0;
P2Sum++;
}
temp=;
TPM1C0SC&=//清除中断标志位
}
5、TPM模块的某个通道设置为输出比较,输出方波(例如TPM1的通道1输 出10KHZ的方波,设计完成相关程序)
TPM1的初始化
void TPM1Init(void){
TPM1SC= //TPM1不允许溢出中断, 时钟源选择系统时钟(20MHZ), 分频因子2 TPM1MODH=TPM1MODL=; //根据时钟源及分频因子,将TPM1的定时周期设定为0.1ms
【注:周期两倍的关系,即真正计算时间为50us;周期设定计算方法为:1/10kHZ】 TPM1CNTH=0x00;
TPM1CNTL=0x00;
}
void TPM1ChInit(void){
//设置通道1为禁止中断,输出比较输出方式为翻转
TPM1C1SC=;
//以下两行可设可不设
TPM1C1VH=0x01;
TPM1C1VL=0x01;
}
6、TPM模块的某个通道输出某个占空比的PWM脉冲(例如TPM1的通道2输 出20KHZ、占空比为60%的PWM,设计相关程序)
TPM初始化
void TPM1Init(void)
{
//设置TPM1禁止溢出中断,时钟源为总线时钟,2分频
TPM1SC=
TPM1CNTH=0x00;
TPM1CNTL=0x00;
TPM1MODH=0x01;
TPM1MODL= }
void TPM1Ch_Init(void) {
TPM1C2SC=;
//设置TPM1通道2不允许中断,low-truePWM方式 TPM1C2VL=((模数寄存器值/100 )*60 )/256;
TPM1C2VH=((模数寄存器值/100 )*60 )%256;
}
七、AD转换
1、什么是AD转换?什么是AD转换的采样精度?MC9SAW60有怎样的采样精 度?
(1)模\数转换模块,其功能是将电压之类的模拟信号转换为相应的数字信
号
(2)数字量变化一个最小量时模拟信号的变化量,即采样位数
(3)AW60有两种采样精度8位和10位
2、MC9S08AW60有几个AD模块?AD模块有多少路通道?其中能够接入外部 信号的通道有几路?
(1)1
(2)28
(3)16
3、MC9S08AW60的AD转换模块的AD转换触发有几种模式?
2种(软件触发、硬件触发)