飞思卡尔单片机程序调试方法说明
飞思卡尔单片机LED控制例程详解-推荐下载

准备工作: 硬件:Freescale MC9S08JM60 型单片机一块; 软件:集成开发环境 codewarrior IDE; 开发板上有两个 LED 灯,如下图所示:
实验步骤: 1. 首先,确保单片机集成开发环境及 USBDM 驱动正确安装。其中 USBDM 的安装步骤如下: 假设之前安装过单片机的集成开发环境 6.3 版本:CW_MCU_V6_3_SE; 运行 USBDM_4_7_0i_Win,这个程序会在 c 盘的程序文件夹下增加一个目录 C:\Program
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
飞思卡尔程序调试技巧

一、前言调试程序,是软件开发过程中的一个必不可少的环节。
这篇帖子,匠人试着来整理一下一些调试的技巧。
说到“技巧”,这个词自从被所长批臭之后,匠人就吓得不敢再提,生怕一不小心就暴露了思想的浅薄和眼光的局限,呵呵。
所以咱们不叫“技巧”,干脆低调点,就叫“雕虫小技”吧。
这里所讨论的“调试”技巧,有些是必须结合开发工具本身的功能来实现,而有些可以通过烧录芯片来验证。
各种开发工具,提供的功能多少强弱也不尽相同,这些方法也未必都能套用。
仅供参考吧。
最后说明一下,这是没有草稿的帖子,匠人仍然以不定期连载的方式,边写边发边改。
可能结构会比较混乱。
欢迎大家一起参与讨论。
二、磨刀不误砍柴功在调试之前,需要掌握以下一些基本功:1、熟悉当前的开发(调试)环境,比如:设置断点、单步运行、全速运行、终止运行,查看RAM、查看堆栈、查看IO口状态……总之,要熟练掌握基本操作的方法,并深刻了解其中意义。
2、了解芯片本身的资源和特性。
3、了解一点汇编语言的知识。
(本来匠人是准备写“精通”的,但考虑到现状,还是“放低”这方面的要求罢了)。
4、掌握基本的电路知识和排错能力。
(软件调试有时也会牵涉到硬件原因。
总不能连三极管的好坏都不能识别吧?)5、万用表、示波器、信号发生器……这些工具总该会用吧?6、搜索、鉴别资料的能力。
(内事问百度、外事问古狗、有事没事上21ic网)7、与人沟通,描述问题的能力。
(调试36计的最后一计——就是向他人讨教。
当然,你得把话说明白才行)差不多了,如果上述7把砍柴刀磨好了,就可以开始调试了。
接下来,请调入你的程序……三、优先调试人机界面面对程序中的一大堆模块,无从下手是吗?好吧,匠人告诉你,先调显示模块,然后是键盘。
为什么要先调显示模块?道理很简单,我们说“眼睛是心灵的窗户”,同样,“显示是程序的窗户”。
一旦把显示模块调试好了,就可以通过这个窗口,偷窥(天呐,这两个居然是敏感字!)程序内部的数据和状态了。
然后紧接着,就是调试键盘模块。
飞思卡尔DG128_PE编程入门教程

飞思卡尔DG128—PE编程入门教程(1)首先打开CodeWarrior 5.0 开发环境,然后在弹出的选项中选择新建工程注释:如果没有弹出这个对话框,可以在下面的File中选择New Project新建一个工程。
(2) 选择开发芯片的型号(这里我们使用的是MC9S12DG128)接着选择TBDML,这个是我们使用在线调试功能的选项。
(3) 选择工程的生成路径,注意:如果我们不使用PE编程功能的话,在这步结束后,可以直接选择完成按钮来完成工程的新建。
(4) (PE编程功能的步骤)下一步,这个对话框我们什么都不用选择,直接点击下一步。
(5)选择下面这个选项来启动PE编程功能。
(6) 红色边框中选项的功能为是否启动浮点数据的使用,默认第一个是不启用;第二个是启用,float数据为32位,double为32位;第三个是启用,float 数据为32位,double数据为64位。
(7)最后一步什么都不要设置,直接点击完成。
(8) 以上步骤我们完成了一个DG128工程的新建步骤。
PE的使用步骤:(1) 新建工程后,会自动弹出个芯片封装型号的选择,选择后点击OK。
(注意:我们学校使用的芯片是112管脚,所以注意选择红线标注的选项)(2) 点击OK后,就会出现我们要编程的环境了。
如下所示:(3)红色标注的地方就是该工程的工作区。
细心的同学就会发现,它生成的文件中没有我们需要写的源文件XXX.c 。
那我们现在就来生成这些文件,找到下图的选项Processor Expert 。
然后点击第二个选项的Generate Code ' XXX .mcp' (这里的XXX 表示该工程名称)。
下面是自动生成的文件。
这时候发现软件为我们自动的生成了一个Project.c (Project 是我这个工程建立的文件命,不同的工程文件名将导致这个名字不同)的文件。
这个就是我们将要编写的源文件了,它里面包含了主函数main()。
飞思卡尔单片机S12使用方法及程序

飞思卡尔单片机S12使用方法及程序单片机简介:9S12XS128MAA单片机是16位的单片机80个引脚,CPU是CPU12X,内部RAM 8KB,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?/******************系统时钟初始化****************/void Init_System_Clock(){asm { // 这里采用汇编代码来产生40M的总线LDAB #3STAB REFDVLDAB #4STAB SYNRBRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率BSET CLKSEL,#$80}}/******************系统时钟初始化****************/void Init_System_Clock(){asm { // 这里采用汇编代码来产生40M的总线LDAB #3STAB REFDVLDAB #4STAB SYNRBRCLR CRGFLG,#$08,*//本句话含义为等待频率稳定然后执行下一条汇编语句,选择此频率作为总线频率BSET CLKSEL,#$80}上面的代码是汇编写的,这个因为汇编代码量比较少,所以用它写了,具体含义注释已经给出,主函数中调用此函数即可完成时钟初始化,总线时钟为40M.2、SCI模块初始化单片机电路做好了当然少不了和PC之间的通信,通信通过单片机串口SCI链接到PC 端的COM口上去。
1飞思卡尔8位单片机MC9S08JM60开发板实践教程-60页word资料

第一章搭建实验环境1、实验电路板及下载器实物图片2、实验电路图本实验图包含两大部分,分别是CPU.SCH和实验资源.SCH。
CPU采用飞思卡尔8位单片机MC9S08JM60CLD,(电路图介绍)图1-3实验资源部分电路图1-4LCD串口1602液晶电路图1-5RS232接口电路图1-6数码管显示电路图1-7发光管、ad转换以及按键电路图1-83、集成开发软件环境的建立1〉运行文件CW_MCU_V6_3_SE.EXE,在电脑C盘安装飞思卡尔8位(及简化32位)单片机集成开发环境codewarrior6.3版本2〉运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:\Program Files\pgo\USBDM 4.7.0,在这个目录下a>C:\Program Files\pgo\USBDM 4.7.0\FlashImages\JMxx下的文件USBDM_JMxxCLD_V4.sx是下载器的固件文件;b>C:\Program Files\pgo\USBDM4.7.0\USBDM_Drivers\Drivers下有下载器的usb驱动.因此在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动安装位置到以上目录即可。
3〉运行USBDM_4_7_0i_Win之后,还会在目录:C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.3\prog\gdi下增加一些文件,从修改时间上来看,增加了6个文件,这些文件是为了在codewarrior集成开发环境下对usb下载器的调试、下载的支持。
4、C语言编程基础第二章 LED闪烁程序编写过程1、新建工程运行单片机集成开发环境codewarrior IDE出现如下界面●Create New Project :创建一个新项目工程●Load Example Project :加载一个示例工程●Load Previous Project :加载以前创建过的工程●Run Getting started Tutorial:运行CodeWarrior软件帮助文档●Start Using CodeWarrior:立刻使用CodeWarrior点击Create New project按钮,以创建一个新的工程,出现选择CPU的界面如下,请选择HCS08/HCS08JM Family/MC9S08JM60,在右边的Connection窗口可以选择最后一个开源下载器HCS08 Open Source BDM。
飞思卡尔初学之PWM调试笔记

飞思卡尔初学之PWM调试笔记M9S12XS128 单片机有8 个独立的PWM 输出通道,其中每相邻的两个可以级联成一个通道。
本文着重应用实践,理论性的东西少谈为妙,因为理论的东西资料上都有。
想借此平台记录下调试心得以免日后遗忘,因本人也是初学该款单片机,难免有错误之处,还希望达人指点。
PWM 应用步骤:一、PLL 初始化,这一步应该说不算PWM 设置的内容,但是又必须设置,因为这关系着PWM 周期值的计算。
从开发板上的晶振来看是16M,但是总线时钟却并不是16M,S12 单片机里面有个锁相环设置,要设置好了才准确。
具体这个PLL 函数我还没去了解。
现在是现成套用。
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1){ //锁相环时钟=2*16*(2+1)/(1+1)=48MHzCLKSEL=0X00;PLLCTL=0XE1;REFDV = 1; //总线时钟=48/2=24MHzSYNR = 2;_asm(nop); // BUS CLOCK=24M_asm(nop);while (!(CRGFLG & 0x08)) ;CLKSEL = 0x80; //选定锁相环时钟}用了这个PLL 初始化函数以后,总线时钟就是24M 了。
二、PWM 相关设置1、禁止PWM。
PWME2、选择时钟源。
PWMPRCLK, PWMSCLA, PWMSCLB ,PWMCLK。
其中通道0 、1、4、5 可以选择ClockA ClockSA。
通道2、3、6、7 可以选择ClockB ClockSB其中值得说明的是ClockA 或ClockB 是通过总线时钟预分频获得的。
ClockSA 或ClockB 是分别对ClockA ClockB 再次进行分频获得的。
分频系数的设置都有相应的寄存器进行设置。
后面会提到。
飞思卡尔单片机应用实验指导书

飞思卡尔单片机应用实验指导书机械工程学院机械电子工程教研室实验一飞思卡尔嵌入式实验系统入门一GPIO控制实验一、头验目的:熟悉CodeWarrior集成开发环境及飞思卡尔嵌入式实验开发系统掌握AW60GPIO吉构及控制方法掌握CodeWarrior工程结构及创建汇编工程熟悉汇编指令及应用汇编语言编程方法二、实验内容1.运用CodeWarrior新建工程,进行工程程序编辑、编译、下载、调试2.利用飞思卡尔嵌入式实验开发系统根据实验需要进行硬件连接3.根据连接在PTDH上的两个拨动开关的状态,控制接中PTB口上的八个LED&在以下四种不同状态:八个LE而一灭循环;四个灯交替亮一灭;一个LE9移流水灯;两个LED&移流水灯。
实验接线原理图导线持括点*5V沏门阻挑JJ33JD J3图1-1 I/O 口实验接线图三、实验步骤1 .将飞思卡尔嵌入式实验开发系统实验箱接上电源,写入器 BDMg 头插接入核心卡BD 瞰,US 以接入 PCM USBq 。
2 . PCM 上启动CodeWarrior ,新建工程LED.mcp (注意设置工程保存路径)3 .观察工程文件结构,查看相应文件。
4 .在main.asm 中编辑工程主文件5 .编辑相关子程序6 .编译,如果有错误修改,直至编译通过7 .链接、下载,调试观察 LED 丁现象四、思考题1 . CodeWarrior 建立工程有什么工程框架文件,这些文件的作用?2 .嵌入式开发系统有哪些主要元器件?3 .如果采用模块化设计方法,将系统初始化、V VccPTB 口 PTD0 PTD1 PTD2 PTD3 PTD4 PTD5 PTD6 PTD7PTD 口导线接插点拨码开关 口 GNDLEDT 控制、延时程序等各自形成文件,导线接插点PTB0 PTB1 PTB2 PTB3 PTB4 PTB5 PTB6 PTB7工程应用这些文件时应注意什么?4.上拉电阻和下拉电阻分内置的和外接的,内置的电阻一般只有几K或十几K,外接电阻可以是几M十几Mg至更大。
飞思卡尔PWM程序(含详细指令说明)

//在任何时间都是可读、可写的,复位时全置0。应当注意的是,如果当一个 PWM
//输出波形正在产生时,时钟改变,这时就会产生一个平头的或线形脉冲。
//用法: PCLK1=1; 1 通道的时钟源设为 SA。 PCLK1=0; 1 通道的时钟源设为 A。
//如果通道不可用,那么对周期寄存器进行写操作,将会直接导致周期寄存器同缓冲器一起
//闭锁。
//周期的计算方法:(因为左对齐和居中对齐方式输出时的计数器工作方式不一样)
//1) 当 CAEx=0时,即进行左线性输出时:
// `PWMx 周期=通道时钟周期*PWMPERx
PWMPOL_PPOL3=1; // Duty=High Time 极性设置
//3通道对外输出为先高后低(PWMPOL_PPOL3=0 则3通道对外输出为先低后高)
PWMCAE_CAE3=0; // Left-aligned 对齐方式设置
//------------------------------------------------------------------------------------------------------------------//
//功能说明:MC9S12XS128--PWM例程
//使用说明:实现通道3(PTP3)输出频率为1KHz,占空比为50%的方波,用示波器观察
//决定了相关 PWM 通道的周期。 每一个通道的周期寄存器都是双缓冲的,因此如果当通
//道使能后,改变他们的值,将不会发生任何作用,除非当下列情况之一发生:
//*有效的周期结束。
(整理)飞思卡尔单片机调试接口说明

飞思卡尔单片机调试接口说明1、监控模式(Monitor Mode):飞思卡尔HC(9)08系列单片机应用此种调试方式。
又称MON08。
其主要特点是单线双向异步串行通讯。
为了进入监控模式,在单片机上电复位时,该通讯线要处于高电平状态。
除了该通讯线外,还有一些辅助信号线要处于特定的电位状态。
如果单片机的复位矢量不是处于擦除状态(被烧录过,不是$FFFF),则复位信号线或中断信号线需要特定的监控高电压。
有些单片机还需要外加时钟信号以进入监控状态。
起初工业界并没有一定的接口引脚标准,在摩托罗拉在线模拟器(ICS)的基础上,PEMICRO其中NC表示不接任何信号。
MON4和MON5中的一个引脚为通讯线(MR8除外),另一个和MON6,MON7,MON8为辅助信号线,其使用与否和电平状态视芯片而定。
2、6针背景调试模式(BDM):飞思卡尔HC9S08,HC(S)12(X),RS08等系列单片机应用此种调试方式。
其主要特点是单线双向同步串行通讯。
单片机进入背景调试状态比较简单,在单片机复位时只要通讯线在一定时间内处于低电平即可。
但是背景调试模式对通讯信号的要求比较高,其通讯速度、每个命令的执行时间与单片机总线频率有着直接联系。
注意1:引脚1为BKGD通讯信号,用户应为该信号提供上拉电阻。
注意2:引脚4为RST复位信号,用户应为该信号提供上拉电阻。
注意3:RS08在对闪存进行擦除或烧录时要求引脚4提供12伏稳定电压。
3、10针背景调试模式(BDM):飞思卡尔HC16,68xxx系列单片机应用此种调试方式。
其主要特点是双向同步串行通讯。
同步串行通讯时钟由仿真器提供,并与单片机总线时钟同步。
起初摩托罗拉定义了8针BDM接口引脚,与以上定义的后8针相同。
4、10针背景调试模式(BDM):飞思卡尔PowerPC MPC8xx和MPC5xx系列单片机应用此种调试方式。
其主要特点是双向同步串行通讯。
同步串行通讯时钟由仿真器提供,并与单片机总线时钟同步。
飞思卡尔S12xs128单片机BDM调试器使用技巧

S12(X)单片机BDM调试器使用技巧第五届全国大学生“飞思卡尔”杯智能气车竞赛限制采用最新的MC9S12XS128(以下简称XS128)单片机作为主控芯片,替代MC9S12DG128。
XS128是Freescale公司推出的S12系列单片机中的一款增强型16位单片机。
片内资源丰富,接口模块有SPI、SCI、IIC、A/D、PWM等常见模块,在汽车电子应用领域具有广泛用途。
XS128和以往大赛使用的S12DG128系列单片机一样,调试接口都是使用Freescale公司传统的BD M(Background Debug Module)接口。
1 MC9S12XS128单片机介绍(1)CPU:增强型16位HCS12 CPU,片内总线时钟最高40 MHz;(2)片内资源:8 KB RAM、128 KB程序闪存、2 KB数据闪存;(3)串行接口模块:SCI、SPI;(4)脉宽调制模块(PWM)可设置成4路8位或者2路16位,逻辑时钟选择频率宽;(5)1个16路12位精度A/D转换器;(6)控制器局域网模块(CAN);(7)增强型捕捉定时器。
MC9S12XS128单片机有112、80和64引脚3种封装形式。
80-pin封装的单片机没有引出用于扩展方式的端口,仅引出了一个8路A/D接口。
竞赛可使用112或80引脚封装器件。
2 BDM接口和使用BDM调试器内部有一个8位的MC9HC08JB16单片机,该单片机有USB接口,可与PC 机信息交互。
HC08单片机和S12单片机间仅使用一根 I/O线通信,这根相连的信号线名为BKGD。
HC08单片机将BKGD置为输出,以串行发送命令,发送完成后转为输入,以接收信息。
S12单片机收到命令后转为输出,根据调试器发来的命令回送信息,然后立即转入接收态。
BDM工具以此方式实现S12单片机的在线调试、内部闪存的烧写等功能。
关于BDM接口的实现,读者可以参考Freescale任何一款S12单片机的器件手册,其对BDM接口的命令字、交互模式等都有详细描述。
飞思卡尔单片机教程

注 : A/D模块的时钟频率要在500KHz和2MHz之间, 所以在选择分频因子时一定要注意。
采样时间选择
SMP [1 :0]
采样时间
00
2个 A/D时钟周期
01
4个A/D时钟周期
ATDclock= ( (BusClock) / (PRS+1) ) /2
10
8个A/D时钟周期
11
16个A/D时钟周期
设CCBCA = 000,转换序列从通道
0开始;ATD0DR0,
ATD0DR1,ATD0DR2存放转换结果
设CCBCA = 0 10,转换序列从通道 2开始。 仍然是ATD0DR0,
ATD0DR1,ATD0DR2存放转换结果
S8C 、S4C 、S2C 、S1C:定义转换队列的长度 。默认长度为4。 FIFO: 结果寄存器先进先出模式 。1=FIFO模式 ,转换结果是连续 存放的;0=非FIFO模式 ,转换结果放在对应的寄存器中。 FRZ1、FRZ0:背景调试冻结模式允许 。这两个控制位就决定了,
{ while (ATD1STAT0_SCF ==0) ;
ad_value [0] = ATD1DR0; ad_value [4] = ATD1DR4;//使用 PORTB= (byte) ad_value [4] ;
}}
void ATDInit(void)
{ATD1CTL2=0xC0;//AD模块上电,快速清零,无等待模式,禁止外部触发, 中断禁止 // ADPU AFFC AWAI ETRIGLE --- ETRIGP ETRIGE ASCIE ASCIF
PRS=3
ATD1CTL5=0xA4; //右对齐无符号 ,单通道采样 ,通道0
飞思卡尔 使用监控程序经行程序烧写、调试的方法说明—C语言编程版

设置好以后就可以用了。
四、程序的下载 连接好串口线,打开设置好的超级终端,然后对单片机商店或者复位时,超级
终端就会出现以下文字: D-BUG V1.1 Tsinghua MAC All Right Reserved Type H for Help Type Any Key into Debug, Type H for Help 在刚刚上电或复位的 3 秒内,超级终端会检测串口,等待 PC 机端是否发送过来
使用监控程序经行程序烧写、调试的方法说明 C 语言编程版
对 MC9S12DG128 进行调试、程序烧写可以有两种方式:用 BDM 工具通过专门接 口进行和利用监控程序通过串口进行。BDM 方式是芯片厂商提供的调试、烧写方式, 在 DG128 芯片上留有管脚,通过仿真器将目标板和 PC 机相连,PC 机通过 Hiwave 程 序将程序通过仿真器烧写至单片机中。BDM 的一大特点是需要专门的仿真器和开发 环境,在没有仿真器或者 Hiwave 程序时就无法进行程序的烧写。
已有监控程序的单片机在运行时,首先运行的程序就是监控程序,监控程序首 先会等待 3 秒,同时查询串口是否接收到任何数据,若接收到数据,就进入调试状 态,通过指令进行程序烧写、调试;若 3 秒之内没有从串口上接收到数据,就去执 行用户烧写到单片机内的程序。
二、使用 Code Warrior 进行程序编写时的注意事项
改为
其他中断也是如此。
三、PC 机串口界面——超级终端
PC 机上使用的与单片机监控程序通信的软件是 Windows 自带的一个通信界面软 件——超级终端。超级终端的位置在 开始 -> 所有程序 -> 附件 -> 通讯 下,如 图。
打开超级终端后先要给此链接起名称,这个名称可以随意起。
S12单片机模块应用及程序下载调试

S12单片机模块应用及程序下载调试一、S12 单片机模块简介S12 单片机是飞思卡尔(Freescale)公司推出的一款 16 位单片机,它采用了高性能的 CPU 内核,具有较高的运行速度和处理能力。
该单片机内部集成了丰富的外设,如定时器、串口、A/D 转换器、PWM 模块等,为系统设计提供了极大的便利。
S12 单片机的存储空间较大,包括程序存储器、数据存储器和EEPROM 等。
其编程方式灵活,可以使用C 语言或汇编语言进行开发。
二、S12 单片机模块的应用领域1、汽车电子在汽车电子领域,S12 单片机可用于发动机控制、车身电子、底盘控制等系统。
例如,通过监测传感器的数据,实现对发动机点火时机、燃油喷射量的精确控制,提高燃油经济性和动力性能。
2、工业控制在工业自动化领域,S12 单片机可用于各种控制系统,如机器人控制、流水线控制、智能仪表等。
它能够实时采集和处理数据,实现对生产过程的精确控制和监测。
3、消费电子在消费电子领域,S12 单片机可用于智能家居、智能玩具、电子游戏机等产品。
它可以实现对设备的智能控制和人机交互功能。
4、医疗设备在医疗设备领域,S12 单片机可用于医疗器械的控制和监测,如血糖仪、血压计、心电图仪等。
它能够保证设备的准确性和稳定性。
三、S12 单片机模块的程序下载调试方法1、硬件准备在进行程序下载调试之前,需要准备好以下硬件设备:(1)S12 单片机开发板(2)下载调试工具,如 BDM(Background Debug Mode)调试器或 USB 转串口模块(3)电脑2、软件准备(1)安装单片机开发环境,如 CodeWarrior 等。
(2)安装下载调试工具的驱动程序。
3、建立工程打开开发环境,新建一个 S12 单片机的工程。
在工程中设置好单片机的型号、时钟频率、存储空间等参数。
4、编写程序使用 C 语言或汇编语言编写 S12 单片机的程序。
在程序中,需要合理使用单片机的各种资源,实现所需的功能。
飞思卡尔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 的输出。
EN-FSROB 飞思卡尔智能车各模块调试指南

EN-FSROB飞思卡尔智能车各模块调试指南1、下载Motor文件夹下面的程序,测试电机驱动模块,系统控制底板:蜂鸣器、按键、OLED 接口及XS128最小系统;步骤:(1)连线:系统底板P11插针P7、P5、P3、P1/2接电机驱动模块的排针7、5、3、1/2;(2)连接电机,调节4、3按键,可发现电机转速及转向发生变化;(3)分别按下1、2按键,可关闭、打开蜂鸣器,并可观察OLED液晶显示数据是否正常;2、下载A_CarTest文件夹下面的程序,测试XS128核心板串口排针及系统控制底板舵机控制电路:步骤:(1)上电,调节电位器,万用表测试P10舵机插接排针的6V、GND引脚电压调整至6V;(2)XS128核心板UART排针通过杜邦线插上蓝牙模块,注意插线顺序;(3)手机安装蓝牙串口测试工具,并打开,通过摇动手机左右晃动可发现舵机旋转;3、CC2500模块测试:1)将T103模块插入电脑,打开《CC2500无线串口数据传输下载软件》文件夹下的下载软件;给T103模块下载程序2)给XS128下载CC2500测试程序;3)插上CC2500模块到底板,把另外一块CC2500模块通过转接座插入到T103模块,并打开串口调试助手,并按照下图进行配置:4)此时,通过串口调试助手发送数据可在底板OLED模块的R_Buff区显示出来发送的数据,然后按下地板上的四个按键中的其中一个,可在OLED模块的S_Buff区显示所按下的按键号并通过CC2500模块传送到串口调试助手;4、CCD测试;1)下载CCD测试程序;2)连接CCD传感器到智能车底板的P3或P4接口;3)电脑安装PL2303驱动,插入USB-TTL小板,并且用杜邦线将USB-TTL小板与XS128核心板连接;4)打开智能车调试助手,按如下方法配置,配置好打开串口可发现数据上传到调试助手上面;5、摄像头测试;1)下载OV7620测试程序;2)正确连接摄像头到底板上的P7OV7620转接接口;3)电脑安装PL2303驱动,插入USB-TTL小板,并且用杜邦线将USB-TTL小板与XS128核心板连接;4)打开智能车调试助手,按如下方法配置,配置好打开串口可发现摄像头所拍照片上传到调试助手上面;6、编码器测试;编码器改装,褐色——VCC;蓝色——GND;白色——IN;。
飞思卡尔8位单片机MC9S08JM60开发板实践教程

第一章搭建实验环境系统时钟设置#include "App\Include\App.h"#ifndef _MCG_C#define _MCG_C//oscillator 12MHZ 倍频为24MHZ()先8分频后16倍频void S_MCGInit(void){/* the MCG is default set to FEI mode, it should be change to FBE mode*//************************************************************************** ***********MCGC2[7:6] BDIV总线频率分频因子–选择由MCGC1寄存器中CLKS位决定的时钟源的分频。
这控制总线频率。
00 编码0 –时钟1分频01 编码1 –时钟2分频(复位后默认)10 编码2 –时钟4分频11 编码3 –时钟8分频[5] RANGE频率范围选择–选择外部振荡器或者外部时钟源的频率范围。
1 选择1MHz到16MHz外部振荡器的频率范围。
(1MHz到40MHz的外部时钟电源)的高频率范围0 选择32kHz到100kHz外部振荡器的频率范围。
(32kHz到1MHz的外部时钟电源)的低频率范围[4] HGO高增益振荡器选择–控制外部振荡器操作模式。
1 配置外部振荡器为高增益运行0 配置外部振荡器为低功耗运行[3] LP低功耗选择–控制在忽略模式中FLL(或者PLL)是否为无效1 FLL(或PLL)在忽略模式(低功耗)中为无效的。
0 FLL(或PLL)在忽略模式中为无效的。
[2] EREFS外部参考时钟选择–为外部参考选择时钟源1 选择振荡器0 选择外部时钟源[1] ERCLKEN外部参考时钟使能–使能外部参考时钟作为MCGERCLK1 MCGERCLK激活0 MCGERCLK 无效[0] EREFSTEN外部参考时钟停止使能MCGC2 0b0011 0110 激发外部时钟(晶振)(没有使能)*************************************************************************** ***********/MCGC2=MCGC2_RANGE_MASK|MCGC2_HGO_MASK|MCGC2_EREFS_MASK|MCGC2_ERCLKEN_MASK;while(!MCGSC_OSCINIT);//MCGSC寄存器中OSCINIT(第1位)为1,表示由EREFS位选择的晶振被初始化。
飞思卡尔单片机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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
调试方法2:串口调试法
通过将程序运行过程中的数据、变量值等发送到PC机上查看,同时也可从PC机上通过串口发送数据到单片机,修改程序运行的参数(或步骤)进行调试。智能车运行过程中常用用串口调试的方法。
对于飞思卡尔单片机编程,常用的调试方法有3种:
调试方法1:在线调试法(Debug模式)
CodeWarrior 10.3 开发环境下,可启动Debug模式,利用step into, step over, step return ,run to line 按钮,程序中设置断点,修改变量的值,查看寄存器的值等,进行调试。
调试方法3:硬件调试法
通过连接在芯片外部的硬件或电路的变化或响应,查看程序运行的结果或状态(例如,在程序的某一位置点亮小灯、开蜂鸣器、发数据到LCD等)。
理解和掌握概念:单步调试
相信任何调试人员对单步调试非常的熟悉。CodeWarrior(与Eclipse基本一致)提供step into、step over、 step return三个命令来支持单步调试。三者的具体区别是:step into(快捷键F5)就是单步执行,遇到子函数就进入并且继续单步执行;step over(快捷键F6)是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。step return(快捷键F7)就是单步执行到子函数内时,用step return就可以执行完子函数余下部分,并返回到上一层函数。说的通俗点就是,step into:进入子函数,step over:越过子函数,但子函数会执行,step return:跳出子函数。
此外,Eclipse还提供了Run to line(快捷键Ctr + R)功能,从开始处运行程序,到正在执行的断点暂停。