第5章 MC9S12XS输入输出端口模块及其应用实例分解

合集下载

第5章 MC9S12XS输入输出端口模块及其应用实例

第5章 MC9S12XS输入输出端口模块及其应用实例

5.2 输入/输出端口寄存器及设置
5.2.1 PORTA、PORTB、PORTE和PORTK
2.数据方向寄存器(DDRx)
DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”, 则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口 。MCU复位后,DDRx值为0x00,引脚默认为输入口。 需要注意的是,PORTE端口是一个特例,它的最低两位只能为输 入口,所以PORTE端口的数据方向寄存器最低两位是只读位,读取这 两位始终返回“0”。
5.2 输入/输出端口寄存器及设置
5.2.1 PORTA、PORTB、PORTE和PORTK
3.上拉电阻控制寄存器(PUCR)
PORTA、PORTB、PORTE和PORTK端口都有内置上拉电阻,PUCR有4 位分别配置4个端口选择使用内置上拉电阻,即第7、4、1和0位分别设置K、E 、B和A端口。当控制位为“1”时,设定对应端口使用上拉电阻;当控制位为 “0”时,禁止对应端口使用上拉电阻。MCU复位后,设定PORTK和PORTE端 口使用上拉电阻,PORTB和PORTA端口禁用上拉电阻。 PUCR第6位设置BKGD引脚使用上拉电阻。当该位为“1”时,设定该端口 使用上拉电阻;当控制位为“0”时,禁止该端口使用上拉电阻。MCU复位后, 该位为“1”, 引脚默认为使用内置上拉电阻。
5.2 输入/输出端口寄存器及设置
5.2.3 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ
6.AD0驱动控制寄存器1(RDR1AD0)
如果端口为输出口时,RDR1AD0可以设置端口对应引脚的输出驱动能力 。如果RDR1AD0某位为“1”,则对应引脚的输出驱动能力为正常时的1/5;如 果某位为“0”,则对应引脚输出为正常驱动能力。

MC9S12XS128中文资料

MC9S12XS128中文资料
PWM标度B寄存器。用于控制Clock SB的值,Clock SB = Clock A / (2 * PWMSCLB),当PWMSCLB=0x00时,相当于PWMSCLB=256。
PWMCNTx:
PWM通道计数寄存器。
每个通道都有一个独立的8位计数器,其计数速率由所选择的时钟源决定。计数器的值可以随时读取而不影响计数器运行,也不影响PWM波形输出。在左对齐模式时,计数器从0计数至周期寄存器的值减1;在中心对齐模式,计数器从0计数至周期寄存器的值,然后再倒计数至0。
CFORC:
定时器比较强制寄存器。复位值为0x00。
FOCx=1将强制该位对应通道产生输出比较成功动作,但CxF中断标志位不置位。任何通道的强制比较成功动作若与普通比较成功动作同时发生,则强制比较成功动作优先发生,且CxF标志位不会置位。
被置位后瞬间将自动清除该位,所以任何时候对该寄存器的读动作都将返回0x00。
OC7M:
输出比较通道7屏蔽寄存器。复位值为0x00。
Setting the OC7Mx (x ranges from 0 to 6) will set the corresponding port to be an output port when the corresponding TIOSx (x ranges from 0 to 6) bit is set to be an output compare and the corresponding OCPDx (x ranges from 0 to 6) bit is set to zero to enable the timer port.A successful channel 7 output compare overrides any channel 6:0 compares. For each OC7M bit that is set, the output compare action reflects the corresponding OC7D bit.

MC9S12单片机原理及嵌入式应用开发技术第5章 单片机串行通信模块(SPI)(实验3 SPI)

MC9S12单片机原理及嵌入式应用开发技术第5章 单片机串行通信模块(SPI)(实验3 SPI)
主机 从机

MOSI — 主出从入( Master Out/Slave In Pin ) MISO — 主入从出( Master In/Slave Out Pin ) SCK — 同步时钟( Serial Clock Pin ) SS — 从机片选引脚,一主一从时,主高从低( Slave Select Pin )
8
微控制器常见的通信类型
总线类 型 UART SPI 线数 2 3 通信类型 异步 同步 多主 No Yes 波特率(bps) 3K-1M 1M-10M 器件数目 2 <10 总线长度 * 板内
I2C
CAN LIN
2
2 1
同步
异步 异步
Yes
Yes No
~1M
20K-1M <20K
<10
128 16
College of Communication Engineering, Jilin University
2
5.1 串行通信概述
串行通信
数据按位传输 通信方只需要很少的连接 – resource/pin efficient 速度较慢,传输信息少 传输距离较远
并行通信
数据按字节/字传输 通信方需要多个连接信号-- difficult for PCB routing 传输速度快 传输距离较短 你接触过哪些串行/并行通信?
College of Communication Engineering, Jilin University 13
5.2.2 SPI工作原理
板内
百米~ 公里 几十米
College of Communication Engineering, Jilin University

MC9S12XS128例程

MC9S12XS128例程

SCI程序串行通信时MCU与外部设备之间进行通信的一种简单而有效的硬件方法。

无论用查询方式还是中断方式进行串行通信编程,在程序初始化时均必须对SCI进行初始化。

初始化主要包括波特率设置、通信格式的设置、发送接收数据方式的设置等。

对SCI进行初始化,需要设置如下几部分:(1)定义波特率一般选内部总线时钟为串行通信的时钟源。

通过设置SCI波特率寄存器SCI0BD的波特率选择位SBR[12:0],来选择合适的分频系数。

(2)写控制字到SCI控制寄存器1(SCI0CR1)设置是否允许SCI、数据长度、输出格式、选择唤醒方法、是否校验等。

(3)写控制字到SCI控制寄存器2(SCI0CR2)设置是否允许发送与接收、是中断接收还是查询接收等。

串行通信程序如下:/** write in “Init.h” **/#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions *///void InitBusClk(void); //可以不使用锁相环void InitSci(void);/** write in “Init.c” **///初始化程序#include "Init.h"/*//------------初始化Bus Clock------------//void InitBusClk(void) {DisableInterrupts;CLKSEL=0X00; //PLLSEL 1 : Bus Clock=PLLCLK/2// 0 : Bus Clock=OSCCLK/2PLLCTL_PLLON=1; //开启PLLSYNR=0; //OSCCLK=16MHzREFDV=0X0F; //PLLCLK=2*OSCCLK*[(1+SYNR)/(1+REFDV]=32/16=2MHz while(!(CRGFLG_LOCK==1)); //直到LOCK=1,when PLL is ready,退出循环CLKSEL_PLLSEL=1; //PLLSEL 1 : Bus Clock=PLLCLK/2=2MHz/2=1MHz// 0 : Bus Clock=OSCCLK/2=16M/2=8MHz}*///---------------初始化SCI---------------//void InitSci(void){SCI0BD=4545; //设波特率为110//SCI baud rate = SCI module clock/(16*SCIBD)=Bus Clock/(16*SCIBD)// = 8MHz/(16*4545)=500kHz/4545=110bps//SCIBD : SBR12-SBR0,Value from 1 to 8191SCI0CR1=0;SCI0CR2=0X2C; // 0010 1100 RIE=1,TE=1,RE=1// RIE=1 RDRF and OR interrupt requests enabled// TE=1 Transmitter enabled// RE=1 Receiver enabled}/** write in “SCI.h” **///函数声明unsigned char SciRead();void SciWrite(byte);/** write in “SCI.c” **///串行通信程序#include "Init.h"#include "SCI.h"//---------------读SCI数据---------------//unsigned char SciRead(){if(SCI0SR1_RDRF==1){//数据从移位寄存器传送到SCI数据寄存器SCIDRL//SCI0SR1_RDRF==1表明数据寄存器SCI0DRL为满,可以接收新的数据SCI0SR1_RDRF=1; //读取SCI数据寄存器会将RDRF清除,重新置位return SCI0DRL; //返回数据寄存器的数值}}//---------------写SCI数据---------------//void SciWrite(byte sci_value){while(!(SCI0SR1&0X80));//SCI0SR1_TDRE==1表明数据寄存器SCI0DRL为空,可以发送新的数据SCI0DRH=0;SCI0DRL=sci_value; //发送新的数据至数据寄存器SCI0DR}//---------------中断程序-----------------//#pragma CODE_SEG NON_BANKEDinterrupt 20 void Sci_Intrrupt(void){ //SCI的中断向量号为20byte text;DisableInterrupts; //关中断text=SciRead(); //接收数据寄存器SCI0DRL中的数据asm nop;asm nop;SciWrite(text); //发送数据至数据寄存器SCI0DRLDDRA=0XFF; //设A口为输出,用来显示是否执行中断,可以不用PORTA_PA6=!PORTA_PA6;EnableInterrupts; //开中断}#pragma CODE_SEG DEFAULT/** write in “main.c”” **/#include "Init.h"#include "SCI.h"void main(void) {/* put your own code here */_DISABLE_COP(); //关看门狗DisableInterrupts; //关中断//InitBusClk();InitSci();EnableInterrupts; //开中断for(;;) {// _FEED_COP(); /* feeds the dog */} /* loop forever *//* please make sure that you never leave main */}A/D转换应用实例要让ATD 开始转换工作,必须经过以下三个步骤:1.将ADPU 置1,使ATD 启动;2.按照要求对转换位数、扫描方式、采样时间、时钟频率及标志检查等方式进行设置;3.发出启动命令;如果上电默认状态即能满足工作要求,那么只要将ADPU 置1,然后通过控制寄存器发出转换命令,即可实现转换。

【MC9S12XS128MAA】使用说明书

【MC9S12XS128MAA】使用说明书

【MC9S12XS128MAA】使用说明书
预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制
MC9XS128MAA 使用说明书
该系统板供电电压为:5±0.02 V ,建议使用TPS7350为其供电,理由如下:TPS7350 是微功耗低压差线性电源芯片,具有完善的保护电路,包括过流、过压、电压反接保护。

使用这个芯片只需要极少的外围元件就能构成高效稳压电路。

与LM2940及AS1117稳压器件相比,TPS7350具有更低的工作压降和更小的静态工作电流,可以使电池获得相对更长的使用时间。

由于热损失小,因此无需专门考虑散热问题。

而且其纹波很小,又为线性稳压芯片,可以为单片机及片外AD 模块提供很稳定的工作电压!
1.到货后检测:
当你的系统板到货后,请你马上测试,如系统板的有个指示灯是一闪一闪的(我们发货检测的时候讲测试程序烧录在里面),证明系统板是没有问题的。

否则就是损坏的,请你马上联系我们的客服。

系统板与下载器BDM的连接图:
该系统板的编程需要专门的飞思卡尔软件:
2.
3.
需要使用USB专用接线,使用前需要安装USB转串口CH340T 驱动
5.烧录时出现问题
如果下载程序步骤不是以上步骤,并且不能进行烧录,则可能出现以下问题:
1、电脑未安装BDM 驱动或者安装未成功;
2、下载线跟芯片下载口的方向不对;
3、连接线出现问题,拔出各接口,重新连接;
4、芯片被锁,请按照解锁文档步骤进行解锁
5、BDM 跳线帽错误。

《输入输出接口》课件

《输入输出接口》课件

01 传输速率
衡量数据传输速度的重要指标,决定设备的数据处 理效率。
02 数据稳定性和可靠性
保证数据传输过程中数据稳定性和可靠性,避免数 据丢失或损坏。
03 兼容性和扩展性
设备与不同设备之间的兼容性,以及接口的扩展性, 是影响设备互通性的重要因素。
总结
输入输出接口在计算机系统中扮演着至关重要的角色,其技 术原理涉及物理连接、通信协议、数据处理和性能指标等多 个方面。只有深入了解和掌握输入输出接口的技术原理,才 能更好地应用于实际生产和工作中。
未来输入输出接口的趋势
个性化定制接 口
根据不同用户需求 定制接口功能
多功能集成接 口
整合多种接口功能, 提升设备性能
01 技术标准的统一和整合
不同设备间的兼容性与统一标准问题
02 硬件与软件协同发展
接口硬件与软件的协同设计与优化
03
创新技术的应用推 不动断探索新技术,推动输入输
出接口的创新与发展
输入输出接口的分类
并行接口
同时传输多个数据 位
通用接口
具有多种功能
串ห้องสมุดไป่ตู้接口
逐位传输数据
● 02
第2章 输入输出接口的技术 原理
输入输出接口的 物理连接
输入输出接口的物理连接包括插口、插槽等连接方式。这 些连接方式在设备之间传输数据起着至关重要的作用,而 接口标准及接口规范则规定了各种设备之间通信的准则和 规范。
输入输出接口的通信协议
数据传输方式
串行传输
通信协议
USB
通信协议
RS232
数据传输方式
并行传输
数据缓冲与缓存
数据缓冲用于临时存储数据, 以平衡不同速度设备之间的数 据传输。缓存则用来提高数据 访问速度和性能。

实验一 MC9S12入门实验

实验一 MC9S12入门实验

实验一MC9S12XS128入门实验一.实验目的1.熟悉CodeWarrior嵌入式开发系统软硬件环境,掌握其使用方法及调试方式。

2.掌握S12 GPIO接口的使用方法及编程方法。

3.熟悉S12单片机的C语言程序编程框架。

4.理解样例中的第一个C语言程序代码。

二.实验设备及其连接1.PC机一台2.S12嵌入式开发实验箱一套3.接线图图1-1 I/O口实验接线图GNDKEY1-8)三.实验内容1.使用CodeWarrior嵌入式开发系统的软硬件环境,掌握其使用方法及调试方式。

2.调试运行提供的样例程序light,观看实验结果。

(软件使用参见第四部分)3.运行样例程序,观察小灯的闪烁和对应的程序实现;调整延时的长短,继续观察小灯的闪烁。

4.尝试新建自己的工程,自编程序,实现用4个开关控制4个小灯的亮灭. 4个开关分别接在端口A的PTA4~PTA7口,小灯则接在PTA0~PTA3口, 参见第二部分连接图. 编程实现用这4个开关控制4个小灯,开关拨在“H”时,对应小灯亮,否则为暗。

(可参考教材P119-120页实例,注意教材中使用PORTB,实验箱使用PORTA)提示:新建工程时芯片选择HCS12X family-〉mc9s12xs128,connection 选择TBDML,然后下一步输入工程路径和名称,再3次下一步,选择默认选项,然后下一步、完成。

在main.c 文件中加入你的代码,主要通过设置数据方向寄存器DDRA和数据寄存器PORTA来实现开关控制小灯的功能。

代码举例:(具体编程时要作修改)DDRA= 0xff; //将端口A的8个管脚都设为输出。

PORTA&= 0xf0;//将端口A的低4脚输出0,低4位连接的灯被点亮Temp=PORTA & 0xf0;//读入端口A的高4脚的状态Temp1 =temp>>4; //temp右移4位四.CodeWarrior嵌入式开发环境的基本使用方法1.运行CodeWarrior IDE嵌入式开发平台,点击菜单命令“File\Open”打开light文件夹中的project.mcp工程文件,按F7或者Project\Make菜单编译,若有错,修改再编译直至通过。

MC9S12XS(DG)单片机--110108

MC9S12XS(DG)单片机--110108
② 软件条件 --------- 利用 CodeWarrior for 9S12 软件进行软件开发。
CodeWarrior开发平台上可用汇编,也可用C语言编程。
CodeWarrior的使用
六、9S12XS/DG 的开发样例
1. 9S12XS/DG 的工程组织与通用I/O口的控制 2. PWM 输出编程 3.模拟信号采集 4定时器的功能与使用 5. 9S12XS/DG 的存储器控制 6. SCI/SPI串行数据通信 8.
;定义五个字的存储区,首址为X2
若要对X2的第三字赋值,可用如下语句:
STX X2+2
②数字常数/字符串常数定义伪指令:
格式: [<label>:] DC [.<size>] <expression> [ ,<expression>]…
功能:在Flash区定义一个size×n 个字节的存储区。
例: C1: DC .B $25
Freescale
车模用单片机原理与使用
讲座
车模电路组成
显示电路
路径检测 速度检测 电源电路
MCU
数据输入 电路
舵机控制
电机 速度控制
内容
一、飞思卡尔车模用单片机性能 二、9S12XS/DG 的硬件资源 三、9S12XS/DG 的硬件系统 四、9S12XS/DG的指令系统 五、 9S12XS/DG 的开发平台 六、9S12XS/DG 的开发样例
;定义一字节常数,即C1= $25
C2: DC .W $2538 ;定义一字常数,即C2= $2538
③常数赋值伪指令: 格式: <label>: EQU <expression> <label>: SET <expression> 功能:定义<label> 等于的值<expression>的值。 注意: <expression> 要有确定的值。 例: PI: EQU 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.2 输入/输出端口寄存器及设置
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ
3.数据方向寄存器(DDRx)
DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”,则对应 引脚设定为输入;如果某位为“1”,则对应引脚设定为输出。复位后,DDRx 值为0x00,即MCU复位后引脚默认为输入口。
5.2 输入/输出端口寄存器及设置
通用I/O口通过配置相应寄存器位,可以设置输入/输出端口、驱 动能力、内置上拉/下拉电阻使用、中断输入方式等多种功能。通过 对DDR、I/O、RDR、PE、PS和IE等寄存器的设置,用户可以获得 通用I/O口的不同工作方式。其中,DDR(数据方向寄存器)设定I/O 口为输入/输出端口。数据寄存器(I/O寄存器)用于设定I/O口的高低 电平。RDR(驱动控制寄存器)用于设定I/O口的输出驱动能力。PE (上拉/下拉使能寄存器)用于当I/O口为输入口时使能内置上拉电阻 或下拉电阻的使用。PS(上拉/下拉选择寄存器)当中断允许位置位 时,用于选择上升沿触发或下降沿触发中断;当使能内置上拉/下拉 电阻时,用于选择使用上拉电阻或下拉电阻。IE(中断使能寄存器) 用于使能I/O口的中断功能。
5.2 输入/输出端口寄存器及设置
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ
1.数据寄存器(PTx)
如果数据方向寄存器DDRx的对应位为“0”,即对应引脚定义为输入时, 读取数据寄存器PTx的对应位,则为对应引脚的输入电平值;如果DDRx的对应 位为“1”,即对应引脚定义为输出时,写入PTx寄存器的对应位,则为对应引 脚的输出电平值。
5.2 输入/输出端口寄存器及设置
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ
2.输入寄存器(PTIx)
输入寄存器PTIx是一个只读寄存器,如果DDRx的对应位为“0”,即对应 引脚定义为输入时,读取PTIx总是返回引脚电平值;如果DDRx的对应位为 “1”,即对应引脚定义为输出时,利用PTIx可以监视对应引脚是否过载或短 路。
5.2 输入/输出端口寄存器及设置
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ
5.上拉/下拉使能寄存器(PERx)
如果端口为输入口或者“线或”模式时,可以通过上拉/下拉使能寄存器 PERx使能选择使用内置上拉/下拉电阻。如果PERx某位为“1” 时,则对应引 脚允许使用内置上拉/下拉电阻;如果某位为“0” 时,则对应引脚禁用内置上 拉/下拉电阻。
5.2 输入/输出端口寄存器及设置
5.2.1 PORTA、PORTB、PORTE和PORTK
3.上拉电阻控制寄存器(PUCR)
PORTA、PORTB、PORTE和PORTK端口都有内置上拉电阻,PUCR有4 位分别配置4个端口选择使用内置上拉电阻,即第7、4、1和0位分别设置K、E 、B和A端口。当控制位为“1”时,设定对应端口使用上拉电阻;当控制位为 “0”时,禁止对应端口使用上拉电阻。MCU复位后,设定PORTK和PORTE端 口使用上拉电阻,PORTB和PORTA端口禁用上拉电阻。 PUCR第6位设置BKGD引脚使用上拉电阻。当该位为“1”时,设定该端口 使用上拉电阻;当控制位为“0”时,禁止该端口使用上拉电阻。MCU复位后, 该位为“1”, 引脚默认为使用内置上拉电阻。
5.2 输入/输出端口寄存器及设置
5.2.1 PORTA、PORTB、PORTE和PORTK
4.驱动控制寄存器(RDR)
如果PORTA、PORTB、PORTE和PORTK端口为输出口时,每个端口都 可以设置其输出驱动能力,RDR有4位分别设定4个端口输出驱动能力,即第7 、4、1和0位分别设置K、E、B和A端口。如果某个控制位为“1” 时,设定对应 端口输出驱动能力降低;如果某个控制位为“0”时,设定对应端口为正常驱动 输出方式。
5.2 输入/输出端口寄存器及设置
5.2.1 PORTA、PORTB、PORTE和PORTK
1.数据寄存器(Px)
数据寄存器Px中的8位对应每个端口中的相应引脚,如果某端口的 引脚被定义为输出时,写入数据寄存器Px中的数值,则从对应引脚输 出;如果某端口的引脚被定义为输入时,可以读取数据寄存器Px对应 引脚的电平值。 需要注意PORTE端口是一个特例,它的最低两位只能为输入口, 所以PORTE端口的数据寄存器最低两位是只读位。
MC9S12XS单片机原理 及嵌入式系统开发
输入输出端口模块及其应用实例
பைடு நூலகம்
第 5章 MC9S12XS输入/输出端口模块 及其应用实例
输入/输出端口简介 输入/输出端口寄存器及设置 输入/输出端口应用实例 智能车系统中输入/输出端口的应用
5.1 输入/输出端口简介
MC9S12XS系列内部有非常丰富的输入/输 出端口资源,同时也集成了多种功能模块 ,其输入/输出引脚大多为复用引脚。 MC9S12XS128通用I/O口包括PORTA、 PORTB、PORTE、PORTK、PORTT、 PORTS、PORTM、PORTP、PORTH、 PORTJ以及PORTAD。
5.2 输入/输出端口寄存器及设置
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ
4.驱动控制寄存器(RDRx)
如果端口为输出口时,RDRx可以设置端口对应引脚的输出驱动能力。如 果RDRx某位为“1”,则对应引脚的输出驱动能力为正常时的1/5;如果某位 为“0”,则对应引脚输出为正常驱动能力。复位后,驱动控制寄存器值为 0x00,即MCU复位后引脚默认为满功率驱动输出。
5.2 输入/输出端口寄存器及设置
5.2.1 PORTA、PORTB、PORTE和PORTK
2.数据方向寄存器(DDRx)
DDRx决定对应引脚配置为输出口还是输入口,如果某位为“0”, 则对应引脚设定为输入口;如果某位为“1”,则对应引脚设定为输出口 。MCU复位后,DDRx值为0x00,引脚默认为输入口。 需要注意的是,PORTE端口是一个特例,它的最低两位只能为输 入口,所以PORTE端口的数据方向寄存器最低两位是只读位,读取这 两位始终返回“0”。
相关文档
最新文档