首页 S12XS128单片机教程

S12XS128单片机教程

举报
开通vip

S12XS128单片机教程第一讲:HCS12原理及应用--PWM模块介绍 时间:2009-11-25 22:51来源:电子设计吧 作者:dzsj8 点击: 1205次 该教程以MC9S12DG128单片机为核心进行讲解,全面阐释该16位单片机资源。本文为第一讲,开始介绍该MCU的PWM模块。 PWM 调制波有 8 个输出通道,每一个输出通道都可以独立的进行输出。每 一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器 和两个可供选择的时钟源。每一个 PWM 输出通道都能调制出占空比从 0—100% 变化的波形。 PWM 的...

S12XS128单片机教程
第一讲:HCS12原理及应用--PWM模块介绍 时间:2009-11-25 22:51来源:电子设计吧 作者:dzsj8 点击: 1205次 该 教程 人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程 以MC9S12DG128单片机为核心进行讲解,全面阐释该16位单片机资源。本文为第一讲,开始介绍该MCU的PWM模块。 PWM 调制波有 8 个输出通道,每一个输出通道都可以独立的进行输出。每 一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器 和两个可供选择的时钟源。每一个 PWM 输出通道都能调制出占空比从 0—100% 变化的波形。 PWM 的主要特点有: 1、它有 8 个独立的输出通道,并且通过编程可控制其输出波形的周期。 2、每一个输出通道都有一个精确的计数器。 3、每一个通道的 PWM 输出使能都可以由编程来控制。 4、PWM 输出波形的翻转控制可以通过编程来实现。 5、周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。 6、8 字节或 16 字节的通道 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 。 7、有 4 个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时 钟频率。 8、通过编程可以实现希望的时钟周期。 9、具有遇到紧急情况关闭程序的功能。 10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。 第2讲:HCS12原理及应用--PWM寄存器说明1 时间:2009-11-25 22:56来源:电子设计吧 作者:dzsj8 点击: 966次   1、PWM启动寄存器PWME PWME 寄存器每一位如图 1 所示: 复位默认值:0000 0000B图 1 PWME 寄存器  每一个PWM 的输出通道都有一个使能位 PWMEx 。它相当于一个开关,用来启动和关闭相应通道的 PWM 波形输出。当任意的 PWMEx 位置 1,则相关的 PWM 输出通道就立刻可用。   用法: PWME7=1 --- 通道7 可对外输出波形 PWME7=0 --- 通道7 不能对外输出波形 注意:在通道使能后所输出的第一个波形可能是不规则的。当输出通道工作在串联模式时(PWMCTL 寄存器中的 CONxx 置1),那么)使能相应的 16 位 PWM 输出通道是由 PWMEx 的高位控制的,例如 :设置 PWMCTL_CON01 = 1,通道0、1级联,形成一个16位 PWM 通道,由通道 1 的使能位控制 PWM 的输出。   2、PWM时钟选择寄存器PWMCLK PWMCLK 寄存器每一位如图3 所示: 复位默认值:0000 0000B图2 PWMCLK 寄存器  S12的PWM 共有四个时钟源,每一个 PWM 输出通道都有两个时钟可供选择(ClockA、ClockSA 或Clock B、ClockSB))。其中0、1、4、5 通道可选用ClockA和ClockSA,2、3、6、7 通道可选用ClockB、ClockSB 通道。该寄存器用来实现几个通道时钟源的选择。   用法: PCLK0 = 1 --- 通道0(PTP0)的时钟源设为ClockSA PCLK2 = 0 --- 通道2(PTP2)的时钟源设为ClockB (责任编辑:dzsj8) 第3讲:HCS12原理及应用--PWM寄存器说明2 时间:2009-11-25 22:58来源:电子设计吧 作者:dzsj8 点击: 857次 1、PWM预分频寄存器PWMPRCLK PWMPRCLK 寄存器每一位如图3 所示:   复位默认值:0000 0000B图 3 PWMPRCLK 寄存器  PWMPRCLK 寄存器包括ClockA预分频和ClockB预分频的控制位。ClockA、ClockB的值为总线时钟的1/2n (0≤n≤7),具体设置参照图4和图5   图 4 Clock A 预分频设置图5 Clock B 预分频设置 PCKB0~PCKB2 是对ClockB进行预分频。 PCKA0~PCKA2 是对ClockA进行预分频。   2、PWM分频寄存器PWMSCLA、PWMSCLB PWMSCLA 寄存器每一位如图 6 所示:图6 PWMSCLA寄存器 Clock SA 是通过对 PWMSCLA 寄存器的设置来对ClockA 进行分频而产生的。其计算公式为: Clock SA=Clock A /(2*PWMSCLA) PWMSCLB 寄存器与PWMSCLA 寄存器相似,Clock SB 就是通过对PWMSCLB 寄存器的设置来对 ClockB 进行分频而产生的。其计算公式为: Clock SB=Clock B /(2*PWMSCLB) 手把手教你写S12XS128程序(4)--PWM寄存器说明3 时间:2009-11-26 07:09来源:电子设计吧 作者:dzsj8 点击: 751 次 1、PWM极性选择寄存器PWMPOL PWMPOL 寄存器每一位如图7 所示:      该寄存器是0~7通道PWM输出起始极性控制位,用来设置PWM输出的起始电平。   用法:PWMPOL_PPOL0=1--- 通道 0 在周期开始时输出为高电平,当计数器等于占空比寄存器的值时,输出为低电平。对外输出波形先是高电平然后再变为低电平。   2、PWM波形对齐寄存器PWMCAE PWMCAE 寄存器每一位如图 8 所示:  图 8 PWMCAE 寄存器   PWMCAE 寄存器包含 8 个控制位来对每个 PWM 通道设置左对齐输出或中心对齐输出。   用法: PWMCAE_CAE0 = 1 --- 通道0 中心对齐输出 PWMCAE_CAE7 = 0 --- 通道7 左对齐输出 注意:只有输出通道被关闭后才能对其进行设置,即通道被激活后不能对其进行设置。         图 7 PWMPOL 寄存器 (责任编辑:dzsj8) 手把手教你写S12XS128程序(5)--PWM寄存器说明4 时间:2009-11-26 07:22来源:电子设计吧 作者:dzsj8 点击: 734次 1、PWM控制寄存器PWMCTL PWMCTL 寄存器每一位如图 9 所示:图 9 PWMCTL 寄存器   该控制寄存器设定通道的级联和两种工作模式:等待模式和冻结模式。这两种模式如图10和图11所示。图10 等待模式 图11 冻结模式   只有当相应的通道关闭后,才能改变 这些控制字。 用法: PWMCTL_CON67=1 --- 通道 6、7 级联成一个16位的PWM通道。此时只有 7 通道的控制字起作用,原通道7的使能位、PWM输出极性选择位、时钟选择控制位以及对齐方式选择位用来设置级联后的PWM输出特性 PWMCTL_CON67=0 --- 通道 6,7 通道不级联 CON45、CON23、CON01 的用法同 CON67 相似。设置此控制字的意义在于扩大了 PWM 对外输出脉冲的频率范围。 PSWAI=1 --- MCU 一旦处于等待状态,就会停止时钟的输入。这样就不会因时钟在空操作而费电;当它置为 0,则 MCU 就是处于等待状态,也允许时钟的输入。 PFRZ=1 --- MCU 一旦处于冻结状态,就会停止计数器工作。 手把手教你写S12XS128程序(6)--PWM寄存器说明5 时间:2009-11-26 07:30来源:电子设计吧 作者:dzsj8 点击: 810次 1、PWM通道计数寄存器 PWMCNTx PWMCNTx 寄存器共有 8个,每一个通道都有一个8位PWM加/减双向计数器,通道级联后可变成16位PWM加/减双向计数器。下面以PWMCNT0为例对 PWMCNTx 寄存器进行介绍。 PWMCNT0 寄存器如图 12 所示:  图 12 PWMCNT0 寄存器   计数器以所选时钟源的频率运行。计数器在任何时候都可以被读,而不影响计数,也不影响对 PWM 通道的操作。 任何值写入 PWMCNT0 寄存器都会导致计数器复位置 0,且其计数方向会 被设置为向上计数,并且会立刻从缓冲器载入任务和周期值,并会根据翻转极性的设置来改变输出。当计数器达到计数值后,会自动清零。只有当通道使能后,计数器才开始计数。   2、PWM通道周期寄存器PWMPERx PWMPERx 寄存器共有 8 个,每一个通道都有一个这样的周期寄存器。这个 寄存器的值就决定了相关 PWM 通道的周期。每一个通道的周期寄存器都是双缓 冲的,因此如果当通道使能后,改变他们的值,将不会发生任何作用,除非当下列情况之一发生: *有效的周期结束。 *对计数器进行写操作(计数器复位) *通道不可用(PWMEx = 0) 这样就会使 PWM 输出波形要么是新波形要么是旧波形,并不会在两者之间 进行交替变换。如果通道不可用,那么对周期寄存器进行写操作,将会直接导致 周期寄存器同缓冲器一起闭锁。图 13 所示的是 PWMPER0 寄存器:  图 13 PWMPER0 寄存器   3、PWM通道占空比寄存器PWMDTYx PWMDTYx 寄存器也有 8 个,每一个通道都有一个这样的占空比常数寄存 器。这个寄存器的值就决定了相关 PWM 通道输出波形的占空比。每一个通道的 占空比寄存器都是双缓冲的,因此如果当通道被激活后,改变他们的值将不会发生任何作用,除非当下列情况之一发生: *有效的周期结束。 *对计数器进行写操作(计数器复位) *通道不可用(PWMEx = 0) 这样就会使 PWM 输出波形要么是新波形要么是旧波形,并不会在两者之间 进行交替变换。如果通道没有被激活,那么对占空比常数寄存器进行写操作,将会直接导致周期寄存器同缓冲器一起闭锁。 当计数值与占空比常数 PWMDTY 相等时,则比较输出器有效,这时就会将触发器置位,然后 PWMCNT 继续计数,当计数值与周期常数 PWMPER 相等时,比较器输出有效,将触发器复位,同时也使 PWMCNT 复位,结束一个输出周期。   手把手教你写S12XS128程序(7)--PWM工作原理 时间:2009-11-27 15:44来源:电子设计吧 作者:dzsj8 点击: 862次 S12微控制器PWM模块是由独立运行的8位脉冲计数器PWMCNT、两个比较寄存器PWMPER和PWMDTY组成。 1、左对齐方式 在该方式下,脉冲计数器为循环递增计数,计数初值为0 。 当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始一个输出周期。当计数值与占空比常数寄存器PWMDTY相等时,比较器1输出有效,将触发器置位,而PWMCNT继续计数;当计数值与周期常数寄存器PWMPER相等时,比较器2输出有效,将触发器复位,同时PWMCNT也复位,结束一个输出周期。原理参照图14:图14 PWM左对齐方式 2、中心对齐方式 在该方式下,脉冲计数器为双向计数,计数初值为0 。 当PWM使能后,计数器PWMCNT从0开始对时钟信号递增计数,开始输出一个周期。当计数器与占空比常数寄存器PWMDTY相等时,比较器1输出有效,触发器翻转,而PWMCNT继续计数,当计数值与周期常数PWMPER相等时,比较器2输出有效,此时改变PWMCNT的计数方向,使其递解计数;当PWMCNT再次与PWMDTY相等时,比较器1再一次输出有效,使触发器再次翻转,而PWMCNT继续递减计数,等待PWMCNT减回至0,完成一个输出周期。原理参照图15: 图15    中心对齐方式 3、周期计算方法 左对齐方式: 输出周期 = 通道周期 × PWMPERx 中心对齐方式: 输出周期 = 通道周期 × PWMPERx × 2 4、脉宽计算方法 左对齐方式: 占空比 = [ (PWMPERx - PWMDTYx) / PWMPERx ] × 100% 中心对齐方式: 占空比 = [ PWMDTYx / PWMPERx ] × 100% 手把手教你写S12XS128程序(8)--PWM 应用实例 时间:2009-11-28 21:49来源:电子设计吧 作者:dzsj8 点击: 812次 PWM 初始化步骤 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 1、禁止PWM PWME = 0 2、选择时钟 PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK 3、选择极性 PWMPOL 4、选择对齐方式 PWMCAE 5、选择占空比和周期 PWMDTYx, PWMPERx 6、使能PWM PWME = 1     【例程1】 //------------------------------------------------------------------------------------------------------------------// //功能说明:MC9S12XS128--PWM例程 //使用说明:实现通道3(PTP3)输出频率为1KHz,占空比为50%的方波,用示波器观察 //程序设计:电子设计吧【www.dzsj8.com】 //设计时间:2010.01.21 //----------------------------------------------------------------------------------------------------------------// #include /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ //--------------初始化函数----------------// //-----时钟初始化程序--------// void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(2+1)/(1+1)=48MHz REFDV=1; //总线时钟=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08)); CLKSEL=0x80; //选定锁相环时钟 } //-----PWM初始化程序------// void PWM_Init(void) { PWME_PWME3=0x00; // Disable PWM 禁止 PWMPRCLK=0x33; // 0011 0011 A=B=24M/8=3M 时钟预分频寄存器设置 PWMSCLA=150; // SA=A/2/150=10k 时钟设置 PWMSCLB=15; // SB=B/2/15 =100k 时钟设置 PWMCLK_PCLK3=1; // PWM3-----SB 时钟源的选择 PWMPOL_PPOL3=1; // Duty=High Time 极性设置 PWMCAE_CAE3=0; // Left-aligned 对齐方式设置 PWMCTL=0x00; // no concatenation 控制寄存器设置 PWMPER3=100; // Frequency=SB/100=1K 周期寄存器设置 PWMDTY3=50; // Duty cycle = 50% 占空比寄存器设置 PWME_PWME3=1; // Enable PWM 使能 } //-----------------主函数--------------------// void main(void) { /* put your own code here */ PLL_Init(); PWM_Init(); EnableInterrupts; for(;;) { _FEED_COP(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave main */ } 手把手教你写S12XS128程序(9)--A/D转换模块介绍1 时间:2009-11-30 22:10来源:电子设计吧 作者:dzsj8 点击: 693次 1、A/D转换原理 A/D转换的过程是模拟信号依次通过取样、保持和量化、编码几个过程后转换为数字格式。 a)取样与保持 一般取样与保持过程是同时完成的,取样-保持电路的原理图如图16所示,由输入放大器A1、输出放大器A2、保持电容CH和电子开关S组成,要求 AV1 * AV2 = 1。原理是:当开关S闭合时,电路处于取样阶段,电容器充电,由于 AV1 * AV2 = 1,所以输出等于输入;当开关S断开时,由于A2输入阻抗较大而且开关理想,可认为CH没有放电回路,输出电压保持不变。图16 取样-保持电路 取样-保持以均匀间隔对模拟信号进行抽样,并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被 A/D 转换器精确转换。 b)量化与编码 量化的方法,一般有舍尾取整法和四舍五入法,过程是先取顶量化单位Δ,量化单位取值越小,量化误差的绝对值就越小,具体过程在这里就不做介绍了。将量化后的结果用二进制码 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示叫做编码。   2、A/D转换器的技术指标 a)分辨率 分辨率说明A/D转换器对输入信号的分辨能力,理论上,n位A/D转换器能区分的输入电压的最小值为满量程的 1/2n 。也就是说,在参考电压一定时,输出位数越多,量化单位就越小,分辨率就越高。S12的ATD模块中,若输出设置为8位的话,那么转换器能区分的输入信号最小电压为19.53mV。 b)转换时间 A/D转换器按其工作原理可以分为并联比较型(转换速度快ns级)、逐次逼近型(转换速度适中us级)、双积分型(速度慢抗干扰能力强)。 不同类型的转化的A/D转换器转换时间不尽相同,S12的ATD模块中,8位数字量转换时间仅有6us,10位数字量转换时间仅有7us。 (责任编辑:dzsj8) 手把手教你写S12XS128程序(10)--A/D转换模块介绍2 时间:2009-12-09 21:32来源:电子设计吧 作者:dzsj8 点击: 690次 S12内置了2组10位/8位的A/D模块:ATD0和ATD1,共有16个模拟量输入通道,属于逐次逼近型A/D转换器(这个转换过程与用天平称物的原理相似)。 1、功能结构图图17 A/D 模块功能结构图 图17所示的是 A/D 模块的功能结构,这个功能模块被虚线划分成为图示所示的虚线所隔离的三个部分:IP 总线接口、转换模式控制/寄存器列表,自定义模拟量。 IP 总线接口负责该模块与总线的连接,实现 A/D 模块和通用 I/O 的目的, 还起到分频的作用; 转换模式控制寄存器列表中有控制该模块的所有的寄存器,执行左右对齐运 行和连续扫描。 自定义模拟量负责实现模拟量到数字量的转换。包括了执行一次简单转换所 需的模拟量和数字量。   2、 HCS12 中A/D转化模块特点 8/10 位精度;7 us, 10-位单次转换时间.;采样缓冲放大器;可编程采样时间; 左/右对齐, 有符号/无符号结果数据;外部触发控制;转换完成中断;模拟输入 8 通道复用;模拟/数字输入引脚复用;1 到 8 转换序列长度;连续转换模式;多通 道扫描方式。 ATD 模块有模拟量前端、模拟量转换、控制部分及结果存储等四部分组成。其中模拟前端包括多路转换开关、采样缓冲器、放大器等,结果存储部分主要有8个 16 位的存储器和反映工作状态的若干标志位。 (责任编辑:dzsj8 手把手教你写S12XS128程序(11)--A/D寄存器说明1 时间:2009-12-11 12:26来源:电子设计吧 作者:dzsj8 点击: 694次 1、ATD0控制寄存器2---ATD0CTL2 ATD0CTL2主要控制ATD0的启动、状态标志以及上电模式,对寄存器进行写操作时,将中断当前的转化过程。寄存器ATD0CTL2如图18所示:图18 ATD0CTL2寄存器 ADPU:A/D 使能控制位,相当于一个开关,用来启动/禁止A/D转换 1 = A/D 模块上电 0 = 禁止 A/D,以减少功耗 AFFC:A/D 快速转换完成标志位清零 1 = 快速标志位清零顺序,每次读取结果寄存器自动清零 0 = 正常标志位清零顺序,需要软件方式对状态标志位清零 AWAI:A/D 等待模式 1 = 等待模式下,ATD继续运行 0 = 等待模式下,ATD停止运行,以降低功耗 ETRIGP、ETRIGLE、ETRIGE: ETRIGLE ETRIGP ETRIGE 描述 x x 0 忽略外部触发 0 0 1  下降沿触发 0 1 1 上升沿触发 1 0 1 低电平触发 1 1 1 高电平触发 【注意】ETRIGE:外部触发使能控制位,该功能借助引脚AN7,当AN7接收到外部触发时,启动A/D转换,否则不进行转换。0--忽略外部触发;1--有外部触发时开始转换,此时AN7不能用于A/D转换。 ASCIE:A/D 转化序列转换结束中断使能控制位 1 = 允许ATD转换序列转换结束后发生中断 0 = 禁止ATD 中断 ASCIF:A/D转换序列转换结束中断标志,只用于读。 1 = 发生中断 0 = 为发生中断 手把手教你写S12XS128程序(12)--A/D寄存器说明2 时间:2009-12-12 12:06来源:电子设计吧 作者:dzsj8 点击: 644次 2、ATD0控制寄存器3---ATD0CTL3 ATD0CTL3主要控制结果寄存器的映射,设置转换序列的长度,还可以暂时冻结ATD0模块,尤其确定ATD0在BDM状态下的行为。寄存器ATD0CTL3如图19所示:图19 ATD0CTL3寄存器 S1C、S2C、S4C、S8C:转换序列长度选择位控制位   【注意】ATD的每次启动要进行若干次扫描循环,每次扫描循环称为一个转换序 列。 FIFO:结果寄存器 FIFO模式控制位, 1 = 结果寄存器映射到转换序列 0 = 结果寄存器没有映射到转换序列 FRZ0、FRZ1:背景调试冻结控制位 FRZ Response 00 Ignore IFREEZE(冻结模式下继续转换) 01 Reserved(冻结模式下保留) 10 Finish conversion then freeze(完成转换后冻结) 11 Freeze Immediately(冻结模式下立刻冻结) (责任编辑:dzsj8) 手把手教你写S12XS128程序(13)--A/D寄存器说明3 时间:2009-12-14 11:50来源:电子设计吧 作者:dzsj8 点击: 591次 3、ATD0控制寄存器4---ATD0CTL4 ATD0CTL4用于选择时钟,选择采样转换时间以及选择8位/10位转换方式。寄存器ATD0CTL4如图20所示:图20 ATD0CTL4寄存器 SRES8 : A/D 精度选择控制位 1 = 将采集到的模拟量以8位二进制数表示 0 = 将采集到的模拟量以10位二进制数表示 SMP0、SMP1 : 采样时间选择控制位 SMP [1:0] 采样时间 00 2 A/D 时钟周期 01 4 A/D 时钟周期 10 8 A/D 时钟周期 11 16 A/D 时钟周期 PPS[0:4] : 5 位 模数计数器预分频器 - 分频系数从 2 到 64 - A/D时钟计算公式 :ATDClock = BusClock/(PRS + 1) × 0.5 - A/D时钟频率应满足: 【注意】对于AD转换来说,它的转换周期包括采样时间和运算时间。如果频率太高,则采样时间过短。这对于输出阻抗比较大或信号频率比较高的信号来说,就会产生较大的采样误差,那么AD转换的精度就会受较大的影响。       (责任编辑:dzsj8) 手把手教你写S12XS128程序(14)--A/D寄存器说明4 时间:2009-12-17 19:39来源:电子设计吧 作者:dzsj8 点击: 608次 4、ATD0控制寄存器4---ATD0CTL5 ATD0CTL5用于选择转换方式,选择转换通道,设置单/多通道转换和单次/连续转换模式以及对齐方式。寄存器ATD0CTL5如图20所示: 图20 寄存器ATD0CTL5 【注意】ATDCTRL5设置成多通道转换后,ATDCTRL3设置采集的通道数,此外ATDCTRL5中还需要设置多通道采集的起始通道。比如采集7个通道,起始通道是1,那么就采集从1-7通道,如果起始通道是2,就采集2-7,还有0通道。 【注意】在S12系列中,当转换序列长度设置为1(S8C:S1C=0001),MULT=0时,只对一个通道进行一次转换。 手把手教你写S12XS128程序(15)--A/D寄存器说明5 时间:2009-12-27 00:47来源:电子设计吧 作者:dzsj8 点击: 583次 5、ATD0状态寄存器5---ATD0START0、ATD0START0   ATD0START0反映当前的转换通道、A/D转换是否结束、是否有外部触发等; ATD0START1反映转换序列中相应的转换是否完成。寄存器ATD0START0、ATD0START1如图21所示:   SCF ---转换序列完成标志 在单次转换模式时,当转换完成后置位 (SCAN = 0) 在连续转换模式时,当第一次转换完成后置位 (SCAN = 1),当AFFC = 0,写 1 清零。 ETORF ---外部触发覆盖标志 如果在转换过程中高/低电平出现,置位 FIFOR 当结果寄存器在读出之前已经被写入时,置位 ( CCF 没有清零) CC[2:0]转换计数器---3位计数器指向下一个将要转换的通道 CCF7 -CCF0 ---独立通道转换完成标志位每个相应的通道转换结束后置位,当相应的 A/D 结果寄存器被读出时,清零,注意当 AFFC 位不同时的情况 手把手教你写S12XS128程序(16)--A/D转换应用实例 时间:2009-12-27 00:51来源:电子设计吧 作者:dzsj8 点击: 780次 第十六讲:A/D转换应用实例 要让 ATD 开始转换工作,必须经过以下三个步骤: 1.将 ADPU 置 1,使 ATD 启动; 2.按照要求对转换为数、扫描方式、采样时间、时钟频率及标志检查等方式 进行设置; 3.发出启动命令; 如果上电默认状态即能满足工作要求,那么只要将 ADPU 置 1,然后通过控 制寄存器发出转换命令,即可实现转换。   【例程2】 程序描述:由通道ATD0进行单通道A/D转换,转换值在B口显示 程序如下:   #include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dg128b" /******定义变量********/ word AD_wValue;//AD转换结果 /*时钟初始化*/ void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(2+1)/(1+1)=48MHz REFDV=1; //总线时钟=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08)); CLKSEL=0x80; } /*AD初始化*/ void AD_Init(void) { ATD0CTL2=0xC0; // 启动A/D, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD0CTL3=0x20; // 转换序列长度为4, No FIFO, Freeze模式下继续转换 ATD0CTL4=0x85; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1]=2MHz;PRS=5,divider=12 ATD0CTL5=0xA0; // 右对齐无符号,单通道采样,通道0 ATD0DIEN=0x00; // 禁止数字输入 } /*读取AD转换结果*/ void AD_GetValue(word *AD_wValue) { *AD_wValue=ATD0DR0; //读取结果寄存器的值 } /**********主函数**************/ void main(void) { PLL_Init(); AD_Init(); DDRB=0xFF; PORTB=0x00; EnableInterrupts; for(;;) { while(!ATD0STAT1_CCF0); // 等待转换结束while(ATDOSTAT1_CCF0==1) AD_GetValue(&AD_wValue); // 读取转换结果 PORTB = (byte)AD_wValue; // 在B口显示转换值 } } 手把手教你写S12XS128程序(17)--Timer模块介绍1 时间:2009-12-29 11:51来源:电子设计吧 作者:dzsj8 点击: 808次 1、简述     MC9S12XS128定时器模块与MC9S12DG128 ECT部分功能完全类似,以下均以ECT模块介绍xs128定时器模块。         HC12 增强型捕捉计时器模块在HCS12 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车 ABS 方面。     基准计时器的核心仍然是一个 16 位的可编程计数器,其时钟源来自一个预分频器。该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产生一个输出波形。波形的脉宽可以在几微秒到数秒的范围内变化。     增强型定时器模块(ECT)的结构框图如下,ECT功能相当于高速的I/O口,由一个4位预分频器、一个16位自由运行计数器,8个16位IC/OC通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。           ECT实际上是一个16位的可编程计数器,它的基本时钟频率可以通过预分频器设置,用于产生波形输出,测量输入波形,统计脉冲个数,可以作为定时中断功能和独立时钟基准。 2、运行模式 停止:由于时钟停止,计时器和计数器均关闭。 冻结:计时器和计数器均保持运行,直到 TSCR($06)的 TSFRZ 位被置 1。 等待:计数器保持运行,直到 TSCR($06)的 TSWAI 位被置 1。 正常:计时器和计数器均保持运行,直到 TSCR($06)的 TEN 位和 MCCTL($26)的 MCEN 位被分别清 0。   (责任编辑:dzsj8) 手把手教你写S12XS128程序(18)--Timer模块介绍2 时间:2009-12-30 22:12来源:电子设计吧 作者:dzsj8 点击: 728次 IC 通道组        IC 通道组由四个标准的缓冲通道 IC0-IC3 和四个非缓冲通道 IC4-IC7 组成, 两部分的基本功能都是捕捉外部事件发生的时刻,但是缓冲通道除了 IC/OC 寄存器 TCn 外,还设有保持寄存器 TCnH,此外还在入口设置了延迟计数器,用来提高抗干扰能力。非缓冲通道没有保持寄存器,入口也没有延迟计数器,但每个通道入口设置了一个 2 输入端的多路器,事件触发信号可以是来自本通道的输入引脚 PORTn,也可以是来自其关联通道 PORT(n-4)的延迟计数器输出,使用更 加灵活。当延迟功能有效时,输入引脚检测到一个有效的边沿后,延迟计数器开 始对 P 时钟(模块时钟)进行计数,当到达设定的计数值后,延迟计数器在其输出 端有条件地产生一个脉冲,这个条件就是延迟前后的引脚电平相反。这样可以避免对窄输入脉冲做出反应。延迟计数结束后,计数器自动清除。输入信号两个有 效边沿之间的持续时间必须大于设定的延迟时间。       在 ECT 中,所有 IC 通道均设置了覆盖保护功能,可以通过寄存器 ICOVW设置是否允许某个通道用新的捕捉结果覆盖上一个结果。     对于缓冲的 IC 通道 PT0-PT3,还具有锁存与队列两种工作方式。在锁存方 式下,每个有效的引脚事件只将自由定时器的值放入捕捉寄存器 TCn,而 TCn 到保持寄存器 TCnH 的传送必须依赖递减模数计数器回 0 或者其他强制锁存命令 才能实现,这时 IC 的工作情形与第 6 章的 TIM 模块相似。在队列方式下(图 7-2), TCn 与 TCnH 形成了一个类似先进先出的队列,每个捕捉结果从 TCn 进入,然 后随着下一个捕捉结果的到来移入 TCnH,程序可以从 TCnH 取得结果,然而这 个队列是开放的,即程序也可以直接从 TCn 取得捕捉结果。队列方式为 CPU 提 供了充分的响应时间。     由于 PAC0-3 与 IC0-3 共享相同的引脚,而且共享入口的逻辑,因此在两种 方式下,PAI 与 IC 都可以同时工作,对同一引脚进行记录,前者记录脉冲或者 边沿的数量,后者记录具体的时刻。    模数递减计数器        16 位递减模数计数器(MDC)可以用作时钟基准,产生周期性的中断请求, 也可用于将 IC 寄存器和脉冲累加器的值锁存到各自的保持寄存器中。锁存动作 可以通过程序设定为周期性的或一次性的。MDC 的时钟频率可通过独立的定标 器设定,内部设有定时常数寄存器,可以实现自动重装载,但 MDC 的常数寄存 器与 MDC 计数器使用相同的地址,加载时通过特殊的时序实现。     每当 MDC 回 0 时,将在给定的时间段内控制贮和 PAI 寄存器的内容向各自 的缓冲寄存器传输。反映了 MDC 在 IC、PAI 系统中的作用。   脉冲累加器     脉冲累加器由 4 个 8 位的通道 PAC0-PAC3 组成,可以通过级联形成两个 16 位通道 PACA、PACB,它可以统计输入引脚上出现的有效边沿的数量,也可以统计有效电平出现的累计时间。各个通道的 8 位保持寄存器是与 4 个缓冲 IC 通 道相关联的,它们共享边沿检测与延迟电路。当 IC 工作在两种不同的队列方式 时, PAC 保持寄存器也处于不同的工作状态,在锁存方式下,PCnH 的加载依 靠 MDC 计数器或者强制命令实现,而在队列方式下,则依靠 IC 通道的 TCnH 读命令。可见在 ECT 模块下, IC 与 PAI 的工作联系更加紧密。       此外,脉冲累加器还有饱和记忆功能,当 8 位的脉冲累加器计数超过$FF 后 记忆保持,而不回滚到 0,这时,计数值$FF 意味着计数已经达到或超过 255, 如不需要,该功能可以关闭。这可以用来监视某个通道的计数值是否已经达到预 定的目标值。       值得注意的是,PACl、PAC0 级联后,输入引脚为 PT0,而 PAC3、PAC2 级 联后,输入引脚并不是 PT2,而是 PT7,这样可以与那些无 ECT 的 MCU 保持一 致性。     (责任编辑:dzsj8 手把手教你写S12XS128程序(19)--Timer寄存器说明1 时间:2009-12-31 23:42来源:电子设计吧 作者:dzsj8 点击: 761次 1、定时器/计数器系统控制寄存器 1(TSCR1)   寄存器偏移量:$0006 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TEN    TSWAI TSFRZ TFFCA 0        0        0         0         可在任何时候读或写。 TSCR1 寄存器是定时器模块的总开关,它决定模块是否启动以及在中断等待、BDM 方式下的行为,还包括标志的管理方式。其各位的意义如下:   TEN:定时器使能位,此外它还控制定时器的时钟信号源。要使用定时器模块的 IC/OC 功能,必须将 TEN 置位。如果因为某种原因定时器没有使能,脉冲累加器也将得不到 ECLK/64 时钟,因为 ECLK/64 是由定时器的分频器产生的,这种情况下,脉冲累加器将不能进行引脚电平持续时间的累加。 0:定时器/计数器被禁止,有利于降低功耗。 1:定时器/计数器使能,正常工作。   TSWAI:等待模式下计时器关闭控制位。 【注意】定时器中断不能用于使 MCU 退出等待模式。 0:在中断等待模式下允许 MCU 继续运行。 1:当 MCU 进入中断等待模式时,禁止计时器。   TSFRZ:在冻结模式下计时器和计数器停止位。 0:在冻结模式下允许计时器和计数器继续运行。 1:在冻结模式下禁止计时器和计数器,用于仿真调试。 【注意】TSFRZ 不能停止脉冲累加。   TFFCA:定时器标志快速清除选择位。 0:定时器标志普通清除方式。 1:对于 TFLGl($0E)中的各位,读输入捕捉寄存器或者写输出比较寄存器会自动清除相应的标志位 CnF。对于 TFLG2($0F)中的各位,任何对 TCNT 寄存器($04、$05)的访问均会清除 TOF 标志;任何对 PACN3 和 PACN2 寄存器($22,$23)的访问都会清除 PAFLG 寄存器($21)中的 PAOVF 和 PAIF 位。任何对 PACN1 和 PACN0 寄存器($24,$25)的访问都会清除 PBFLG 寄存器($21)中的 PBOVF 位。 【说明】这种方式的好处是削减了另外清除标志位的软件开销。此外,必须特别注意避免对标志位的意外清除。     2、计时器系统控制寄存器 2(TSCR2)   寄存器偏移量:$000D Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TOI    0        0        0        TCRE  PR2     PR1     PR0     可在任何时候读或写。 TOI:定时器/计时器溢出中断使能。 0:中断被禁止。 1:当 TOF 标志被置位时发出硬件中断请求。 【注意】TOF标志位在TFLG中   TCRE:定时器/计数器复位使能。 该位在通道 7 成功输出比较之后允许时钟计数器复位。该操作模式类似于递增型计数器。 0:计数器复位禁止,计数器自由计数。 1:通道 7 成功输出比较后计数器将被复位。   【说明】如果 TC7=$0000 并且 TCRE=1,TCNT 将继续保持$0000。 如果 TC7=$FFFF 并且 TCRE=1,当 TCNT 从$FFFF 到$0000 之间被复位后TOF 将永远不被置位。   PR2,PR1,PR0:计数器预分频选择。 这三位所决定的分频因子如下表所示。分频因子选择 PR2 PR1 PR0 PrescaleFactor 0 0 0 1 0 0 1 2 0 1 0 4 0 1 1 8 1 0 0 16 1 0 1 32 1 1 0 64 1 1 1 128   【说明】新设定的分频因子不会立即起作用,直到下一个触发沿到来那里所有预分频计数器值均为零。 手把手教你写S12XS128程序(20)--Timer寄存器说明2 时间:2010-01-07 13:03来源:电子设计吧 作者:dzsj8 点击: 633次 3、控制寄存器(TCTLl-TCTL4)   TCTLl-TCTL4 分为两组,分别对 IC 和 OC 电路进行设定,每组 16 个二进制位,每两个二进制位管理一个通道。其中 TCTLl、TCTL2 设定各个 OC 通道 匹配时的动作,包括切断 OC 与输出引脚的联系,而 TCTL3、TCTL4 设定 IC 响 应引脚的何种动作,包括禁止 IC 的响应。   TCTL1 寄存器偏移量:$0008 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 OM7 OL7 OM6 OL6 OM5 OL5 OM4 OL4   TCTL2 寄存器偏移量:$0009 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 OM3 OL3 OM2 OL2 OM1 OL1 OM0 OL0 可在任何时候读或写。   OMn、OLn 分别设定输出方式和输出电平,这 8 对控制位(OM7、OL7---OMO、 OL0)编码后用于指定通道比较成功后的输出动作。如果每对当中至少有一个为 1,对应引脚就固定为相应通道的输出,而与 DDRT 中的对应位无关。 当二者同时为 0 时,OC 与输出引脚断开。 输出比较动作设置   OMn OLn 动作 0 0 定时器与引脚断开 0 1 OCn输出翻转 1 0 OCn输出清零 1 1 OCn输出置1   TCTL3 寄存器偏移量:$000A Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 EDG7B EDG7A EDG6B EDG6A EDG5B EDG5A EDG4B EDG4A TCTL4 寄存器偏移量:$000B Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 EDG3B EDG3A EDG2B EDG2A EDG1B EDG1A EDG0B EDG0A 可在任何时候读或写。 各个控制位的作用如下: EDGnB、EDGnA 输入捕捉边沿控制位,这 8 对控制位(EDG7B、EDG7A—EDG0B、EDG0A)对输入捕捉的边沿检测电路进行设置。当二者同时为 0 时,IC 与输入引脚断开。   输入捕捉边沿检测电路设置 EDGnB EDGnA 边沿检测电路设置 0 0 禁止捕捉 0 1 捕捉上升沿 1 0 捕捉下降沿 1 1 上升沿下降沿均捕捉 【注意】为了使 OMn、OLn 指定的引脚动作有效,OC7M 中的对应位必须清 0。若要使用 16 位脉冲累加器 A 和 B,并使它们分别独立于 IC/OC7 和 IC/OC0,必须设置对应的 IOSn:1、OMn=0、OLn=0,同时寄存器 OC7M 中的OC7M7、OC7M0 位必须清 0。 手把手教你写S12XS128程序(21)--Timer寄存器说明3 时间:2010-01-08 15:10来源:电子设计吧 作者:dzsj8 点击: 563次 4、主定时器中断标志寄存器(TFLG1、TFLG2)   TFLG1 寄存器偏移量:$000E Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C7F C6F C5F C4F C3F C2F C1F C0F   TFLG2 寄存器偏移量:$000F Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TOF 0 0 0 0 0 0 0   所示的 TFLG1、TFLG2 为中断标志寄存器,其中 TFLG1 对应 8 个 IC/OC 通道,当某 CnF=1 时说明对应的 IC/OC 通道有动作,表明该通道有中断事件发生。TFLG2 只有一个标志位 TOF,作为核心计数器的中断请求标志。当 TOF=1 时说明核心计数器溢出。要清除某个标志位,只需向该位写 1,向某位写 0 不影响该位的状态。当 TSCR 中的 TFFCA 位置位时,读 IC 通道或写 OC 通道 ($10-$1F)将自动清除该通道标志CnF,对 TCNT 的任何访问将自动清除 TFLG2。   CnF:IC/OC 通道中断请求标志。 0:上次清除标志以来,IC/OC 通道没有有效动作。 1:IC/OC 通道已经出现动作。将寄存器 ICSYS($2B)中的 TFMOD 位和 ICOVW 寄存器($2A)联合使用,可以使定时器在两次捕捉后才产生中断,而不是每次捕捉均产生动作。两次捕捉结果分别在捕捉和保持寄存器里面。   TOF:定时器溢出标志,当 16 位自由定时器从$FFFF 回滚到$0000 时,该位 置位。将$80 写入到 TFLG2 将自动清除该位(写1清零)。详见前面关于 TMSK2 中 TCRE 控制位的解释。   5、计时器中断使能寄存器(TIE)   寄存器偏移量:$000C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C7I C6I C5I C4I C3I C2I C1I C0I   可在任何时候读或写。 TIE 寄存器中的位与状态寄存器 TFLG1 中的标志位相对应。如果将 TIE 中的某位清 0,相应的标志位就不能引起硬件中断。如果被置 1,相应的标志位就可以引起中断。 C7I-C0I:输入捕捉/输出比较“x”中断使能。 手把手教你写S12XS128程序(22)--Timer寄存器说明4 时间:2010-01-09 23:35来源:电子设计吧 作者:dzsj8 点击: 540次 6、IC/OC 选择寄存器(TIOS) 寄存器偏移量:$0000 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IOS7 IOS6 IOS5 IOS4 IOS3 IOS2 IOS1 IOS0 TIOS 寄存器用于指定各个通道的功能,即工作于 IC 还是 OC 方式。当某位 IOSn=0 时,对应的通道 n 为输入捕捉(1C)通道,否则当 IOSn=1 时,通道 n为输出比较(OC)通道。其中的各位可以在任何时候写入或读出。 【说明】上电后该寄存器默认为$00,TSCR 中的 TEN 默认也为 0,这时所有通道处于通用 I/O 方式,将 TEN 置位后各个通道进入 IC 方式,要将某些通道设置成 OC 方式,必须对 TIOS 进行设置,即将有关位置 1。设置成 OC 的通道其引脚具有降功率驱动功能,设置成 IC 的通道具有内部上拉功能,但上电后均处于关闭状态,可以根据需要启用。   7、IC/OC 寄存器(TC0-TC7) 每个 IC 或 OC 通道都设置有一个 16 位的寄存器,对于 IC(输入捕捉)通道, 当通道的边沿探测器检测到由 EDGnA、EDGnB 指定的条件时,将自由定时器的值捕捉到寄存器 TCn,随后程序可以读取和处理;对于 OC(输出比较)通道,程序将预定的时刻写入到 TCn,当自由定时器的值与其相等时,触发由 OMn、OLn 所指定的输出动作。定时器模块共有 TC7-TC0 等 8 个 16 位 IC/OC 寄存器。 TC0 寄存器偏移量:$0010-$0011 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC1 寄存器偏移量:$0012-$0013 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC2 寄存器偏移量:$0014-$0015 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC3 寄存器偏移量:$0016-$0017 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC4 寄存器偏移量:$0018-$0019 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC5 寄存器偏移量:$001A-$001B Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC6 寄存器偏移量:$001C-$001D Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC7 寄存器偏移量:$001E-$001F Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0   手把手教你写S12XS128程序(23)--Timer寄存器说
本文档为【S12XS128单片机教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_397472
暂无简介~
格式:doc
大小:395KB
软件:Word
页数:36
分类:互联网
上传时间:2014-04-12
浏览量:21