复位shift后门怎么用

shift后门怎么用  时间:2021-04-04  阅读:()
1MC9S08DZ学习板使用说明书(Rev0.
2)2装箱清单:以下标配件:MCU_EVM1块DZ_PACK1块串口交叉线1条USB线(B口)1条光盘1张以下为选配件:1602液晶1块12232液晶1块NRF24L01模块1块9V1A电源适配器1个HCSBDMV2仿真器1台USBMULTILIN仿真器1台3目录装箱清单:2目录.
3第1章MC9S08DZ学习板概述.
5第2章MC9S08DZ学习板结构.
72.
1原理图.
72.
2丝印图.
122.
3主要器件152.
4外围接口152.
5拨码开关及跳线说明15第3章CodeWarrior快速入门.
17第4章实验例程.
25实验一复位及看门狗25实验二蜂鸣器实验31实验三LED4位数码管实验.
32实验四独立按键实验33实验五键盘中断实验34实验六行列按键与4位数码管实验35实验七字符液晶1602实验36实验八点阵液晶12232实验374实验九外部中断实验38实验十实时时钟实验42实验十一低电压检测实验45实验十二内部时钟48实验十三TPM实验50实验十四SCI实验52实验十五模拟比较器实验54实验十六ADC实验.
55实验十七IIC模块读写PCF8563实验.
57实验十八IIC模块读写24C02实验59实验十九IO口模拟SPI操作NRF24L01实验.
61实验二十SPI操作NRF24L01实验62实验二十一汽车CAN总线实验.
69实验二十二熟悉存储器70实验二十三MCU运行模式805第1章MC9S08DZ学习板概述MC9S08DZ学习板是基于MC9S08DZ系列芯片开发的一款学习板.
该学习板硬件资源丰富,布局清晰明了,利用该学习板的资源可熟悉和掌握MC9S08DZ系列芯片的功能.
有CAN总线和LIN总线的接口.
本部分将对MC9S08DZ学习板的功能进行简单介绍,以方便用户快速了解该学习板的功能.
下图为MC9S08DZ学习板实物图.
P1-1MC9S08DZ学习板主板图(标准型,不配液晶屏)P1-2MC9S08DZ学习板主板图(字符型,配1602字符液晶)6P1-1MC9S08DZ学习板主板图(点阵型,配12232液晶)该学习板可分18个模块.
下面简单介绍每个功能模块.
DZPack:主要由MC9S08DZ32单片机、复位电路、晶振电路、调试接口组成.
LED:采用4位LED数码管和8个发光二极管,该模块由74HC245芯片驱动.
LCD:提供1个字符液晶接口,可接1602液晶;1个点阵液晶接口,可接12232液晶.
(液晶屏为选配件)KEY:16个行列按键,熟悉扫描按键编程.
2个独立按键,熟悉单片机的口线中断功能.
SOUND:电平驱动一个蜂鸣器.
IRQ:外部中断按键,熟悉单片机的外部中断功能.
TPM:可调试单片机内部定时器相关功能,熟悉单片机的定时器功能,有6路PWMADC:两路ADC输入,熟悉单片机的ADC功能.
ACMP:模拟比较器模块,熟悉内部模拟比较器功能.
ICS:熟悉单片机的内部时钟发生器,总线时钟.
测试点.
RS232:可调试单片机的串口,与PC机或其它RS232设备通过RS232通信.
RS485:可进行RS485通信.
红外:带38kHz调制解调的接口,可与电表或手持抄表器进行红外通信.
LIN:该模块使用TJA1020芯片.
可调试LIN总线.
CAN:可调试S08单片机CAN2.
0通讯协议功能.
IIC:该模块使用PCF8563时钟芯片和24C02EEPROM芯片.
SPI:SPI接口.
接无线芯片NRF24L01,可做无线通信实验.
7第2章MC9S08DZ学习板结构2.
1原理图P2-1SPI接口原理图P2-2IIC原理图P2-3蜂鸣器驱动原理图8P2-44位数码管原理图P2-5LED与按键原理图P2-6外部中断按键原理图P2-6ADC和ACMP原理图9P2-7TPM时钟模块原理图P2-7RS232原理图P2-8CAN原理图P2-9LIN接口原理图10P2-10RS485原理图P2-11红外原理图P2-12LCD原理图11P2-13电源原理图P2-14PACK板接口原理图12P2-15DZ_PACK原理图参见HCS08-DEMO-DEMO学习板原理图.
pdf(HCS08OpenSourceBDM部分原理图被屏蔽)和MC9S08DZ原理图.
pdf.
2.
2丝印图13MCUEVM学习板顶层HCS08-DEMO学习板顶层丝印层HCS08-DEMO学习板底层14EVMPack顶层EVMPack底层EVMPack底层15参见MC9S08DZ学习板顶层.
pdf;MC9S08DZ学习板顶层丝印层.
pdf;MC9S08DZ学习板底层.
pdf.
2.
3主要器件参见HCS08-DEMO料单.
pdf和MC9S08DZ料单.
pdf.
2.
4外围接口MC9S08DZ学习板主要配用2条线缆:USB数据线连接PC的USB接口和学习板的J4;串口线连接PC的串口和学习板的J12.
各接口分布如下图所示:2.
5拨码开关及跳线说明MCU_EVM板(底板)上有2个跳线和11个拨码开关,DZ_PACK板(小板)上有2个跳线,其功能及分布如下:RS232RS485LINCANUSB电源LCD1602LCD12232BDMRF16485终端电阻电阻使能:当需要使用学习板上的RS485终端电阻时,要连接上该跳线.
底板VDD选择:选择底板供电电压,一般选5V即可.
PACK板VDD选择:选择PACK板供电电压,一般选3.
3V即可.
ADC7/IRQ选择:当做IRQ实验时,跳到"IRQ位置(左)";当要用到ADC7时,跳到"ADC7位置(右)"RF:做无线通信实验时,需将该拨码开关拨到"ON"位置(IRQ0和IRQ1只拨1个).
SCI:当做RS232/RS485/LIN/红外实验时,将"TXD(第8位)"拨到"ON",同时"RX_232"、"RX_485"、"RX_LIN"、"RX_IRDA"分别是做RS232/RS485/LIN/红外实验时拨到"ON",其余位拨到"OFF".
I2C:做I2C实验时,将该拨码开关拨到"ON"位置.
中断:做IRQ实验时,将该拨码开关拨到"ON"位置.
LCD控制线:做LCD实验时,将该拨码开关拨到"ON"位置.
LED位选线:做LED实验时,将该拨码开关拨到"ON"位置.
8位数据线:做LED、LCD、行列键盘实验时,都要将该拨码开关拨到"ON"位置.
蜂鸣器及液晶背光:485终端电阻电阻使能底板VDD选择SCII2C中断RFLCD控制线LED位选线8位数据线蜂鸣器及液晶背光行列按键行选线ADCACMPPACK板VDD选择ADC7/IRQ选择17做蜂鸣器实验时,将该拨码开关"BUZZER位(第2位)"拨到"ON"位置;做LCD实验时,将该拨码开关"LIGHT位(第1位)"拨到"ON"位置.
行列按键行选线:做行列按键实验时,将该拨码开关拨到"ON"位置.
ADC:做ADC实验时,将该拨码开关拨到"ON"位置.
ACMP:做模拟比较器实验时,将该拨码开关拨到"ON"位置.
第3章CodeWarrior快速入门(一)安装CodeWarrior软件1)运行CD中的CW_MCU_V6_3_SE\setup.
exe文件.
2)按照提示完成安装.
该免费软件在使用上有一定限制.
当使用汇编语言开发应用程序时,对源代码数量是没有限制的;当使用C语言在HC(S)08/RS08系列单片机上开发应用程序时,对源代码有32K的限制;当使用C语言在ColdFireV1系列单片机上开发应用程序时,对源代码有64K的限制.
(二)、安装仿真器驱动如果您用的是飞锐泰克的BDMV2仿真器请安装"OpenSourceBDM"驱动,如果您用的是P&E的USBMULTILINK仿真器,系统会自动安装"USB18MULTILINK"驱动.
驱动程序安装过程详见仿真器说明书.
(三)、创建一个新工程1)开始>程序>FreescaleCodeWarrior>CWforMicrocontrollersV6.
3选择CodeWarriorIDE.
IDE开始运行,出现Startup窗口CreateNewProject:创建一个新工程LoadExampleProject:加载一个示例工程LoadPreviousProject:加载以前打开过的工程RunGettingstartedTutorial:运行CodeWarrior软件帮助文档StartUsingCodeWarrior:返回CodeWarrior主窗口Startup窗口2)选择CreateNewProject,出现MicrocontrollersNewProject窗口,见新建工程向导1.
Selectthederivativeyouwouldliketouse对话框中选择所使用的单片机型号Chooseyourdefaultconnection对话框选择工程所使用的开发工具,选择每一种开发工具,在下面的显示栏中显示其相关信息.
FullChipSimulation:软件仿真P&EMultilink/CyclonePro:P&E公司设计的开发工具SofTecHCS08:SofTec公司设计的开发工具HCS08OpenSourceBDM:USB型开源BDM开发工具19新建工程向导13)展开HCS08下的HCS08DFamily,选择MC9S08DZ64;"Chooseyourdefaultconnection"对话框中选择HCS08OpenSourceBDM;单击"下一步"出现新建工程向导2窗口.
在该对话框可以选择开发语言,这里我们选择C语言开发应用程序.
新建工程向导2在Projectname对话框中输入新建工程名称;点击Location对话框下的Set按钮可以设置工程保存位置.
(注:此时可以点击"完成"按钮,以下设置由CodeWarrior自动完成.
)4)单击"下一步"出现新建工程向导3,在该步骤中,可以向工程中添加或移除文件.
20新建工程向导35)单击"下一步"出现新建工程向导4,用户可以选择"DeviceInitialization"或"ProcessorExpert"由软件自动完成中断向量,外围模块等初始化工作.
这里我们选择"None".
新建工程向导46)单击"下一步"出现新建工程向导5,选择"ANSIstartupcode","Small","None",单击下一步出现新建工程向导6.
在该对话框下可以选择startup代码类型,建议选择minimalstartupcode;设置RAM存储模式,建议选择Tiny;设置是否支持浮点格式,建议选择None.
详细介绍请参照参考资料文件夹下的"CW6.
3开发环境介绍".
21新建工程向导5新建工程向导67)单击"完成".
IDE会自动生成工程文件.
双击"main.
c"文件可对其进行修改.
其他文件功能介绍请参考参考资料文件夹下的"CW6.
3开发环境介绍".
22CW6.
3编辑窗口(四)、调试新建工程单击按钮会依次出现如下对话框.
擦除提示对话框(单击"OK")23代码下载对话框执行BDM命令调试环境窗口3)熟悉调试窗口.
调试窗口是一个用户可自定义的调试环境.
其中:Source:源文件窗口,在该串口单击鼠标右键可以添加/取消断点,添加/取消触发点等操作,支持最多3个断点.
Assembly:汇编窗口,该窗口为Source中C语言程序对应的汇编程序,在该窗口单击鼠标右键可以添加/取消断点,添加/取消触点等操作.
24Register:寄存器窗口,显示CPU各寄存器的内容,双击可修改寄存器的值.
Memory:存储器窗口,显示整个存储器的内容,双击某个存储单元可修改该存储单元的内容.
在该窗口单击鼠标右键输入地址,可查看该地址的存放的数据.
Command:命令窗口,显示整个调试系统的通信命令.
Procedure:过程窗口,在该窗口显示整个工程所使用到的函数.
Data:1,Data:2:数据窗口,该窗口显示各种变量的存储地址,内容.
在窗口单击右键,选择"AddExpression…"可以增加要显示的变量.
单击该按钮,程序将开始运行.
如有断点,程序运行到断点处停止.
快捷键F5.
程序停止状态下,单击该按钮,程序singlestep方式运行,会停止在子函数内部.
快捷键F11.
程序停止状态下,单击该按钮,程序stepover方式运行,不会停止在子函数内部.
快捷键F10.
当singlestep运行方式下,进入某一个子函数内部后,单击该按钮,程序执行完该子函数,停止在紧随该子函数的外部的下一条语句.
快捷键shift+F11.
程序停止状态下,单击该按钮,程序assemblystep方式运行,该方式与singlestep方式相似,但是以汇编语句为一单步.
捷键ctrl+F11.
当程序运行时,单击该按钮,程序当停止.
单击该按钮,程序将复位.
25第4章实验例程实验一复位及看门狗1、实验功能介绍1、1特征多种复位源,系统配置灵活,可靠-上电检测-低电压检测-复位引脚上施加复位信号-看门狗复位-非法操作码复位-后台调试复位复位状态寄存器(SRS)记录最近一次发生的复位源每个片上外围功能模块有独立的中断向量1、2MCU复位复位MCU操作为用户提供一种预知的设置状态.
复位期间,大多数控制和状态寄存器被强制复位到初始值,复位向量装载到程序计数器中.
片上外围模块禁止,I/O初始化为通用的高阻抗输入,且内部上拉取消.
中断禁止.
用户程序初始化程序可以初始化堆栈指针SP26和系统控制配置.
为了与老型号芯片兼容注意:SP复位之后为0x00FF.
7个复位源:上电复位(POR)低电压复位(LVD)看门狗复位(COP)非法操作码复位后台调试强制复位复位引脚时钟发生器锁定失败和时钟丢失复位除了后台调试强制复位,其他每个复位源与复位状态寄存器相关联.
MCU进入复位状态,内部时钟发生器(ICG)模块打开,工作于自时钟模式,时钟频率为fself_reset,复位引脚被MCU拉低,持续34个内部总线时钟周期,然后该引脚被释放且内部上拉.
再经过38个周期,采样该引脚,决定是否是该引脚引发的复位.
也就是说用户通过复位引脚复位单片机,那么将复位引脚拉低,并且低电平维持时间至少(34+38)个总线周期.
1、3看门狗(COP)当用户程序"跑飞",看门狗产生一个强制系统复位.
为了阻止看门狗复位,用户程序必须定期的复位COP计数器.
任何复位之后,SOPT寄存器中的COPE位=1,使能看门狗复位.
如果用户程序禁止看门狗复位功能,通过清除COPE位可以关闭看门狗.
向SRS寄存器写任何值,COP计数器会复位.
但该写操作并不会影响只读寄存器SRS内容.
用户程序可以使用COPE,COPCLKS和COPT的复位默认值,建议用户程序复位初始化过程中写一次SOPT寄存器,可以避免在用户程序运行过程中意外修改它们.
而最初的对SOPT写操作将复位COP计数器.
写SRS寄存器操作(清看门狗操作)不能放在中断服务程序(ISR)中,这是因为尽管主程序已经"跑飞",但ISR仍会定期执行,从而失去看门狗监测的功能.
当MCU处于后台调试模式下,COP计数器不会递增.
当MCU处于处于STOP模式,看门狗时钟源选择的是总线时钟的情况下,COP计数器会停止计数.
一旦MCU脱离后台调试模式,COP计数器继续递增式计数.
看门狗时间间隔可选择总线时钟的2的13次方或2的18次方个周期.
1、4相关寄存器1、4、1系统复位状态寄存器:SRS($1800)该寄存器的7个只读位用于表明最近一次发生复位的复位源.
当调试主机强制MCU复位,那么SRS不会置位.
写该寄存器操作会清除看门狗计数器,而不会影响该寄存器的内容.
277POR上电复位0:不是POR引起复位1:POR导致复位6PIN外部复位引脚0:不是外部复位引脚引起复位1:外部复位引脚导致复位5COP看门狗复位0:不是看门狗引起复位1:看门狗引起复位4ILOP非法操作码复位0:不是非法操作码引起复位1:非法操作码导致复位3ILAD非法地址0:不是非法地址引起中断1:非法地址导致中断2IOC外部时钟发生器模块复位0:不是外部时钟发生器引起复位1:外部时钟发生器导致复位1LVD低电压检测复位0:不是低电压检测模块或上电复位引起复位1:低电压检测或上电导致复位1、4、2系统后台调试强制复位寄存器:SBDFR($1801)该寄存器只包含一个只写位.
像WRITE_BYTE后台调试指令必须用于写SBDFR寄存器.
0BDFR后台调试强制复位:通过后台调试命令写1,强制MCU复位.
该位不能被用户程序写.
1、4、3系统选项寄存器:SOPT($1802)28该寄存器在任何时候均可以读取.
复位之后,只允许写一次.
用户在复位之后初始化过程中,应写一次该寄存器,尽管写入的值与该寄存器复位之后相同.
7COPE看门狗使能位0:关闭看门狗;1:看门狗使能6COPT看门狗溢出时间0:较短的溢出时间间隔(2的13次方个总线周期);1:较长的溢出时间间隔(2的18次方个总线周期)5STOPESTOP模式使能:如果STOPE设置为0,而执行STOP指令,那么会产生一个非法操作码复位.
0:禁止进入STOP模式;1:允许进入STOP模式2、流程图293、实验现象3、1打开源代码文件下的复位实验下的复位实验.
mcp.
3、2单击进入调试环境窗口.
进入调试窗口后,程序停止在"EnableInterrupts;/*enableinterrupts*/"语句.
该过程其实已经执行完start08.
c程序.
3、3在调试窗口中单击强制复位按钮,观测Register窗口:寄存器窗口从上面的窗口我们可以看出MCU复位之后,SP的值为0XFF,PC指向复位向量$807B,CPU的条件寄存器中的I位置位(禁止全局中断).
在Memory窗口单击右键,出现如下对话框:30Memory窗口选择Address出现如下对话框:在上面的地址中输入"1800",观测记录复位源寄存器SRS的值.
此时SRS的值为0x00,这是因为我们刚才的操作是执行的后台调试强制复位操作,该操作会将该寄存器清零.
3、4观测复位按键的作用按一下学习板上子板的复位按键SW1,我们会观测到SRS寄存器的值变为0x40,表明MCU复位源为复位引脚触发的复位.
同时MCU已经运行起来了.
4、程序代码参见源代码下的"复位实验".
31实验二蜂鸣器实验1、实验功能介绍本实验单片机IO口的输出功能,通过NPN三极管驱动蜂鸣器.
做本实验时需将拨码开关"SW4"的第2位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IO),蜂鸣器响.
复位喂狗3、实验现象运行"Buzzer实验",蜂鸣器响.
4、程序代码参见Buzzer实验32实验三LED4位数码管实验1、实验功能介绍本实验采用分时扫描的方式驱动8个发光二极管和4位数码管,共阴极接法,段驱动采用74HC245,位选驱动用NPN三极管.
做本实验时需将拨码开关"SW2"和"SW5"的所有位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IO)复位调用显示函数喂狗显示函数开始关闭显示,片选数码管,显示"2"关闭显示,片选数码管,显示"0"关闭显示,片选数码管,显示"1"关闭显示,片选数码管,显示"0"返回3、实验现象运行"LED实验",8个发光二极管轮流点亮,数码管显示"2010".
4、程序代码参见LED实验33实验四独立按键实验1、实验功能介绍通过按动按键,驱动相应的灯进行指示.
学习i/o口的输入功能.
做本实验时需将拨码开关"SW9"的所有位拨到"ON"位置.
2、流程图(略)3、实验现象按SW10,D2~D9亮的变灭,灭的变亮;按SW8,D2~D9切换连续点亮和间隔点亮模式.
4、程序代码参见Key实验.
34实验五键盘中断实验1、实验功能介绍通过按动按键,驱动相应的灯进行指示.
采用i/o的沿触发中断方式.
做本实验时需将拨码开关"SW9"的所有位拨到"ON"位置.
2、流程图(略)3、实验现象开始D2~D5灭,D6~D9亮.
按SW8,D2~D9亮的变灭,灭的变亮.
4、程序代码参见KBI实验.
35实验六行列按键与4位数码管实验1、实验功能介绍本实验采用分时扫描的方式读取按键并驱动8个发光二极管和4位数码管,共阴极接法,段驱动采用74HC245,位选驱动用NPN三极管.
做本实验时需将拨码开关"SW2"、"SW7"和"SW5"的所有位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IO)复位调用扫描函数喂狗扫描函数开始关闭显示,片选数码管,显示"4"关闭显示,片选数码管,显示按键编号个位关闭显示,片选数码管,显示按键编号十位关闭显示,片选数码管,显示"3"返回闭显示,片选按键第1行,读取按键值.
闭显示,片选按键第2行,读取按键值.
3、实验现象运行"Key_LED实验",按SW11~SW26,数码管后2位显示按键编号(10进制"00"~"15")4、程序代码参见LED实验36实验七字符液晶1602实验1、实验功能介绍本实验单的IO口控制1602字符液晶的显示.
做本实验时需将拨码开关"SW2"和"SW6"的所有位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IO)复位显示字符喂狗3、实验现象运行"LCD1602实验",LCD1602液晶屏幕上显示"Free-Techwww.
myhcs08.
com"字样.
4、程序代码参见LCD1602实验37实验八点阵液晶12232实验1、实验功能介绍本实验单的IO口控制12232点阵液晶的显示.
做本实验时需将拨码开关"SW2"和"SW6"的所有位拨到"ON"位置,"SW4"的第1位(LIGHT位)拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IO)复位显示字符喂狗显示图像3、实验现象运行"LCD12232实验",LCD12232液晶屏幕上轮流显示"飞锐泰克伴您成长010-62669831"字样和一幅图象,背光每一轮亮灭变化.
4、程序代码参见LCD12232实验38实验九外部中断实验1、实验功能介绍做本实验时需将拨码开关"SW9"的第一位拨到"ON"位置,"SW2"、"SW5"的所有位拨到"ON"位置.
1、1中断介绍中断是指保存当前CPU状态和寄存器,执行中断服务程序,中断服务程序执行完毕后恢复CPU状态,MCU从被中断打断的地方继续执行.
IRQ引脚的边沿事件或计数器溢出事件等产生硬件中断.
用户应用程序执行特定指令可以产生软件中断(SWI),后台调试模块在一定条件下也可以产生SWI.
当某一中断事件发生,与该事件相对应的只读标志将被置位.
如果该中断未使能,那么CPU不会对该中断作出反映.
CCR寄存器中的全局中断屏蔽位I在复位之后为1,屏蔽掉所有中断事件.
在用户程序完成堆栈指针和其他设置之后,清除I,允许CPU响应中断事件.
当CPU接受到一个有效的中断请求,在响应之前,它会执行完当前运行的指令,然后逐周期执行以下过程:保存CPU寄存器到堆栈中设置CCR寄存器中的I=1,禁止全局中断获取当前所有挂起的待处理中断事件中最高优先级中断向量预取中断向量的地址排列到指令队列中当CPU响应中断后,I自动置为1,避免中断嵌套.
通常,ISR执行完毕后,I恢复为0(CCR从堆栈弹出).
如果在ISR中,清除I(即设置I=0),那么CPU有可能在当前中断事件未完成之前响应其他中断事件,即中断潜套.
中断潜套可能对用户程序调试带来麻烦.
当ISR执行到RTI指令,CCR,A,X,PC从堆栈恢复.
注意:为兼容MC68HC08,H寄存器不会自动压栈和出栈.
用户程序完成对H的压栈出栈.
当然,用户可在自己的中断服务程序一开始将I清零,从而使能全局中断.
那么当前运行的中断服务程序可以被其他中断打断,CPU运行新的中断服务程序,从而形成中断嵌套.
用户在使用中断嵌套时会对调试带来不便,故建议避免使用中断嵌套.
在中断服务程序的开始,用户程序应清掉产生该中断的标志位,其目的是同一中断源产生另外一个中断事件能够被记录,并在完成当前中断服务程序之后能够得到CPU的响应.
39压栈、出栈图中断向量表1、2外部中断引脚40外部中断由IRQ的状态和控制寄存器IRQSC管理.
当IRQ使能,同步逻辑电路监测该引脚是否边沿事件或边沿-电平事件发生.
IRQ可以用于唤醒STOP模式下的MCU.
1、2、1引脚配置选项设置IRQSC寄存器中的IRQPE=1,那么该引脚作为IRQ输入功能.
IRQMOD寄存器决定引脚中断模式:沿触发中断或边沿-电平触发中断.
IRQEDG寄存器决定引脚中断信号边沿或电平的极性.
BIH和BIL指令可用于检测引脚信号电平.
1、2、2边沿和电平触发模式IRQMOD控制位设置外部中断输入信号边沿有效还是电平有效.
在边沿-电平有效模式下,当检测到有效的边沿信号,IRQF标志就会置位,如果该引脚一直处于有效的触发电平状态,那么该中断标志会连续被置位.
1、3相关寄存器外部中断引脚状态和控制寄存器:IRQSC($001C)5IRQEDGIRQ边沿选择:可读写;该位用于选择边沿极性.
与IRQMOD位配合使用0:下降沿或下降沿/低电平有效(电平方式)1:上升沿或上升沿/高电平有效(电平方式)6IRQPDD口线驱动使能,减少干扰;0:使能驱动;IRQPE=1;1:不使能驱动;IRQPE=1;4IRQPEIRQ管脚使能:可读写0:关闭IRQ功能1:IRQ使能3IRQFIRQ中断标志0:无IRQ请求1:有IRQ请求2IRQACKIRQ确认:只写写1清除IRQF,但在边沿-电平触发模式下,如果IRQ引脚处于中断有效电平状态,向IRQACK写1不会清除IRQF1IRQIEIRQ中断使能:可读写0:关闭IRQ中断功能1:IRQ中断使能0IRQMODIRQ触发方式:可读写0:IRQ边沿触发方式1:高电平或低电平触发方式2、流程图413、实验现象3、打开源代码中的IRQ实验.
mcp文件.
3、调试环境下单击运行按键,学习板上的D2~D9点亮.
3、按一下学习板(底板)上的SW8按键,会发现D2~D9状态的改变.
3、示例程序未做按键去抖,用户可对按键加消抖处理.
4、程序代码参见源代码中的IRQ实验.
42实验十实时时钟实验1.
实验功能介绍做本实验时需将拨码开关"SW2"、"SW5"的所有位拨到"ON"位置.
1、1实时时钟中断实时时钟中断可以用于产生定期中断事件.
该实时中断时钟源可选择为1kHz内部时钟源32k源或外部时钟.
在低功耗的应用中很多.
1kHz内部时钟源是一个独立于系统总线的时钟源,只用于RTI模块,COP模块(只对某些MCU).
如果使用外部时钟源,必须对相关控制位进行设置.
寄存器SRTISC中的RTICLKS位用于选择时钟源.
实时中断在正常模式,等待模式或STOP3模式下可以使用内部时钟源或外部时钟源.
如果在STOP3模式中使用外部晶振,必须设置OSCSTEN=1,RANGE=0.
只有选择内部时钟源,才能唤醒处于STOP2模式下的MCU.
SRTISC寄存器包括一个只读状态标志,一个只写确认位,3个可读写控制位(用于选择7种唤醒间隔之一,同时该3个控制位用于关闭实时时钟的时钟源.
RTI有自己的中断使能位RTIE.
最大可以26.
6分钟唤醒.
1、2系统实时时钟状态和控制寄存器-SRTISC($1808)7实时时钟中断标志,只读43RTIF0:定时唤醒计数器未溢出1:定时唤醒计数器溢出,产生中断,该位写一清零6RTICLKS15RTICLKS0实时时钟中断时钟选择00:内部1-kHz振荡;01:外部时钟;10,11;32K内部源4RTIE实时时钟中断使能0:禁止实时时钟中断;1:实时时钟中断使能3:0RTCPS[3:0]实时时钟定时选择,RTCPS=0时关闭实时时钟计数功能见下表实际的计数值,复位或初始化后为零.
溢出的模数设定值,设定溢出中断值.
计数值计到该数时会启动中断.
2、流程图443、实验现象3、1打开RTI实验.
mcp.
3、2调试环境下单击全速运行按键,数码管显示"0000"并开始秒计数(一秒钟加1).
蜂鸣器每10秒响一次.
4、程序代码参见RTI实验.
45实验十一低电压检测实验1、实验功能介绍做本实验时需将拨码开关"SW2"的第1位拨到"ON"位置.
1、1低压检测功能介绍低电压检测系统用于保护处于低电压条件下的存储器中数据和在电压波动条件下控制MCU系统状态.
该系统包括上电复位(POR)和低电压检测(LVD)电路.
SPMSC1寄存器中的LVDE=1,LVD使能.
SPMSC2寄存器中的LVDV位选择跌落电压.
当MCU处于STOP模式下,LVDSE未设置,那么LVD功能关闭.
当LVDSE和LVDE位都被置位,那么MCU不能进入STOP2模式.
1、2上电复位上电或电源跌落到VPOR以下,POR电路将产生复位条件.
当电源电压上升,LVD电路使MCU处于复位状态,直到电源电压大于VLVDL.
所以上电复位之后,SRS寄存器中的POR和LVD为均为1.
1、3LVD复位如果LVDRE=1,那么LVD电路检测到低电压情况下将产生一个复位.
直到电源电压大于VLVDV,MCU一直处于复位状态.
LVD复位或POR后,SRS的LVD位均被置位.
1、4LVD中断设置LVDE=1,LVDIE=1,LVDRE=0,LVD电路检测到低电压产生一个中断,LVDF被置为1.
1、5低电压告警LVD系统有一个低电压报警标志LVW,该标志用于表征电源电压接近但大于LVD电压.
LVW置位不会产生中断;用户程序可以设定两个电压报警值,VLVWH和VLVWL.
1、2相关寄存器介绍1、2、1系统电源管理状态和控制寄存器1-SPMSC1($1809)467LVDF低电压检测标志,只读1:表明低电压事件发生6LVDACK低电压检测确认,只写写1清除LVDF5LVDIE低电压检测中断使能控制位0:中断禁止;1:中断使能4LVDRE低电压检测复位使能控制位0:LVDF不产生硬件复位;1:LVDF=1时产生强制复位3LVDSE低电压检测是否在停止模式可用0:STOP模式下LVD禁止;1:STOP模式下LVD可运行2LVDELVD使能0:LVD关闭;1:LVD使能0BGBE能系缓冲使能:ADC模块的每一通道上使能内部带隙电压控制位0:关闭能系参考电压;1:使能能系参考电压1、2、2系统电源管理状态和控制寄存器2-SPMSC2($180A)7LVWF低电压报警标志0:未出现低电压;1:出现或出现过低电压6LVWACK低电压报警确认写1清除LVWF5LVDV低电压检测电压选择0:VLVD=VLVDL1:VLVD=VLVDH4LVWV低电压报警电压选择0:VLVW=VLVWL1:VLVW=VLVWH3PPDF该位表明MCU是从STOP2模式恢复0:MCU不是从STOP2模式唤醒471:MCU从STOP2模式唤醒2PPDACK清除PPDF位写1清除PPDF0PPDC该位用于选择STOP2或STOP3模式0:STOP3模式允许1:STOP2模式允许2、流程图运行start08.
c程序初始化(初始化IO,设置LVD)清外部中断标志LVD中断服务程序点亮D2复位主循环返回3、实验现象1、打开LVD实验.
mcp,把程序下载到学习板中,关闭调试窗口.
2、拨掉供电电源,VDD会逐渐下降,当降到电压检测门限(3V左右)时,会观测到D2点亮.
D2的点亮就是低电压检测中断复位程序的工作.
很快D2又灭了,是因为电容的电耗完了.
4、程序代码参见LVD实验.
48实验十二内部时钟1、实验功能介绍做本实验时需将拨码开关"SW2"、"SW5"的所有位拨到"ON"位置.
外接4M晶振总线实现8M.
2、流程图493、实验现象发光管d2~D9为总线频率闪亮,pta0输出总线2分频修改下面3个参数(P、M、G)值,会使D2~D9闪烁速度变化.
4、代码参见MCG_PLL实验.
50实验十三TPM实验1、实验功能介绍熟悉定时器的输入捕捉,输出比较,及pwm输出功能.
做本实验时需将拨码开关"SW2"、"SW5"的所有位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IO,设置TPM)复位主循环(D6~D9循环点亮)溢出中断服务程序通道中断服务程序清中断标志清除中断标志返回返回D2(TPM1)、D3(TPM2)闪烁执行相应中断服务程序3、实验现象3、1运行TPM自由计数实验,会观测到D6~D9循环点亮,D2、D3在TPM1和TPM2溢出时闪烁.
3、2运行TPM边沿对齐实验,可以观测到D6~D9循环点亮,PWM0~PWM5上有方波输出.
514、程序代码参见"TPM自由计数实验","TPM边沿对齐PWM实验".
52实验十四SCI实验1、实验功能介绍通过串口1与pc机进行串行通讯.
做RS232实验时将拨码开关"SW30"的第5、8位拨到"ON"位置.
做RS485实验时将拨码开关"SW30"的第4、8位拨到"ON"位置.
做红外实验时将拨码开关"SW30"的第6、8位拨到"ON"位置.
做LIN实验时将拨码开关"SW30"的第2、3、8位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(时钟初始化,外部中断初始化,串口初始化)清外部中断标志外部中断服务程序置中断发生标志复位启动串口发送返回是否有外部中断发生NY53清接收中断标志串口发送中断服务程序返回一帧数据是否发送完成关闭发送器Y发送一字节数据N清接收中断标志串口接收中断服务程序返回保存接收到的一字节数据3、实验现象3.
1用RS232交叉线将开发板与PC机相连.
3.
2用RS232-485转换器将开发板与PC机相连.
3.
3用RS232-红外转换器将开发板与PC机相连.
3.
3用RS232-LIN转换器将开发板与PC机相连.
上面4种连接方式每次只连1种,进行下面的实验:打开PC串口调试器,设置好通信波特率和数据格式(通信波特率1200bps;8位数据位,无奇偶校验),不选Hex显示.
下载程序到目标板,运行程序.
在PC串口调试器上会看到"UUU……".
4、源代码参见SCI实验.
54实验十五模拟比较器实验1、实验功能介绍模拟比较器输出1时D1亮,输出0时D1灭.
模拟比较器输出的上升沿D2取反.
做本实验时需将拨码开关"SW2"、"SW5"、"SW3"的所有位拨到"ON"位置,"SW1"的所有位拨到"OFF"位置.
2、流程图运行start08.
c程序初始化(ACMP初始化)清中断标志ACMP中断服务程序D2取反复位返回主循环(喂狗)3、实验现象调节电位器R2、R3改变模拟比较器同相、反相输入电压值,观察D1、D2变化.
模拟比较器输出1时D1亮,输出0时D1灭.
模拟比较器输出的上升沿D2取反.
4、程序代码参见ACMP实验.
55实验十六ADC实验1、实验功能介绍调节电位器改变ad采样数值,通过数码管进行显示(10进制).
通道ad1和ad0;输入范围0-5v,对应输出0-4095,12位做本实验时需将拨码开关"SW1"、"SW2"、"SW5"的所有位拨到"ON"位置,"SW3"的所有位拨到"OFF"位置.
2、流程图运行start08.
c程序初始化(ADC初始化)清中断标志ADC转换完成中断服务程序保存转换结果复位返回主循环(数码管显示ADC0的转换结果10进制显示)启动下一次转换3、实验现象3、1打开ADC实验.
mcp,全速运行程序,旋转电位器R2,数码管显示AD转换值(十进制).
3、2在ADC转换完成中断服务程序中设置一个断点,如下图所示:563、3单击全速运行按键,程序停在断点处.
观察Data:1窗口,如下图所示说明通道0转换结果为0.
3、4再单击全速运行按键,观察Data:1窗口,如下图所示:说明通道1转换结果为0X3FF.
3、5旋转电位器R2将改变ADC_AD0的电压值;旋转电位器R3将改变ADC_AD1的电压值.
按上面的方法观测ad_h和ad_l的变化.
4、程序代码参见ADC实验.
57实验十七IIC模块读写PCF8563实验1、实验功能介绍标准的iic接口的时钟芯片,可以实现iic主从通讯,读取时时的时钟.
做本实验时需将拨码开关"SW2"、"SW5""SW28"的所有位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化时钟,初始化串口,初始化IIC)复位是否有外部中断发生清外部中断标志字读取PCF8563通过LED数码管显示出来分和秒.
Y初始化时间,日期N583、实验现象3、1将IIC实验程序下载到学习板中,通过LED数码管显示出来分和秒.
4、程序代码参见IIC_8563实验.
59实验十八IIC模块读写24C02实验1、实验功能介绍标准的iic接口的EEPROM芯片,可以实现iic主从通讯,向24C02写6个字节并读出.
做本实验时需将拨码开关"SW28"的所有位拨到"ON"位置.
2、流程图运行start08.
c程序初始化(初始化IIC)复位从24C02读出6个字节喂狗向24C02写6个字节3、实验现象3、1将IIC_24C02实验程序下载到学习板中,观察读出缓冲区的变化.
4、程序代码60参见IIC_24C02实验.
61实验十九IO口模拟SPI操作NRF24L01实验1、实验功能介绍通过IO口模拟SPI接口操作NRF24L01,实现2.
4GHz无线通信.
做本实验时需将拨码开关"SW20"的2~8位拨到"ON"位置,第1位拨到"OFF"位置;"SW2"的所有位拨到"ON"位置;"SW5"的第1位拨到"ON"位置.
3、实验现象用2个EVM板插上NRF24L01无线模块,下载"NRF24L01_IO实验\NRF24L01_IO",可以看到D2~D5、D6~D9轮流点亮.
D2~D5是自由轮流点亮,D6~D9是接收到另一块板发过来的数据控制的点亮与否.
关掉一块板,发现开着的板D6~D9不动了.
说明D6~D9轮流点亮是因为收到了数据.
4、程序代码参见NRF24L01_IO实验62实验二十SPI操作NRF24L01实验2、实验功能介绍通过硬件SPI接口操作NRF24L01,实现2.
4GHz无线通信.
做本实验时需将拨码开关"SW20"的2~8位拨到"ON"位置,第1位拨到"OFF"位置;"SW2"的所有位拨到"ON"位置;"SW5"的第1位拨到"ON"位置.
1、1特点可设置为主机或从机工作方式全双工模式或单线双向模式可编程的传送速率使用相互独立的发送和接受数据寄存器,实现双缓存冲操作可设置时钟极性和相位从机选择输出可选择从最高位或最低位开始传送SPI系统连接图主机初始化SPI接口.
在一次SPI传送发生时,一个字节通过主出从入(MOSI)引脚移位输出;同时另一个字节从主入从出(MISO)引脚输入.
这个传送过程可以理解为主从SPI移位寄存器相互交换数据.
SPSCK为主设备输入给从设备的时钟信号.
从设备的SS(低有效)引脚必须拉低.
63SPI原理框图SPI的中心元件为SPI移位寄存器.
当写SPI1D时实际上是将数据写入双缓冲冲器中,然后该数据通过SPI移位寄存器,开始数据转移.
当字节数据移位完毕后,数据转移到双缓冲接收器中,通过执行读取SPI1D来读取该数据.
当SPI配置为主设备,SPSCK引脚作为时钟输出;MOSI作为移位寄存器的输出;MISO作为移位寄存器的输入.
当SPI配置为从设备,SPSCK引脚作为时钟输入,MISO作为移位寄存器的输出;MOSI作为移位寄存器的输入.
SPI的外部连接:主从设备的SPSCK相连;MISO相连;MOSI相连.
1、2SPI波特率发生器SPI波特率发生器64时钟源为总线时钟,经过两级分频得到SPI通信的1位时钟.
1、3相关寄存器1、3、1SPI控制寄存器1(SPI1C1)7SPIESPI中断允许位0:不允许由SPRF和MODF产生中断1:允许SPI接收缓存满标志SPRF或模式错误标志MODF产生中断6SPESPI系统使能:禁止SPI功能,将停止正在传送的过程,清除数据缓冲;SPRF置0,SPTEF置1(表明SPI发送数据缓冲为空)0:停止SPI1:允许SPI5SPTIESPI传送中断允许位0:不允许SPTEF产生中断;1:允许SPI发送缓冲器空标志SPTEF产生中断4MSTR主/从模式选择控制位0:SPI模块配置为从机模式;1:配置为主机模式3CPOL时钟极性控制位0:选择高电平有效时钟,SPSCK空闲状态为低电平;1:选择低电平有效时钟,SPSCK空闲状态为高电平2CPHA时钟相位控制位0:在SPI数据传送的第1个周期的中间时刻产生第一个SPSCK跳变沿1:在SPI的数据传送的第1个周期的开始时刻产生第一个SPSCK跳变沿1SSOE从机选通控制位该控制位与SPIC2中的MODFEN控制位一起控制SS引脚,见SS引脚功能表0LSBFESPI数据传送起始位置控制位0:SPI数据传送从最高位开始1:SPI数据传送从最低位开始SS引脚功能表注意:不要在SPI禁止的情况下,改变CPHA位的值.
651、3、2SPI控制寄存器2(SPI1C2)4MODFEN主机模式检错功能允许控制位.
该位对于从设备没有意义.
作为主设备时,该位与SPI1C1的SSOE位一起作用.
见上表.
3BIDIROE半双向模式输出允许控制位.
该位只有在SPC0=1时有效0:SPI的I/O作为输入端口;1:SPI的I/O作为输出端口1SPISWAISPI在WAIT模式下的停止控制位0:在WAIT模式仍继续运行;1:在WAIT模式下,停止SPI时钟0SPC0SPI引脚控制位:如果MSTR=0即MCU作为从机,SPI模式使用MISO引脚作为半双向的数据传送;如何MSTR=1即MCU作为主机,SPI模块使用MOSI引脚作为半双向的数据传送.
0:SPI进入全双工模式(输入/输出采用独立的信号线)1:SPI进入半双工工作模式1、3、3SPI波特率寄存器(SPI1BR)6:4SPPR[2:0]SPI波特率预分频器2:0SPR[2:0]SPI分频因子SPI波特率预分频器66SPI分频因子1、3、4SPI状态寄存器(SPI1S)7SPRFSPI接收缓冲满标志位-当SPI数据传送完成后,SPRF被置1,说明接收到的数据可以从SPI数据寄存器读出.
清除该位方法:先读取SPRF标志位,然后读取SPI数据寄存器0:接收数据缓冲器中无有效数据;1:接收数据缓冲器中数据有效5SPTEFSPI发送缓存空标志位.
当SPI发送缓存空时,该标志置1.
清除方法:通过读取SP1S寄存器,接着向SPI1D写入一个数据.
在向SPI1D写数据时前,必须先读取SPI1S,否则向SPI1D写数据被忽律.
如果SPTIE位置位,SPTEF置位将产生一个SPTEF中断.
SPTEF会自动设置当数据从发送缓冲转移到发送移位寄存器.
空闲模式下,当数据从发送缓存转移到移位寄存器,几乎同时该位被置位,从而允许下一个数据写入到发送缓冲器中.
当在移位寄存器中的数据传送完毕后,那么发送缓冲器中的数据就会自动移到移位器中,SPTEF置位.
0:SPI发送缓存非空1:SPI发送缓存空4MODF主机模式错误标志-当SPI配置为主机模式,从机选择引脚变低,表明其他SPI设备也配置为主机模式.
SS引脚作为模式错误标志当MSTR=1,MODFEN=1,SSOE=0;否则MODF不会置位.
通过读取MODF位,然向SPI1C1寄存器写数据,可以清除该位.
0:无模式错误1:检测到模式错误671、3、5SPI数据寄存器(SPI1D)读取该寄存器返回接收数据缓存中的数据.
写该寄存器将数据写入发送数据缓存.
当SPI配置为主机,向发送数据缓存写数据将启动SPI发送.
不应向数据发送缓冲器写入数据,除非SPTEF置位.
SPRF位置位之后,在传送另一个数据之前,可以读取SPI1D中的数据.
如果在转移一个新数据之前,未从接收数据缓冲器中读出数据,那么将导致接收溢出,造成数据丢失.
1、4功能描述主机模式下,启动SPI数据转移的方法为:检查SPI发送缓冲器是否为空即SPTEF是否为1,然后向SPI数据寄存器写入要发送的数据.
当SPI的移位寄存器可用,该数据从发送数据缓冲转移到移位器,此时SPTEF会置位,表明发送数据缓冲可以接收另一个数据.
SPI数据发送开始.
在SPI发送期间,在SPSCK的边沿对MISO引脚进行抽样,移位;半个SPSCK时钟周期后,MOSI引脚的电平改变为下一位值.
8个SPSCK周期后,主机移位寄存器中的数据从MOSI引脚移出,而从机将数据从MISO引脚移入到数据移位寄存器.
在传送的最后,主机接收到的数据从移位器转移到接收数据缓冲,同时SPRF置位,表明数据可被读取.
如果此时在发送缓冲有一个等待发送的数据,那么该数据转移到移位器中,SPTEF置位,开始一个新的发送.
通常,SPI数据先发送最高位.
如果LSBFE置位,SPI数据先发送最低位.
当SPI配置为从机模式,它的SS引脚在传送前必须被驱动到低电平,在整个传送期间,SS必须处于低电平状态.
当CPHA=0,在连续传送之间,SS必须被拉高.
如果CPHA=1,SS在连续传送之间可保持低电平.
由于发送器和接收器是双缓冲.
SPTEF标志表明当发送缓冲有为新数据的空间.
SPRF标志表明在接收数据缓存中有一个有效数据.
在下一次传送之前,接收到的字符必须从接收缓存中读出否则产生超载错误.
在超载情况下,新数据会丢失,因为接收缓存会一直保存着以前接收到的字符.
因此应用程序开发者必须确保先前接收到的数据必须从接收缓存读出,才能启动下一次发送.
68SPI时序图从上图可以看出,在SPSCK的第一个跳变沿,主设备将其移位器的第一个数据放到其MOSI引脚,从设备将其移位器的第一数据放到其MISO引脚;SPSCK的第二个跳变沿,主,从设备对其MISO和MOSI引脚采样;在SPSCK的第三个跳变沿,主从设备对其采样到的数据移位,将第二个数据放到数据引脚.
3、实验现象用2个EVM板插上NRF24L01无线模块,下载"NRF24L01_SPI实验\NRF24L01_SPI",可以看到D2~D5、D6~D9轮流点亮.
D2~D5是自由轮流点亮,D6~D9是接收到另一块板发过来的数据控制的点亮与否.
关掉一块板,发现开着的板D6~D9不动了.
说明D6~D9轮流点亮是因为收到了数据.
3、程序代码参见NRF24L01_SPI实验69实验二十一汽车CAN总线实验1、实验功能介绍用2块EVM板通过can通信,可以看到D2~D5、D6~D9轮流点亮.
D2~D5是自由轮流点亮,D6~D9是接收到另一块板发过来的数据控制的点亮与否.
主板与从板的can通讯接口,实现的通讯.
掌握can通讯的流程.
详细寄存器说明参见《MC9S08DZ60中文数据手册》第12章.
做本实验时需将拨码开关"SW2"、"SW5"的所有位拨到"ON"位置.
2、流程图见3、实验现象3.
1注释掉这句"#defineSEND1//ForReceive,Maskthisline"将程序下载到第一块开发板.
3.
2取消掉这句"#defineSEND1//ForReceive,Maskthisline"注释,将程序下载到第二块开发板.
3.
3用导线将2块开发板的"CAN_H"连"CAN_H","CAN_L"连"CAN_L".
可以看到两块板上D2~D5、D6~D9轮流点亮.
.
断开2块板之间的CAN连接线,两块板上就各自D2~D5轮流点亮,D6~D9停了.
说明D2~D5是自由轮流点亮,D6~D9是接收到另一块板发过来的数据控制的点亮与否.
4、程序代码参见can实验.
70实验二十二熟悉存储器1、实验功能介绍做本实验时需将拨码开关"SW2"、"SW5"、"SW9"的所有位拨到"ON"位置.
1、1寄存器地址和位操作1、1、1直接页寄存器存储器的头112个字节为直接页寄存器,可进行位操作.
1、1、2高页寄存器存储器的0X1800开始为高页寄存器.
1、1、3非易失性寄存器FLASH的0XFFB0~0XFFBF的16个字节.
1、2RAMRAM的0X100以下可位操作初始化SP的方法:汇编语言:LDHX#RamLast+1TXSC语言:asm(LDHX#RamLast+1);asm(TXS);1、3FLASH711、3、1编程和擦除时间:任何编程或擦除命令执行之前,FLASH时钟分频寄存器(FCDIV)必须将内部时钟设置设置好,即fFCLK在150kHz~200kHz之间.
这个寄存器只能写入一次,所以在复位初始化过程中设置好该寄存器.
如果在FSTAT寄存器中的FACCERR=1,FCDIV不允许写入.
故在写入FCDIV之前,应查询FACCERR标志.
执行时间如下:注:1页512字节1、3、2FLASH时钟分频寄存器(FCDIV):该寄存器复位后只允许写一次727DIVLD0:FCDIV寄存器在复位之后未被写过;擦除和编程操作禁止;1:FCDIV寄存器复位之后被写过;可以对FLASH进行擦除和编程6PRDIV8预分频系数8允许位0:总线时钟直接输入FLASH时钟驱动器1:总线时钟8分频后再输入FLASH时钟驱动器5DIV[5:0]分频系数:FLASH时钟有总线时钟驱动.
见下表flash时钟分频器设置1、3、3FLASH选择寄存器(FOPT和NVOPT)复位期间,NVOPT的内容从FLASH复制到FOPT.
任意时刻都可对该寄存器读,但写操作无效.
737KEYEN后门密匙机制允许位:通过硬件临时解密0:后门密匙访问禁止;1:通过输入密匙值并与NVBACKKEY-NVBACKEY+7匹配,加密机制被屏蔽直到下次复位6FNORED向量重指允许位0:向量重指允许;1:禁止向量重指EPGMODEPROM模式位:0:4个字节1:8个字节方式1:0SEC0[1:0]安全状态代码,见下表加密状态1、3、4FLASH配置寄存器(FCNFG)5KEYACC访问密匙允许位0:写0Xffb0~0Xffb7操作被认为是擦除或编程FLASH的开始1:写0Xffb0~0Xffb7操作被认为是比较密匙6EPGSELEEPROM页选位0:零页使用1:1页使用1、3、5FLASH保护寄存器(FPROT和NVPROT)741、3、6FLASH状态寄存器(FSTAT)7FCBEFFLASH命令缓冲区空标志:用于发起命令.
指示命令缓冲为空,所以一个新的命令可以执行(当执行快速编程).
清除方法:751)向该位写12)一个快速编程命令传送给编程的阵列0:命令缓冲区满;1:一个新的快速编程命令可以写入命令缓冲区6FCCFFLASH命令完成标志:当命令缓冲为空,没有命令执行时该位置位.
当一个新的命令开始后,该位自动清除.
0:命令执行中;1:所有命令执行完成5FPVIOLFLASH保护冲突标志:清除该位方法为向该位写1.
0:无保护冲突;1:试图擦除或编程一个受保护的区域,发生冲突4FACCERRFLASH访问错误标志:1)未遵循正确的命令顺序1)FCDIV未初始化而进行编程或擦除操作2)命令执行过程钟MCU进入STOP模式清除该位的方法:向该位写1.
0:无访问错误发生1:发生一个访问错误2FBLANKFLASH查空核实标志0:查空命令之后,FCCF=1,FBLANK=0表明FLASH阵列未完全擦除;1:查空命令之后,FCCF=1,FBLANK=1表明FLASH阵列完成擦除1、3、7FLASH命令寄存器(FCMD)FLASH操作命令1、3、8编程擦除命令执行过程在执行下面操作之前,应清除所有的与flash有关的错误标志,并设置好FCDIV.
执行步骤:1.
向FLASH阵列的一个地址写入一个数据.
这次写的地址和数据信息被闩锁进FLASH接口.
该预写步骤是任何命令序列的第一个步.
对于擦除和查空命令,数据值并不重要.
对于页擦除命令,地址应为要擦除的512字节FLASH块中任意一个位置地址.
对于块擦除命令,地址应为FLASH存储器地址空间中任意一个位置地址.
76对于字节编程,那么该地址为要编程的地址,数据为要编程的数据.
注意:正确擦除操作之后,只允许编程一次.
对未擦除的地址进行编程会破坏该地址中的数据.
2.
FCMD写入命令.
命令如下:$05:查空$20:字节编程$25:快速编程$40:页擦除$41:块擦除3.
FSTAT寄存器中FCBEF位写1,启动FLASH操作命令(包括地址和数据信息).
在第1步和第3步骤之间,可以手动的设置FCBEF=0,可中止该次操作.
而在开始新的命令之前,必须清除FACCERR访问错误标志.
必须遵守这一严格过程,否则命令不会被接受.
FCCF位表明命令是否执行完成.
1、3、9快速编程过程快速编程用于编程连续地址的FLASH,时间上少于通过标准编程命令方式.
这是由于在两次编程操作之间,不必关闭高压.
通常,当发出一个擦除或编程命令,内部电压泵被打开,为FLASH阵列提供高压.
一旦命令执行完成,电压泵自动关闭.
而当发出一个快速编程命令,电压泵使能并保持(在一次快速编程完成之后,遇到以下情形):在当前编程操作完成之前,下一个快速编程命令已经列队好下一个连续地址与当前编程地址为同一行.
一行FLASH包括64个字节.
一行内的地址通过A0~A5来定位.
当A0~A5全为0时,开始新的一行.
快速编程模式下,第一个字节编程时间与标准编程模式时间相同.
接下的字节编程时间为快速编程时间,前提是满足上面两个条件之一.
当连续字节的地址为新的一行的第一个字节,其编程时间与标准编程时间相同,这是因为,高压必须关闭,给另一个FLASH阵列供电.
在当前命令完成之前,没有新的快速编程命令,电荷泵将关闭,高压移除该阵列.
1、3、10FLASH加密当加密机制使能,FLASH和RAM认为是加密的区域;而低页,高页寄存器和后台调试控制器被认为是未加密区域.
在加密的存储器执行的程序可以访问任何MCU存储器和资源.
反之,在非安全区域的程序或后台调试接口试图访问一个加密区域的话,将被阻止(写操作忽略,读操作返回0值).
加密机制使能或禁止是由FOPT寄存器中的非易失性位SEC01:SEC00位决定.
复位期间,NVOPT中的值装载到FOPT中.
因此在程序烧写到存储器时,可以设置好NVOPT寄存器.
1:0的组合取消加密机制,其他3种组合均使能加密机制.
故擦除之后,组合(1:1)会使MCU加密.
在开发过程中,当FLASH被擦除,编程SEC01:SEC00=1:0,从而MCU处于未加密状态,方便程序的开发.
当MCU处于加密状态时,片上调试模块不能使能.
但独立的后台调试控制器仍用于后台存储器访问命令,但MCU不能进入后台调试模式(除非在复位的上升沿,BKGD/MS维持77低).
通过后门密匙,可以临时解密.
如果NVOPT/FOPT中的KEYEN位为0,则后门密匙不允许,除了完全擦除FLASH外,没有其他方法取消加密.
如果KEYEN=1,一个加密的用户程序可以临时取消加密状态,方法如下:1.
向FCNFG寄存器中的KEYACC写1.
从而对FLASH的NVBACKKEY~NVBACKKEY+7位置的写操作是比较后门密匙,而不是作为FLASH编程或擦除命令的第一步.
2.
向NVBACKKEY~NVBACKKEY+7位置写入用户输入的密匙值.
写过程必须按一定顺序进行,开始于NVBACKKEY,结束于NVBACKKEY+7.
STHX指令不应用于该写过程,因为对NVBACKKEY~NVBACKKEY+7写操作不能在接近总线周期完成.
用户软件通常从通过通信接口从外部系统获得密匙.
3.
向FCNFG寄存器的KEYACC位写0.
如果刚写入的8字节密匙与存储在FLASH的密匙相同,SEC01:SEC00自动变为1:0,直到下次复位,那么MCU的加密状态取消.
加密密匙只能由加密存储区域(RAM或FLASH)的程序修改,因此不能通过后台调试命令输入.
后门比较密匙位于FLASH空间,与中断和复位向量同属一个512字节块.
通过后台调试接口执行以下步骤可以取消加密机制:1.
写FPROT位取消任何块保护.
FPROT只能通过后台调试命令修改,而不能通过应用软件.
2.
块擦除FLASH3.
查空.
为避免下次复位之后返回安全状态,应编程SEC01:SEC00=1:0.
1、3、11向量重指当任意块受到保护,那么复位和中断向量也将受到保护.
向量重指允许用户程序调整中断向量信息(不包括引导程序区域和复位向量).
设置NVOPT寄存器中的FNORED=0,允许向量重指.
为了能够重指,至少一部分但不是所有FLASH空间进行块保护.
所有中断向量(0XFFC0~0XFFD)都被重指,而复位向量不改变.
例如,如果FLASH的512字节即(0XFE00~0XFFFF)受到保护.
那么中断向量(0XFFC0~0XFFFD)被重指到0XFDC0~0XFDFD.
如果现在SPI中断发生,那么0XFDE0:FDE1处的中断向量被使用.
利用这一特点,用户可以对未保护的区域进行编程(包括新的中断向量值),而受块保护的区域包括默认的向量地址不会改变.
1、3、12FLASH块保护块保护是指被保护的FLASH区域可以避免被编程或擦除.
块保护是通过FLASH保护寄存器(FPROT)控制的.
当块保护使能,块保护将保护FLASH地址0XFFFF以下任何以512个字节为单位的块.
复位之后,NVPROT内的值装载到FPROT中.
FPROT不能被应用软件直接改变,所以用户程序不能改变块保护设置.
因为NVPROT位于FLASH的最后512个字节,如果任何数量的存储器被保护,那么NVPROT自身也受保护,不允许修改.
后台调试命令可以修改FPORT,所以后台调试命令可以擦除和再次编程受保护的78FLASH存储器.
例如为了保护0XE000~0XFFFF存储器,应设置FPS=1101,111.
这样从0X0000~0XDFFF为未保护区域.
同时为了能够修改FPS值,首先应该设置FPDIS=0.
所以寄存器NVPROT的值应设置为0XDE.
用户可以对存放引导程序的区域进行块保护,这样引导程序就可以对其他FLASH空间擦除和编程.
由于引导程序受到保护,所以在擦除和编程期间,即使电源掉电,也不会受到破坏.
2、流程图运行start08.
c程序初始化(初始化IO,设置外部中断)清外部中断标志外部中断服务程序对D5的状态取反复位主循环返回3、实验现象3、1打开flash实验的flash实验.
mcp.
3、2修改constbytenvopt_user@0xFFBF=0XF0;//程序下载到flash时,地址0xFFBF处的值被指定为0XF0.
FLASH被加密.
3、3单击调试按键,程序会下载到目标芯片中,但在调试窗口中看不到源程序.
关闭调试窗口.
3、4按下外部中断按键SW8,会发现D2~D9状态变化,说明程序是正常运行的.
3、5再次单击调试按键,会出现如下警告窗口:79说明芯片已被加密.
解密方法可参见第三章.
注意:芯片电压要在5V左右.
3、6修改constbytenvopt_user@0xFFBF=0X82;constbytenvprot_user@0xFFBD=0XFB;//0XFE00~0XFFFF被保护3、7单击调试按键,进入调试窗口.
单击全速运行,会发现外部中断按键SW8并不起作用.
这是因为中断向量发生了重指.
3、8修改MC9S08dz60.
H文件中的"#defineVirq0x0000FFFA"为"#defineVirq0x0000FDFA".
3、9单击调试按键进入调试环境,单击全速运行,发现外部中断按键起作用了.
4、程序代码参见flash实验.
80实验二十三MCU运行模式1、实验功能介绍做本实验时需将拨码开关"SW2"、"SW5""SW9"的所有位拨到"ON"位置.
1、1特点用于代码调试的后台调试模式等待模式-CPU挂起-系统时钟运行-稳压模块维持停止模式-CPU和总线停止-STOP2:部分内部电路进入节电模式,RAM数据保持-STOP3:所有内部电路仍供电,可用于快速恢复1、2正常运行模式MCU复位之后,BKGD/MS为高,进入正常运行模式.
CPU预取0XFFE:0XFFFF处代码,也就是复位向量处的代码.
1、3后台调试模式BDC:后台调试控制器DBG:片上调试模块BDC和DBG一起工作提供了分析MCU操作的一种方式,用于调试用户代码.
5种进入后台调试模式的方式:MCU复位信号的上升沿时BKGD/MS引脚为低MCU的BKGD引脚接收到BACKGROUND命令MCU执行BGND命令MCU遇到BDC断点MCU遇到DBG断点进入后台调试模式后,CPU挂起等待后台调试命令而不会执行用户程序.
按后台调试指令按是否影响到CPU可以分为两种类型后台调试命令:非干扰指令(硬BDM指令):用户程序正常运行下的BDM指令,这些也可以在后台调试下运行.
包括:-存储器访问指令-带状态返回存储器访问指令-BDC寄存器访问指令-BACKGROUND指令干扰指令:只能在后台调试模式下执行-CPU寄存器指令-单步跟踪用户程序81-离开后台调试模式,进入正常运行模式(GO)实际上我们在调试过程中,进入调试界面时,MCU处于活跃的后台调试模式.
以上两种模式我们只要了解即可.
下面主要介绍WAIT模式和STOP模式和相关实验.
1、4WAIT模式执行完WAIT指令,CPU进入低功耗状态.
进入WAIT模式之前,设置CCR寄存器的I=0,使能等待模式下中断功能,从而使该中断唤醒CPU,执行中断服务程序.
在等待模式下,BACKGROUND和带状态返回访问存储器后台调试指令可以执行.
BACKGROUND命令可以唤醒CPU进入后台调试模式;带状态返回访问存储器命令不会访问存储器,而是返回一个错误标志,表明MCU处于停止状态或等待状态.
执行WAIT指令后,MCU进入WAIT模式.
硬件中断可以唤醒WAIT模式下的MCU,软中断指令SWI不能唤醒WAIT模式下的MCU.
当外部中断唤醒MCU后,MCU执行中断服务程序.
注:不要在中断服务程序中执行WAIT指令.
1、5STOP模式设置SOPT中STOPE=1,执行STOP指令,MCU进入2种停止模式之一.
任何一种方式下,总线和CPU时钟均停止.
如果执行STOP命令之前,STOPE位未置位,那么执行STOP命令不会进入STOP模式,而是作为非法操作码而发生复位.
而通过设置SPMSC2中的相应位可以选择不同的停止模式.
STOP2和STOP3模式下各模块的状态1、5、1STOP3在执行STOP命令之前,设置PPDC=0,STOPE=1,那么执行STOP指令,MCU进入STOP3模式.
一旦进入STOP3模式,MCU内的所有时钟包括振荡器均停止.
ICG处于待命状态.
内部寄存器和逻辑电路以及RAM中的数据均维持.
I/O引脚状态不被闩锁.
复位引脚上的复位信号,异步中断或实时中断可以唤醒STOP3模式下的MCU.
复位引脚上的复位信号唤醒MCU的话,MCU按照复位状态运行.
而通过异步中断或实时中断唤醒的话,MCU执行相应的中断复位程序.
一个单独的自时钟源(大约1kHz)为实时中断提供时钟.
当RTIS2:RTIS1:RTIS0=0:0:0,实时中断和1kHz时钟源均关闭,从而进一步降低功耗.
从以上对STOP2和STOP3模式介绍来看,如何STOP3模式能够满足系统的功耗要求,那么选择将单片机在系统空闲时进入STOP3模式是一个不错的选择.
1、5、2STOP2STOP2模式下MCU功耗很低,同时RAM中的数据和I/O引脚的当前状态处于维持状态.
欲进入STOP2模式,那么在执行STOP指令之前设置PPDC=1,STOPE=1.
如果在执行STOP命令之前,LVD使能,那么执行STOP命令不会进入STOP2模式,而是进入STOP382模式.
在进入STOP2模式之前,用户必须保存I/O端口寄存器中的数据到RAM中.
一旦从STOP2模式退出后,用户应通过软件将保存的值恢复.
当MCU处于STOP2模式,所有的由电压稳压器供电的内部电路均关闭,RAM除外.
I/O引脚闩锁.
当中断使MCU从STOP2模式退出后,I/O状态仍处于闩锁状态,直到向SPMSC2寄存器中的PPDACK位写1.
当由于复位引脚上的复位信号或外部中断或RTI中断可以将MCU从STOP2模式退出.
当MCU处于STOP2模式,IRQ总是对低电平敏感而不管进入STOP2模式之前的对IRQ的配置.
一旦MCU从STOP2模式退出,那么MCU将像上电复位那样运行,当然除了引脚状态仍处于闩锁状态外.
CPU运行复位向量处的程序.
MCU的系统和所有外围模块处于其默认状态必须进行初始化.
当MCU从STOP2模式唤醒,SPMSC2寄存器中的PPDF位置位.
通过该标志位用户可以执行从STOP2恢复服务程序.
当I/O配置为通用I/O时,在进入STOP2模式之前,将I/O寄存器的状态保存到RAM中,在MCU退出STOP2模式后,用户软件从RAM中恢复保存的状态.
如果在写PPDACK之前未恢复的话,那么I/O引脚转变为复位状态.
该模式是一种更加低功耗模式.
该模式下只会维持RAM中的数据和I/O引脚的当前状态,因此在进入STOP2模式之前,应将必要的I/O数据寄存器或其他映射寄存器保存到RAM中.
进入STOP2模式的条件为:STOPE=1;//允许执行STOP指令PPDC=1;//选择STOP2模式LVDSE=0或LVDE=0;//关闭LVD唤醒STOP2的方法:1、复位2、RTI3、IRQ:IRQ用于唤醒的话,MCU会认为低电平有效中断,所以用户外部需将IRQ引脚上拉或进入STOP2模式之前使能IRQ的上拉.
中断或复位可以唤醒STOP2,但如果是中断唤醒的话,唤醒后并不执行中断服务程序,而是从复位向量处执行程序.
那么如何判断是复位还是中断唤醒的STOP2模式的MCU呢通过判断PPDF位即可;如复位唤醒的PPDF=0;所有的I/O或外围功能模块需要重新初始化;如是中断唤醒的PPDF=1;此时我们可以将在进入STOP2模式前保存到RAM的数据恢复,然后清除PPDF位即可.
1、6相关寄存器1、6、1系统选项寄存器:SOPT($1802)83该寄存器在任何时候均可以读取.
复位之后,只允许写一次.
用户在复位之后初始化过程中,应写一次该寄存器,尽管写入的值与该寄存器复位之后相同.
7COPE看门狗使能位0:关闭看门狗;1:看门狗使能6COPT看门狗溢出时间0:较短的溢出时间间隔(2的13次方个总线周期);1:较长的溢出时间间隔(2的18次方个总线周期)5STOPESTOP模式使能:如果STOPE设置为0,而执行STOP指令,那么会产生一个非法操作码复位.
0:禁止进入STOP模式;1:允许进入STOP模式1、6、2系统电源管理状态和控制寄存器2-SPMSC2($180A)7LVWF低电压报警标志0:未出现低电压;1:出现或出现过低电压6LVWACK低电压报警确认写1清除LVWF5LVDV低电压检测电压选择0:VLVD=VLVDL1:VLVD=VLVDH4LVWV低电压报警电压选择0:VLVW=VLVWL1:VLVW=VLVWH3PPDF该位表明MCU是从STOP2模式恢复0:MCU不是从STOP2模式唤醒1:MCU从STOP2模式唤醒2PPDACK清除PPDF位写1清除PPDF840PPDC该位用于选择STOP2或STOP3模式0:STOP3模式允许1:STOP2模式允许1、6、3系统电源管理状态和控制寄存器1-SPMSC1($1809)7LVDF低电压检测标志,只读1:表明低电压事件发生6LVDACK低电压检测确认,只写写1清除LVDF5LVDIE低电压检测中断使能控制位0:中断禁止;1:中断使能4LVDRE低电压检测复位使能控制位0:LVDF不产生硬件复位;1:LVDF=1时产生强制复位3LVDSE低电压检测是否在停止模式可用0:STOP模式下LVD禁止;1:STOP模式下LVD可运行2LVDELVD使能0:LVD关闭;1:LVD使能0BGBE能系缓冲使能:ADC模块的每一通道上使能内部带隙电压控制位0:关闭能系参考电压;1:使能能系参考电压2、流程图85运行start08.
c程序初始化(IO初始化,外部中断初始化)清外部中断标志外部中断服务程序对D6~D9的状态取反,同时D2~D5跑马灯向前1步复位主循环返回执行WAIT或STOP指令3、实验现象3、1打开wait实验.
mcp;该程序初始化设置后,会使MCU进入wait状态;外部中断按键SW8可唤醒wait状态下的MCU,MCU唤醒后会执行外部中断的服务程序,对D6~D9的状态取反,D2~D5跑马灯向前跑一个灯.
3、2打开stop3实验.
mcp;该程序初始化设置后,会使MCU进入stop3状态;外部中断按键SW8可唤醒stop3状态下的MCU,MCU唤醒后会执行外部中断的服务程序,对D6~D9的状态取反,D2~D5跑马灯向前跑一个灯.
3、3打开stop2实验.
mcp;该程序初始化设置后,会使MCU进入stop2状态;外部中断按键SW8可唤醒stop2状态下的MCU,MCU唤醒后会执行外部中断的服务程序,对D6~D9的状态取反,D2~D5跑马灯向前跑一个灯.
4、实验代码参见STOP2实验,STOP3实验,WAIT实验.
第5章注意事项1、硬件方面1、1该学习板不集成了程序下载调试器,USB数据线只做供电用,用户需自备BDM调试器和安装好CW6.
3.
861、2该学习板力求能够对MC9S08DZ系列单片机内部每个功能模块予以体现,在使用过程中会进行一些拨码开关和跳线设置,所以用户需熟悉学习板的拨码开关的跳线说明.
1、3该学习板由底板和子板组成.
2、软件方面2、1对于飞思卡尔新推出的8位单片机型号,已安装的CW6.
3软件会不支持,那么可登陆www.
freescale.
com网站下载对应新型号的升级补丁即可.
2、2用户如果在同一台计算机上安装了不同版本的CW软件,那么在用户双击.
mcp文件时会调用最新安装的版本.
如果用户想用以前的版本打开.
mcp文件,请更改.
mcp文件的打开方式.
2、3CW6.
3软件提供了丰富的帮助文档,用户可使用该文档解决遇到的问题.
2、4用户在使用过程中遇到问题可通过以下方式联系:Tel:010-62669931-609或者email:andy@free-tech.
com.
cn

Pacificrack:新增三款超级秒杀套餐/洛杉矶QN机房/1Gbps月流量1TB/年付仅7美刀

PacificRack最近促销上瘾了,活动频繁,接二连三的追加便宜VPS秒杀,PacificRack在 7月中下旬已经推出了五款秒杀VPS套餐,现在商家又新增了三款更便宜的特价套餐,年付低至7.2美元,这已经是本月第三波促销,带宽都是1Gbps。PacificRack 7月秒杀VPS整个系列都是PR-M,也就是魔方的后台管理。2G内存起步的支持Windows 7、10、Server 2003\20...

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

819云互联 香港 日本 美国 2核4G 18元 8核8G 39元 免费空间 免费CDN 香港 E3 16G 20M 230元/月

819云互联是海外领先的互联网业务平台服务提供商。专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前平台研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务,拥有丰富的海外资源、香港,日本,美国等各国优质的IDC资源。官方网站:https://www.819yun.com香港特价物理服务器:地区CPU内存带宽...

shift后门怎么用为你推荐
乐划锁屏乐视手机怎么解除屏幕锁酒店回应名媛拼单有谁知道有一个日本短片!是一个男的为了表白!杀了酒店好多人然后把他们房间拼成表白的子!敬汉卿姓名被抢注身份通被人注册了我该怎么办关键字什么叫关键词百度指数词什么是百度指数ip查询器查看自己IP的指令www.1diaocha.com哪个网站做调查问卷可以赚钱 啊www.diediao.com跪求鸭王2干支论坛2018天干地支数值是多少?猴山条约游猴山,观猴子
cn域名价格 中文国际域名 国外免费vps 什么是二级域名 128m内存 nerd 外国空间 名片模板psd xfce 免费网络电视 空间服务商 52测评网 天互数据 刀片服务器是什么 怎样建立邮箱 刀片服务器的优势 国外代理服务器地址 域名和空间 什么是服务器托管 qq云端 更多