飞思卡尔16位单片机MC9S12XS128加密(程序下载不进去,正负极未短路,通电芯片不发烫)后解锁的方法及步骤w

合集下载

飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置

飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置

飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置手把手教你写S12XS128程序--PWM模块介绍该教程以MC9S12XS128单片机为核心进行讲解,全面阐释该16位单片机资源。

本文为第一讲,开始介绍该MCU的PWM模块。

PWM 调制波有8个输出通道,每一个输出通道都可以独立的进行输出。

每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。

每一个P WM 输出通道都能调制出占空比从0—100% 变化的波形。

PWM 的主要特点有:1、它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。

2、每一个输出通道都有一个精确的计数器。

3、每一个通道的P WM 输出使能都可以由编程来控制。

4、PWM 输出波形的翻转控制可以通过编程来实现。

5、周期和脉宽可以被双缓冲。

当通道关闭或PWM 计数器为0时,改变周期和脉宽才起作用。

6、8 字节或16 字节的通道协议。

7、有4个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。

8、通过编程可以实现希望的时钟周期。

9、具有遇到紧急情况关闭程序的功能。

10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。

1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示:复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位P WMEx 。

它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。

当任意的P WMEx 位置1,则相关的P WM 输出通道就立刻可用。

用法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形注意:在通道使能后所输出的第一个波形可能是不规则的。

当输出通道工作在串联模式时(PWMCTL 寄存器中的CONxx置1),那么)使能相应的16位PWM 输出通道是由PWMEx 的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道 1 的使能位控制PWM 的输出。

飞思卡尔MC9S12XS128单片机重点模块讲解

飞思卡尔MC9S12XS128单片机重点模块讲解

基于飞思卡尔 MC9S12XS128MCU 的模块讲解及测试
安徽工业大学 自动化系 刘昌元 delay(500); if(LED==0x80) LED=0x01; } } 综合以上的两段代码看在 52 单片机和 128 单片机上编程思路基本上没大的区别,唯一的区 别就是 128 单片机有数据方向寄存器来管理 I/O 口。 � 将部分端口做输入口使用,另外一部分端口做输出口使用时:例如我们将 PORTB 的端 口 B7 用来做输入口,B0-B5 口做输出指示,测试代码如下:

以端口 A 和端口 B 为例讲解,以上是我截取的技术手册上的,从上来看 A 口和 B 口各 有 8 个口,且 A0-A7;B0-B7 全部作为 GPIO (通用输入输出口 )使用。此处 A 口和 B 口 使用方法是一样的,我姑且就以端口 A 来讲解。 A 口和 B 口作为通用输入输出口使用时我们只需要掌握 4 个寄存器即可。 PORTA (A 口

这一点和 51 单片机的 I/O 口有区别,在典型的 51 单片中 P0 口内部没有上拉电阻,但作为 I/O 口使用时需要外接排阻。其他 P1-P3 口则可以直接作为双向口使用,51 单片在上电复位 后端口被默认的置 1.在 51 单片中端口的某一位置 0 时端口作为输出口使用,置 1 时作为输 入口使用。例如如果我们想把 P1 作为输出口使用时我们可以在程序开始时写 P1=0x00; 如果 我们想把 P1 口作为输入口使用时我们可以写 P1=0xff; 这一点正好和飞思卡尔的 128 单片机 相反,另外 128 单片有专门的数据方向寄存器 DDRA 或者 DDRB 等来管理各个端口的输入 输出选择,51 单片没有。如果我们想把端口 A 作为输入口使用,我们只需写 DDRA=0x00; 即所有位都置 0,如果我们想把端口 A 作为输出口使用,我们只需要写 DDRA=0xff; 即所有 位都置 1 ,而如 果我们想要 把端口 A 的高四 位做输入口 ,低 4 位做输 出口时我们 就 写 DDRA=0x0f; 当我们需要将该端口的某一位做输出或者输入口使用时只需要将该端口对应的 方向位置 1 或者置 0 即可。例如我们想把 A3 口作输入口, A4 口作输出口使用时我们只需 要写: DDRA_DDRA3=0; DDRA_DDRA4=1; 即可。 � � 对于数据方向寄存器的使用只要记住:置 1——输出 置 0——输入 PORTA 数据寄存器也是由 8 位组成,任何时候都可以对它进行读写操作。

飞思卡尔16位单片机的资源配置

飞思卡尔16位单片机的资源配置

以MC9S12XS128MAL为例,其实DG128之类的类似。

如图一,128代表的是单片机中的FLASH大小为128K Byte,同理64代表的是单片机中的FLASH大小为64 K Byte,256代表的是单片机中的FLASH大小为256 K Byte。

但是S12(X)所使用的内核CPU12(X)的地址总线为16位,寻址范围最大为2^16 =64K Byte,而这64K Byte的寻址空间还包括寄存器、EEPROM (利用Data Flash模拟)、RAM等,因此不是所有的64K Byte都是用来寻址FLASH。

所以在S12(X)系列单片机中,很多资源是以分页的形式出现的,其中包括EEPROM、RAM、FLASH。

EEPROM的每页大小为1K Byte,RAM的每页大小为4K Byte,FLASH的每页大小为16K Byte。

因此XS128中EEPROM的页数为8K/1K = 8页,RAM的页数为8K/4K = 2页,Flash的页数为128K/16K = 8页。

图一图二在单片普通模式中,复位后,所有内存资源的映射如图二所示,其中从0x0000-0x07FF 的2K范围内映射为寄存器区,如I/O端口寄存器等,当然寄存器没有那么多,后面的一部分其实没有使用;从0x0800-0x0BFF,共1K的空间,映射为EEPROM区,由上面的分析,XS128中共有8页的共8K的EEPROM,所以这8页的EEPROM都是以分页的形式出现的,可以通过设置寄存器EPAGE选择不同的页并进行访问;从0x0C00到0x0FFF的1K空间为保留区(其实这里面也有学问,以后探讨);从0x1000到0x3FFF的12K空间为RAM区,分为三页,但是和前面所说的EEPROM不同,这三页中有2页(对于XS128和XS256)或一页(对于XS64)为固定页,位于12K空间的后一部分,以XS128为例,其内部的RAM资源为8K,所以其三页中的最后两页(0x2000-0x3FFF)为固定页,第一页(0x1000-0x1FFF)为窗口区,通过设置寄存器RPAGE来映射其他分页的RAM,当然在单片普通模式下,XS128内部已经没有其他的RAM了,所以这一页其实也没有用。

MC9S12XS128单片机

MC9S12XS128单片机

CodeWarrior新建工程
第三步:进入欢迎界面,点击下一步。然后选择芯 片型号 MC9S12XS128,点击下一步。程序一定 要与单片机型号一直,否则在硬件调试中会出现 错误。
CodeWarrior新建工程
第四步:选择使用的语言,在此选择 C语言,点击 “下一步”。
CodeWarrior新建工程
}
Codewarrior软件
• Codewarrior软件使用大赛中采用Codewarrior 3.1 for HCS12作为推荐的程序编译软件。 "CodeWarrior for S12" 是面向以HC12或S12为 CPU的单片机嵌入式应用开发的软件包。包括集 成开发环境IDE、处理器专家库、全芯片仿真、 可视化参数显示工具、项目工程管理器、C交叉 编译器、汇编器、链接器以及调试器。在 Codewarrior软件中可以使用汇编语言或C语言,以 及两种语言的混合编程。
第八步:选择有无浮点格式,根据自己情况而定, 本程序在此选择第二选项,点击“下一步”。
CodeWarrior新建工程
第九步:界面出现“选择存储模式?”,选择 Banked,点击下一步。
CodeWarrior新建工程
第十步:界面出现“选择硬件连接电缆型号” ,选择 第一项和最后一项,点击“完成”。
AD初始化实例
void ATD_Init(void) {
ATD0CTL1 = 0x20;//内部触发允许、A/D转换精度 ATD0CTL2 = 0x62;//禁止外部触发,快速清零,AD中断允许 ATD0CTL3 = 0x80;//数据对齐方式,采样序列长度 ATD0CTL4 = 0x92;//采样时间选择位,AD时钟选择 ATD0CTL5 = 0x30;//采样通道选择,单/多次采样选择位 ATD0DIEN = 0x00;//禁止数字输入 }

MC9S12XS128单片机

MC9S12XS128单片机
1.MC9S12XS128单片机介绍
2.CodeWarrior IDE 12 应用
MC9S12XS128单片机
• MC9S12XS128(以下简称XS128)是Freescale公 司推出的S12XS系列单片机中的一款增强型16位 单片机,S12XS系列单片机是在S12XE系列基础 上去掉XGate协处理器的单片机,该系列单片机 采用 CPU12X V2内核,可运行在40MHz总线频 率上。不仅在汽车电子、工业控制、中高档机电 产品等应用领域具有广泛的用途,而且在FLASH 存储控制及加密方面呢也有很强的功能。
PWM模块 特点:
1. 它有 8 个独立的输出通道,并且通过编程可控 制其输出波形的周期。 2. 每一个输出通道都有一个精确的计数器。 3. 每一个通道的 PWM 输出使能都可以由编程来控 制。 4. PWM 输出波形的翻转控制可以通过编程来实现。 5. 周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。 6. 8 字节或 16 字节的通道协议。 7. 有4 个时钟源可供选择(A、SA、B、SB),他 们提供了一个宽范围的时钟频率。
ECT初始化程序:
以0通道为例:
void ECT_Init(void) { TIE = 0x00; //通道0~7的使能屏蔽 TIOS = 0x00; // 所有的端口设置成输入捕获模式 TSCR1 = 0x90; // 使能时钟模块,定时器标志位 快速清零,读取数据自动清零 TCTL4_EDG0B = 0; TCTL4_EDG0A = 1; //捕捉 上升沿,0通道 TIE_C0I = 1; // 使能0通道中断,中断服务程序中 读取捕获数 }
ECT模块(增强型定时器模块)
• ECT特点相当于高速的I/O口,由一个16为自由计 数器、8个16为的输入捕捉/输出比较通道、一个 16为脉冲累加器及一个16位的模数递减计算器 (MDC)组成。

基于MC9S12XS128的单片机开发板的设计

基于MC9S12XS128的单片机开发板的设计

基于MC9S12XS128的单片机开发板的设计摘要:针对飞思卡尔杯全国大学生智能车邀请赛,设计了基于MC9S12XS128(飞思卡尔专用芯片)的单片机开发系统,在此给出主要硬件电路和软件设计流程。

为验证该系统可靠性,设计了4 乘以4 矩阵键盘键号的识别与数码管显示电路。

实际应用结果表明,此开发板的应用大大提高了智能车开发效率。

同时可为大学本科学生学习嵌入式开发系统以及为汽车电子行业工程师提供良好的开发平台,具有较高的实用性和推广价值。

关键词:飞思卡尔;MC9S12XS128;CAN 总线;矩阵键盘0 引言飞思卡尔杯全国大学生智能车竞赛是以迅速发展的汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多个交叉学科的科技创意性比赛,该项目由大赛组委会统一提供车模,利用指定的微控制器作为核心控制单元,各参赛队伍在此基础上自主进行系统设计,完成智能车的制作,使其能够在专门设计的跑道上自动识别道路,并以最高速度行驶。

此项赛事旨在加强大学生的创新意识、团队合作精神和培养学生的创新能力。

本文设计了基于MC9S12XS128(飞思卡尔指定芯片)的单片机开发系统,为即将参加此项竞赛的同学提供学习平台。

实际应用结果表明,此项开发板的应用大大提高了大学生制作智能车的开发效率。

1 系统硬件设计MC9S12XS128 单片机开发板由MC9S12XS128 单片机最小系统、电源模块、CAN/LIN 总线接口、USB 转串口、标准异步串行接口、MAX 485 通信接口、4 乘以4 矩阵键盘键号的识别与显示电路(包括数码管和液晶显示接口)和电机驱动接口组成,系统框图如图1 所示。

1.1 电源模块设计此开发板上提供2 种输出电压,分别为5 V 和12 V,输出的12 V 电压可以通过LIN 总线接口外接,同时提供2 种电压输入方式,通。

飞思卡尔16位单片机MC9S12XS128加密(程序下载不进去,正负极未短路,通电芯片不发烫)后解锁的方法及步骤w

飞思卡尔16位单片机MC9S12XS128加密(程序下载不进去,正负极未短路,通电芯片不发烫)后解锁的方法及步骤w

飞思卡尔16位单片机MC9S12XS128加密(程序下载不进去,正负极未短路,通电芯片不发烫)后解锁的方法及步骤/*****************************************************************************/ *本人用此法成功解救了4块板子【窃喜!】,此说明是本人边操作边截图拼成的,有些是在别的说明上直接截图【有些图本人不会截取,就利用现成的了,不过那也是本人用豆和财富值换来的】,表达不清之处还望见谅,大家将就着看吧!如能有些许帮助,我心甚慰!!!————武狂狼2014.4.23 /*****************************************************************************/编译软件:CW5.1版本,下载器:飞翔BDMV4.6 【1】,连接好单片机,准备下载程序,单击下载按钮出现以下界面或(图1.1)图 1.1——4中所有弹出窗口均单击“取消”或红色“关闭”按钮依次进入下一界面(图1.2)(图1.3)(图1.4)******************************************************************************* *******************************************************************************【2】单击出现如下图所示下拉列表,然后单击(图2.1)出现下图(图2.2)对话框,按下面说明操作(图2.2)弹出图2.3,单击按钮,依次出现如图2.4--5窗口,均单击(图2.3)(图2.4)******************************************************************************* *******************************************************************************【3】单击出现下拉列表,然后单击下拉列表中单击按钮出现如下界面,单击选择相对应的单片机型号(我选的红色方框里的HCS12X….),单击OK. PS:【此步骤是本人自己试出来的,若不进行此操作,图3.3中下拉列表中无要找选项】(图3.1)(图3.3)(图3.4)(图3.5)红色方框2中默认即为所要选的文件,此步只需单击确认按钮即可,如有不同读者酌情处置。

飞思卡尔16位单片机9S12XS128使用(一些初始化)

飞思卡尔16位单片机9S12XS128使用(一些初始化)

飞思卡尔16位单片机9S12XS128使用(一些初始化)飞思卡尔16位单片机9S12XS128使用最近做一个关于飞思卡尔16位单片机9S12XS128MAA的项目,以前未做过单片机,故做此项目颇有些感触。

现记录下这个艰辛历程。

以前一直是做软件方面的工作,很少接触硬件,感觉搞硬件的人很高深,现在接触了点硬件发现,与其说使用java,C#等语言写程序是搭积木,不如说搞硬件芯片搭接的更像是在搭积木(因为芯片是实实在在拿在手里的东西,而代码不是滴。

还有搞芯片内部电路的不在此列,这个我暂时还不熟悉)。

目前我们在做的这个模块,就是使用现有的很多芯片,然后根据其引脚定义,搭接出我们需要的功能PCB 板,然后为其写程序。

废话不多说,进入正题。

单片机简介:9S12XS128MAA单片机是16位的单片机80个引脚,CPU是CPU12X,内部RAM8KB,EEPROM:2KB,FLASH:128KB,外部晶振16M,通过内部PLL 可得40M总线时钟。

9S12XS128MAA单片机拥有:CAN:1个,SCI:2个,SPI:1个,TIM:8个,PIT:4个,A/D:8个,PWM:8个下面介绍下我们项目用到的几个模块给出初始化代码1、时钟模块初始化单片机利用外部16M晶振,通过锁相环电路产生40M的总线时钟(9S12XS128系列标准为40M),初始化代码如下:view plaincopy to clipboardprint?1/******************系统时钟初始化****************/2void Init_System_Clock()3{4 asm { // 这里采用汇编代码来产生40M的总线5 LDAB #36 STAB REFDV78 LDAB #49 STAB SYNR10 BRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率11 BSET CLKSEL,#$8012 }13}上面的代码是汇编写的,这个因为汇编代码量比较少,所以用它写了,具体含义注释已经给出,主函数中调用此函数即可完成时钟初始化,总线时钟为40M.2、SCI模块初始化单片机电路做好了当然少不了和PC之间的通信,通信通过单片机串口SCI链接到PC端的COM口上去。

飞思卡尔MC9S12XS128(定时器)ECT寄存器详解

飞思卡尔MC9S12XS128(定时器)ECT寄存器详解

1、定时器IC/OC功能选择寄存器TIOSIOS[7..0]IC/OC功能选择通道0 相应通道选择为输入捕捉(IC)1 相应通道选择为输出比较(OC)2、定时器比较强制寄存器 CFORCFOC[7..0]设置该寄存器某个FOCn位为1将导致在相应通道上立即产生一个输出比较动作,在初始化输出通道时候非常有用。

【说明】这个状态和正常状态下输出比较发生后,标志位未被置位后的情况相同。

3、输出比较7屏蔽寄存器 OC7MOC7M[7..0]OC7(即通道7的输出比较)具有特殊地位,它匹配时可以直接改变PT7个输出引脚的状态,并覆盖各个引脚原来的匹配动作结果,寄存器OC7M决定哪些通道将处于OC7的管理之下。

OC7M中的各位与PORTT口寄存器的各位一一对应。

当通过TIOS将某个通道设定为输出比较时,将OC7M中的相应位置1,对应的引脚就是输出状态,与DDR中的对应位的状态无关,但OC7Mn并不改变DDR相应位的状态。

【说明】OC7M具有更高的优先级,它优于通过TCTL1和TCTL2寄存器中的OMn和OLn设定的引脚动作,若OC7M中某个位置1,就会阻止相应引脚上由OM和OL设定的动作。

4、输出比较7数据寄存器 OC7DOC7D[7..0]OC7M对于其他OC输出引脚的管理限于将某个二进制值送到对应引脚,这个值保存在寄存器OC7D中的对应位中。

当OC7匹配成功后,若某个OC7Mn=1,则内部逻辑将OC7Dn送到对应引脚。

OC7D中的各位与PORTT口寄存器的各位一一对应。

当通道7比较成功时,如果OC7M中的某个位为1,OC7D中的对应位将被输出到PORTT的对应引脚。

【总结】通道7的输出比较(OC7)具有特殊的位置,在OC7Mn和OC7Dn两个寄存器设置以后,OC7成功输出后将会引起一系列的动作。

比如:OC7M0=1,则通道0处在OC7的管理下,在OC7成功后,系统会将OC7D0的逻辑数据(仅限0或者1)反应在PT0端口上。

飞思卡尔MC9S12XS128单片机中断优先级设置简易教程

飞思卡尔MC9S12XS128单片机中断优先级设置简易教程

本教程试图用最少的时间教你飞思卡尔XS128单片机的中断优先级设置方法和中断嵌套的使用,如果是新手请先学习中断的基本使用方法。

先来看看XS128 DataSheet 中介绍的相关知识,只翻译有用的:七个中断优先级每一个中断源都有一个可以设置的级别高优先级中断的可以嵌套低优先级中断复位后可屏蔽中断默认优先级为1同一优先级的中断同时触发时,高地址(中断号较小)的中断先响应注意:高地址中断只能优先响应,但不能嵌套同一优先级低地址的中断下面直接进入正题,看看怎么设置中断优先级:XS128中包括预留的中断一共有128个中断位,如果为每个中断都分配一个优先级寄存器的话会非常浪费资源,因此飞思卡尔公司想出了这样一种办法:把128个中断分为16个组,每组8个中断。

每次设置中断时,先把需要的组别告诉某个寄存器,再设置8个中断优先寄存器的某一个,这样只需9个寄存器即可完成中断的设置。

分组的规则是这样的:中断地址位7到位4相同的中断为一组,比如MC9SX128.h中这些中断的位7到位3都为D,他们就被分成了一组。

0~F正好16个组。

INT_CFADDR就是上面说到的用来设置组别的寄存器:我们需要设置某个组别的中断时,只要写入最后8位地址就行了,比如设置SCI0的中断优先级,就写入0xD0。

设置好组别之后,我们就要该组中相应的中断进行设置,设置中断的寄存器为这其实是一组寄存器,一共有8个,每个都代表中断组中的一个中断。

对应规则是这样的:中断地址的低四位除以2比如还是SCI0,低四位是6,除以二就是3,那么我们就需要设置INT_CFDATA3 往INT_CFDATAx中写入0~7就能设置相应的中断优先级了拿我本次比赛的程序来举个例子:我们的程序中需要3个中断:PIT0,PORTH,SCI0。

PIT0定时检测传感器数值,PORTH连接干簧管进行起跑线检测,SCI0接收上位机指令实现急停等功能。

因此中断优先级要SCI0>PORTH>PIT0。

基于飞思卡尔单片机MC9S12XS128的智能车设计

基于飞思卡尔单片机MC9S12XS128的智能车设计

基于飞思卡尔单片机MC9S12XS128的智能车设计作者:李晨宓超来源:《上海海事大学学报》2012年第01期摘要:针对“飞思卡尔全国大学生智能车竞赛”,设计能自动识别路线的智能车系统.该系统以飞思卡尔16位单片机MC9S12XS128作为控制核心,用MOSFET制作驱动电路;采用摄像头和带有光电传感器的图像采样模块进行模式识别,提取黑线特征,预判道路信息;通过自制的速度传感器实时获取小车速度,采用PID控制策略形成速度闭环控制.实验证明该系统能够精准地识别路线,控制小车在赛道上稳定运行.关键词:智能车;MC9S12XS128;模式识别;图像检测;PID控制中图分类号:TP242.6 文献标志码:ALIChen,MIChao(1.EngineeringResearchCenterofContainerSupplyChainTechnology,Ministryof Education,ShanghaiMaritimeUniv.,Shanghai201306,China;2.CollegeofMechanicalEngineering,TongjiUniv.,Shanghai201804,China)Abstract:lAutomaticVehC9S12XS128isdesignedasthecontrollingcoreofthesystem,andMOSFETisusedto makethedrivecircuits.Camerasandimagesamplingmoduleswithphotoelectricsensorsareusedforthe patternrecognitionaolth establerunningofthevehicleonthetrack.Keywords:intelligentvehicle;MC9S12XS128;patternrecognition;imagedetection;PIDcontrol0 引言为加强大学生实践、创新能力和团队精神的培养,教育部高等学校自动化专业教学指导分委员会主办“飞思卡尔全国大学生智能车竞赛”.该竞赛要求在标准技术平台下完成软硬件系统的设计,制作一辆能在规定的赛道上自动识别路线的赛车,没有冲出赛道及其他违规现象并最快完成全程为获胜1 系统设计1.1 竞赛规则智能车必须采用竞赛委员会规定的技术平台,包括赛车模型、电机、舵机、电池以及由飞思卡尔公司提供的单片机;按道路传感器分为光电组和摄像头组两个组别进行比赛,摄像头组可使用光电传感器,光电组不能使用摄像头,赛车上的传感器数量不得多于16个.赛道表面为白色,形式包括直道、交叉道、回头弯、S型等,弯道处赛道宽度为60cm,直道处宽度为45cm,中心有2.5cm宽黑色轨迹线.1.2 系统总体结构选用飞思卡尔16位单片机MC9S12XS128作为核心控制单元,由传感器系统采集道路信息和速度信息,由电机驱动系统控制赛车速度,由舵机驱动系统控制运行方向,由人机交互系统完成系统设定和信息显示,系统的总体结构框图见图1.2.3 速度传感器设计初期,为了降低调试难度,采用开环控制模式,赛车运行平稳但速度无法提高,所以赛车控制须建立速度检测环节,进行闭环控制.速度检测同样有多种方案,对射光耦或槽型光耦、霍尔元件、测速电机、高精度编码器等各具特点.综合分析后选择槽型光耦作为测速元件.将槽型光耦安装在传动轴上方,使穿过光耦间隙的齿轮旋转时触发脉冲,由单片机高速脉冲计数器采样,再根据车轮直径和转速等换算成近似速度值.2.4 赛道检测传感器赛道检测用的传感器相当于赛车的眼睛,通过它自动检测赛道上的黑色轨迹线,可以通过光电传感器和摄像头实现.光电传感器扫描速度快、控制简单,但探测距离近;摄像头则具有探测范围广、精度高等优势,前瞻性好,利于速度控制,同时也存在易受干扰、处理信息量大等缺陷.[4]本设计综合两种方案的优势,采用摄像头作为主要检测元件,并由安装在赛车前方的光电传感器辅助检测近处道路,锁定黑线,识别起跑线.摄像头选用380线CMOS,采用LM1881作为视频同步分离芯片,提取场同步信号和行同步信号.由于在程序中使用中断程序采集图像,PID采样周期的选择受限制于图像采集.每行的扫描周期为64μs,有效扫描时间为52μs,每隔6行采集一行图像,如果在每行加入PID调节,那么处理PID子程序的时间必须控制在64×5=320μs内.另外,图像采集只是采集奇场中的行数,在偶场中没有采集,因此PID子程序的执行不均匀,并没有达到预期效果,还可能会影响视频采集.经过分析,最终决定将PID的采样周期定为20ms,即每进行一次场采集后进行一次PID调节.经过最终检验,这样能够满足对速度控制的需要.4 总结与展望设计使用MC9S12XS128单片机的大多数模块,充分利用单片机资源,小车运行稳定,比赛过程中未出现冲出赛道的情况.通过整个设计过程,大学生们的科研能力和动手能力得到锻炼,项目开发经验有所积累.该技术方案还可推广到智能机器人、自动导向车等方面,具有较广泛的应用价值.参考文献:[1]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004:[2]吴斌华,黄卫华,程磊,等.基于路径识别的智能车系统设计[J].电子技术应用,2007(3):[3]彭建学,马永军,汤天浩.一种微弱电流测量仪的设计[J].上海海事大学学报,2008,29(4):[4]唐红雨,陈迅.高速图像数据采集与处理系统的硬件设计[J].电子技术,2006,33(12):[5]施庆华,沈爱弟,褚建新.基于GPIB和局域网的分布式自动测试系统开发和实现[J].上海海事大学学报,2006,27(3):[6]吴卫国,蒋平,陈辉堂,等.移动小车轨迹跟踪的力矩控制[J].控制与决策,1999,14(2):。

飞思卡尔单片机烧写程序步骤

飞思卡尔单片机烧写程序步骤

创建一个工程
选择单片机的型号,我一直用的是mc9s12xs128的单片机,然后在“choose your default connection:”里面选择最后一个“TBDML”,TBDML是一个仿真器,飞思卡尔单片机用的BDM 仿真器,选择好后下一步
这一步就是建立工程的名字和位置,左边选择语言类型,选择C即可,设置好名字和位置后点下一步
这个窗口指的是要不要从一个位置添加先前存在的工程,不用添加,直接下一步
直接下一步
这一步需要注意,在“Select the floating point format supported…….”里选择第二项,如上图,是选择浮点类型长度,选别的可能编译的时候出错,我也不知道为什么
这一步直接默认
直接点完成
即可完成工程的建立
工程建立后自动出来这个画面
在左边栏里,双击main.c会出来主程序,在里面写程序即可,写好后点一下这个按钮,生成一系列文件,如果没有错误,就不会有提示,遇到warming,一般没什么大问题,只要不是error就行,
然后烧写程序点绿色箭头,烧程序单片机通电。

先确保你的电脑装好仿真器的驱动,在资源管理器里面查看
同上显示的话表示正常,如果有黄色感叹号,则需要重新安装驱动。

MC9S12系列及MC9S12X系列单片机解密

MC9S12系列及MC9S12X系列单片机解密

MC9S12系列及MC9S12X系列单片机解密致芯科技解密中心面向国内外客户提供MC9RS08系列单片机解密、MC9S12及MC9S12X系列单片机解密、MC68HC12系列单片机解密,对飞思卡尔芯片程序提取服务,我们依靠坚硬的技术为后盾,以最低的价格竭诚为您服务,以下是我们目前已经成功完成的单片机解密部分型号列表,更多可解密单片机型号不断更新中,如果您有MC9S12 系列芯片解密需求,欢迎来电来访咨询。

MC9S12系列芯片解密:MC9S12A系列单片机解密:MC9S12A32, MC9S12A64, MC9S12A128, MC9S12A256, MC9S12A512;MC9S12B系列单片机解密:MC9S12B32, MC9S12B64, MC9S12B96, MC9S12B128, MC9S12B256;MC9S12C系列单片机解密:MC9S12C32, MC9S12C64, MC9S12C96, MC9S12C128;MC9S12D系列单片机解密:MC9S12D32, MC9S12D64, MC9S12D96, MC9S12DB64, MC9S12DB128, MC9S12DG128, MC9S12DG256, MC9S12DJ64, MC9S12DJ128, MC9S12DJ256,MC9S12DP512, MC9S12DT128, MC9S12DT256, MC9S12DT512, MC9S12DE32, MC9S12DE64, MC9S12DE128;MC9S12E系列单片机解密:MC9S12GC系列单片机解密:MC9S12GC16, MC9S12GC32, MC9S12GC64, MC9S12GC96, MC9S12GC128;MC9S12H系列单片机解密:MC9S12H128, MC9S12H256;MC9S12HZ系列单片机解密:MC9S12HZ256, MC9S12HZ128, MC9S12HZ64;MC9S12K系列单片机解密:MC9S12KC128, MC9S12KG128, MC9S12KG256, MC9S12KT256, MC9S12KT256;MC9S12XB系列单片机解密:MC9S12XB128;MC9S12XD系列单片机解密:MC9S12XD64, MC9S12XD128, MC9S12XD256, MC9S12XD256, MC9S12XD384;MC9S12XE系列单片机解密:MC9S12XEG128, MC9S12XEP100, MC9S12XEP768, MC9S12XEQ384, MC9S12XEQ512, MC9S12XET256, MC9S12XDG128, MC9S12XDG256, MC9S12XDP512, MC9S12XDT256, MC9S12XDT512;MC9S12XF系列单片机解密:MC9S12XF512;MC9S12XHZ系列单片机解密:MC9S12XHZ256, MC9S12XHZ512;MC9S12XS系列单片机解密:MC9S12XS64, MC9S12XS128, MC9S12XS25;MC9S12NE系列单片机解密:MC9S12NE64;MC9S12P系列单片机解密:MC9S12P32, MC9S12P64, MC9S12P96, MC9S12P128;MC9S12Q系列单片机解密:MC9S12Q64, MC9S12Q96, MC9S12Q128;MC9S12UF系列单片机解密:MC9S12UF32;MC9S12XA系列单片机解密:MC9S12XA256, MC9S12XA512;。

飞思卡尔单片机MC9s12xs128调试PS2

飞思卡尔单片机MC9s12xs128调试PS2

========================PS2.h=====================================#ifndef _PS2_H#define _PS2_H#define PS2_CLK PTJ_PTJ1#define PS2_RW PORTA_PA1typedef struct PS2_V alueType {char PS2_V alueData; /* 码表Num :77 /:E04A*:7C -:7B7: 6C 8:75 9:7D +:794: 6B 5:73 6:74 +:791: 69 2:72 3:7A Enter:E05A0: 70 .:71*//* 对应返回值Num :-5 /:-4 *:7C -:-27: 7 8:8 9:9 +:-14: 4 5:5 6:6 +:-11: 1 2:2 3:3 Enter:100: 0 .:-3 空格-6*/unsigned char PS2_V alueKind; //0 按下,1松手}PS2_V alueType;#endif _PS2_H======================================PS2.c============================ #include "PS2.h"#include "MC9S12XS128.h"//extern unsigned char PS2_Buffer[3];//extern unsigned char PS2_StopCodeFlag=0;//从PS/2中获取一个按键unsigned char PS2_GetData(void){unsigned char temp,i,res;for(i=0;i<11;i++) {while(PS2_CLK);if(i>0 && i<9) {res=res>>1;if(PS2_RW) {res=res|0x80;}}while (!PS2_CLK);}return res;}void Key_Interrupt(void) {//DDRJ=0X00;PIEJ_PIEJ1=1;PPSJ_PPSJ1=0;}void PS2_InsertBuffer(unsigned char *buffer,unsigned char bufferdata) {unsigned char *tempdata=buffer+1;(*buffer++)=(*tempdata++);(*buffer++)=(*buffer++);(*buffer)=bufferdata;}void PS2_GetChar(PS2_V alueType *PS2_V alue){unsigned char temp;temp=PS2_GetData();(*PS2_V alue).PS2_V alueKind=0;if(temp!=0xe0 && temp!=0xf0){switch (temp){/* 对应返回值Num :-6 /:-4 *:-5 -:-27: 7 8:8 9:9 +:-14: 4 5:5 6:6 +:-11: 1 2:2 3:3 Enter:100: 0 .:-3*/case 0x70 : (*PS2_V alue).PS2_V alueData=0; return;case 0x69 : (*PS2_V alue).PS2_V alueData=1; return;case 0x72 : (*PS2_V alue).PS2_V alueData=2; return;case 0x7A : (*PS2_V alue).PS2_V alueData=3; return;case 0x6B : (*PS2_V alue).PS2_V alueData=4; return;case 0x73 : (*PS2_V alue).PS2_V alueData=5; return;case 0x74 : (*PS2_V alue).PS2_V alueData=6; return;case 0x6C : (*PS2_V alue).PS2_V alueData=7; return;case 0x75 : (*PS2_V alue).PS2_V alueData=8; return;case 0x7D : (*PS2_V alue).PS2_V alueData=9; return;case 0x71 : (*PS2_V alue).PS2_V alueData=-3; return;case 0x79 : (*PS2_V alue).PS2_V alueData=-1; return;case 0x7B : (*PS2_V alue).PS2_V alueData=-2; return;case 0x7C : (*PS2_V alue).PS2_V alueData=-5; return;case 0x77 : (*PS2_V alue).PS2_V alueData=-6; return;case 0x66 : (*PS2_V alue).PS2_V alueData=-7; return;}}else if(temp==0xe0){temp=PS2_GetData();if(temp==0xf0){temp=PS2_GetData();(*PS2_V alue).PS2_V alueKind=1;if(temp==0x5A){(*PS2_V alue).PS2_V alueData=10; return;}else if(temp==0x4A){(*PS2_V alue).PS2_V alueData=-4; return;}}else{(*PS2_V alue).PS2_V alueKind=0;if(temp==0x5A){(*PS2_V alue).PS2_V alueData=10; return;}else if(temp==0x4A){(*PS2_V alue).PS2_V alueData=-4; return;}}}else if (temp==0xf0){(*PS2_V alue).PS2_V alueKind=1;temp=PS2_GetData();switch (temp){/* 对应返回值Num :-6 /:-4 *:-5 -:-27: 7 8:8 9:9 +:-14: 4 5:5 6:6 +:-11: 1 2:2 3:3 Enter:100: 0 .:-3 空格-7*/case 0x70 : (*PS2_V alue).PS2_V alueData=0; return;case 0x69 : (*PS2_V alue).PS2_V alueData=1; return;case 0x72 : (*PS2_V alue).PS2_V alueData=2; return;case 0x7A : (*PS2_V alue).PS2_V alueData=3; return;case 0x6B : (*PS2_V alue).PS2_V alueData=4; return;case 0x73 : (*PS2_V alue).PS2_V alueData=5; return;case 0x74 : (*PS2_V alue).PS2_V alueData=6; return;case 0x6C : (*PS2_V alue).PS2_V alueData=7; return;case 0x75 : (*PS2_V alue).PS2_V alueData=8; return;case 0x7D : (*PS2_V alue).PS2_V alueData=9; return;case 0x71 : (*PS2_V alue).PS2_V alueData=-3; return;case 0x79 : (*PS2_V alue).PS2_V alueData=-1; return;case 0x7B : (*PS2_V alue).PS2_V alueData=-2; return;case 0x7C : (*PS2_V alue).PS2_V alueData=-5; return;case 0x77 : (*PS2_V alue).PS2_V alueData=-6; return;case 0x66 : (*PS2_V alue).PS2_V alueData=-7; return;}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

飞思卡尔16位单片机MC9S12XS128加密(程序下载不进去,正负极未短路,通电芯片不发烫)后解锁的方法及步骤
/*****************************************************************************/ *本人用此法成功解救了4块板子【窃喜!】,此说明是本人边操作边截图拼成的,有些是在别的说明上直接截图【有些图本人不会截取,就利用现成的了,不过那也是本人用豆和财富值换来的】,表达不清之处还望见谅,大家将就着看吧!如能有些许帮助,我心甚慰!!!
————武狂狼2014.4.23 /*****************************************************************************/
编译软件:CW5.1版本,下载器:飞翔BDMV4.6 【1】,连接好单片机,准备下载程序,单击下载按钮出现以下界面

(图1.1)
图 1.1——4中所有弹出窗口均单击“取消”或红色“关闭”按钮依次进入下一界面
(图1.2)
(图1.3)
(图1.4)
******************************************************************************* *******************************************************************************
【2】单击出现如下图所示下拉列表,然后单击
(图2.1)
出现下图(图2.2)对话框,按下面说明操作
(图2.2)
弹出图2.3,单击按钮,依次出现如图2.4--5窗口,均单击
(图2.3)
(图2.4)
******************************************************************************* *******************************************************************************
【3】单击出现下拉列表,然后单击下拉列表中单击按钮出现如下界面,单击选择相对应的单片机型号(我选的红色方框里的HCS12X….),单击OK. PS:【此步骤是本人自己试出来的,若不进行此操作,图3.3中下拉列表中无要找选项】
(图3.1)
(图3.3)
(图3.4)
(图3.5)
红色方框2中默认即为所要选的文件,此步只需单击确认按钮即可,如有不同读者酌情处置。

(图3.6)
(图3.7)
(图3.8)
单击OK后,弹出如图3.9所示窗口,待条码跑完后此窗口自动关闭
(图3.9)
图3.9窗口关闭后若出现图3.10窗口,恭喜你!解锁成功!单击“确定”按钮,再次下载,程序很顺利的就下载进去了!
(图3.10)
PS【用万用表测一下正负极是否短路;单片机通电是否发烫,若既未短路又不发烫,说明单片机坏的可能性不大,看清提示窗口,多试几次也许就会成功!】
附件;《给S112单片机加密与解锁-如何解除Flash的“保护模式“.pdf》《XS128单片机解锁.pdf》。

相关文档
最新文档