MC9S12XS128编程Word文档下载推荐.docx

上传人:b****1 文档编号:4907377 上传时间:2023-05-04 格式:DOCX 页数:49 大小:203.10KB
下载 相关 举报
MC9S12XS128编程Word文档下载推荐.docx_第1页
第1页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第2页
第2页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第3页
第3页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第4页
第4页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第5页
第5页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第6页
第6页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第7页
第7页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第8页
第8页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第9页
第9页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第10页
第10页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第11页
第11页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第12页
第12页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第13页
第13页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第14页
第14页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第15页
第15页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第16页
第16页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第17页
第17页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第18页
第18页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第19页
第19页 / 共49页
MC9S12XS128编程Word文档下载推荐.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

MC9S12XS128编程Word文档下载推荐.docx

《MC9S12XS128编程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MC9S12XS128编程Word文档下载推荐.docx(49页珍藏版)》请在冰点文库上搜索。

MC9S12XS128编程Word文档下载推荐.docx

//发送允许接受中断允许

//----------------------读SCI数据-----------------------------//

unsignedcharSciRead()

{

if(SCI0SR1_RDRF==1)//表明数据从位移寄存器传输到SCI数据寄存器

{

SCI0SR1_RDRF=1;

//读取数据寄存器会将RDRF清除重新置位

returnSCI0DRL;

//返回数据寄存器的数据

}

//-----------------写SCI数据---------------------------------//

voidSciWrite(unsignedcharsendchar)

while(!

(SCI0SR1&

0x80));

SCI0DRH=0;

SCI0DRL=sendchar;

//------------------------main----------------------------------//

voidmain(void)

{SciInit();

EnableInterrupts;

for(;

;

}/*waitforever*/

/*pleasemakesurethatyouneverleavethisfunction*/

//---------------------------接收中断函数-----------------------//

#pragmaCODE_SEGNON_BANKED

voidinterrupt20SCI0_re(void)

{unsignedcharch;

ch=SciRead();

SciWrite(ch);

手把手教你写S12XS128程序(26)--SCI寄存器说明1

时间:

2010-01-2222:

44来源:

电子设计吧作者:

dzsj8点击:

584次

1、波特率控制寄存器(SCIBDH、SCIBDL)

 

IREN:

红外调制模式使能位

1使能

0禁止

TNP[0..1]:

窄脉冲发射位

SBR[0..12]:

波特率设置位

WhenIREN=0then,

SCIbaudrate=SCIbusclock/(16xSBR[12:

0])

WhenIREN=1then,

SCIbaudrate=SCIbusclock/(32xSBR[12:

1])

【说明】波特率发生器在复位后是禁止的,在设置TE、RE(在SCICR2寄存器中)后才会工作。

当(SBR[12:

0]=0andIREN=0)或者(SBR[12:

1]=0andIREN=1),波特率发生器不工作。

【注意】在未写入SCIBDL,写SCIBDH没有反应。

一般地,设置IREN=0,SR=52(总线频率8MHz),波特率为9600。

2、数据寄存器(SCIDRH、SCIDRL)

SCI内部分别设有发送和接收两个数据寄存器,其低位都通过SCIDRL访问,读操作返回接收数据寄存器RDR的内容,写操作数据置入发送数据寄存器。

TDR。

当M=1即运行在9位数据模式时,SCIDRL和SCIDRH形成9位的SCI数据字,这时必须先写入SCIDRH,以便与低位字节(SCIDRL)一起进入发送移位器。

如果M=0即SCI只用于7位或8位的数据传送,可以只访问SCIDRL。

当PE=1即奇偶校验允许时,奇偶校验位由硬件负责,无需软件干预。

R8:

接收到的位8,该位写操作无效。

当SCI设置成9位数据运行模式时,该位是从串行数据流中接收到的第9位。

T8:

发送位8,任何时候可写。

当SCI设置成9位数据模式时,该位是送到串行数据流的第9位。

该位不必为每个数据重新设置,每次发送可重复使用。

R[0..7]T[0..7]:

收/发数据位7-0,读操作返回只读寄存器RDR的内容,写操作写入只写寄存器TDR。

手把手教你写S12XS128程序(27)--SCI寄存器说明2

2010-01-2722:

55来源:

未知作者:

549次

3、控制寄存器(SCICR1)

LOOPS:

在LOOP模式下,RXD引脚与SCI接收部分断开,发射部分输出在内部和接收部分相连接,此时RXD可作为普通IO口,TXD输出SCI信号。

1LOOP模式使能

0正常模式

SCISWAI:

等待模式下SCI停止位

0:

在等待模式下允许SCI

1:

在等待模式下禁止SCI

RSRC:

接收器信号源选择位,当LOOPS=1时,RSRC决定接收器的内部反馈信号路径。

0:

接收器的输入在内部连接到发送器输出(并非TxD引脚)。

接收器的输入连接到TxD引脚。

M:

方式选择位(选择字符帧格式)。

1个起始位,8个数据位,1个停止位。

1个起始位,8个数据位,第9个数据位,1个停止位。

WAKE:

唤醒选择位。

介质空闲唤醒。

地址标志(最后一个数据位为1)唤醒。

ILT:

空闲检测方式选择位,该位在SCI接收器可以使用的两种空闲检测方式中选择一种。

快速检测,SCI在一个帧的开始位后立即开始对“1”计数,因此停止位以及停止位前面的任何“1”均被计算在内,这样可以提前检测到空闲状态。

保守检测,SCI在停止位后才开始对“1”计数,因此最后一个字节的停止位以及该位以前的各个为“广的位,对检测的时间长短无影响。

PE:

奇偶校验允许位。

禁止奇偶校验。

允许奇偶校验。

PT:

奇/偶校验选择位,如果奇偶校验允许,该位决定收发器使用奇校验还是偶校验。

选择偶校验。

选择奇校验。

4、控制寄存器2(SCICR2)

TIE:

发送中断允许位,清0时禁止TDRE产生中断,若置1则允许TDRE位置1时产生SCI中断请求。

TCIE:

发送结束中断允许位,清0时禁止TC产生中断,若置1则允许TC位置1时产生SCI中断请求。

RIE:

接收中断允许位,清0时禁止RDRF和OR产生中断,若置1则允许RDRF或OR置1时产生SCI中断请求。

ILIE:

空闲中断允许位,清0时禁止IDLE产生中断,若置1则允许IDLE位置1时产生SCI中断请求。

TE:

发送允许位。

该位由0置1时可用来发送空闲报头。

发送器禁止。

允许SCI发送部分工作,TxD引脚(PSl/PS3)用于发送。

RE:

接收允许位。

接收器禁止。

1;

允许SCI接收器工作。

RWU:

接收器唤醒控制位

SCI接收器正常工作。

允许唤醒功能,禁止接收器中断。

通常,硬件通过自动清除该位来唤醒接收器。

SBK:

中止符发送允许位。

只要该位保持为1,发送器就不停地发出“0”;

如果变为0,当前的全“0”帧发送结束后,TxD引脚将变成空闲状态。

如果SBK开关一次,发送器将只发出10(11)个“0”,然后复原,处于空闲或发送数据状态。

中止符产生器关闭。

产生中止符,至少10或11个连续的“0”。

【说明】该寄存器主要完成收发中断的控制、收发的允许等操作。

手把手教你写S12XS128程序(28)--SCI寄存器说明3

59来源:

601次

5、状态寄存器1(SCISR1)

TDRE:

发送保持器空标志位。

发送前必须读SCISR1,并确认TDRE=1,然后将新的数据写入发送保持器以开始发送过程。

复位后该位为1。

SC0DR处于忙状态

发送保持器的数据已被传送到发送移位器,这时可以向发送保持器写入新的数据

TC:

发送结束标志。

该位在发送器空闲(无发送动作)时置位。

读SCISRl,然后写SCIDR将清除该位。

发送器忙,正在发送

发送器空闲,无发送

RDRF:

接收数据就绪标志。

当收到的字符已经在SCIDR中就绪时,RDRF置1,顺次读取SCISRl和SCIDR将会自动清除RDRF。

该位被清除后,必须等到RxD线变为活动,然后重新变成空闲以后,IDLE位才会被再次置1。

SCIDR空,数据寄存器无数据

SCIDR中数据已就绪,数据寄存器数据有效

IDLE:

空闲标志。

检测到接收器RxD端空闲(收到10或者11个以上连续的“1”)。

当RWU位为1时,空闲状态不会使该位置1。

该位被清除后,必须等到RDRF置位(RxD线变为活动,然后重新变成空闲),IDLE位才会被再次置1。

RxD线活动。

RxD线空闲。

OR:

重叠错误标志。

如果接收数据寄存器中的数据尚未读取(RDRF=1),接受移位寄存器又准备向其传送新的数据,则称为重叠错误,该位被置1。

必须清除该位,才能使新的数据进入接收数据寄存器。

无重叠。

出现重叠错误。

NF:

噪声错误标志。

噪声错误出现时,该位与RDRF在同一个周器内置位,但如果同时或已经出现重叠错误,该位不置位。

采样结果一致。

在起始位、数据位或停止位接收期间检测到噪声。

FE:

帧格式错误。

如果在应该出现停止位的时刻,检测到0,则该位置位。

顺次读取寄存器SCISRl和SCIDR将清除FE标志。

检测到停止位。

在预期的停止位处检测到0。

PF:

奇偶错误标志。

指示收到数据的奇偶性与校验位是否一致。

奇偶校验允许(PE=1)时,该标志才有意义。

所要求的奇偶性由SC0CR1中的PT位决定。

奇偶校验正确。

奇偶校验错误。

【说明】该寄存器显示SCI运行情况,收发数据是否满、空,是否出错等

6、状态寄存器2(SCISR2)

BRK13:

中止符长度控制位。

中止符长度为10或11位。

中止符长度为13或14位。

TXDIR:

单线模式下发送管脚数据方向控制位。

单线模式下TxD脚用于输入。

单线模式下TxD脚用于输出。

RAF:

接收器活动标志位。

反映接收器是否处于活动状态。

在搜索起始位的RT1期间该位置1,当接收器器检测到空闲状态或者出现一个伪起始位(通常由于噪声或波特率匹配错误引起)时,该位清0。

手把手教你写S12XS128程序(17)--Timer模块介绍1

2009-12-2911:

51来源:

1060次

1、简述

MC9S12XS128定时器模块与MC9S12DG128ECT部分功能完全类似,以下均以ECT模块介绍xs128定时器模块。

HC12增强型捕捉计时器模块在HCS12标准定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车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。

手把手教你写S12XS128程序(25)--Timer模块应用实例2

2010-01-1523:

46来源:

786次

输出比较(OC)编程步骤:

初始化函数

TIOS---选择工作方式为OC

TCx---通道x的OC寄存器赋初值,经过N秒后进入第一次中断

TCTLx---设置对应位输入捕捉的方式(x=1、2,高四位是1,低四位是2)

TSCRx---控制寄存器设置,包括工作使能、确定工作方式(x=1)、中断允许、预分频

TIE---中断使能

中断函数

清除标志位---TFLG1

重新赋初值TCx

【例程4】

//---------------------------------------------------------------------------//

利用PT0的输出比较功能,定时进入中断

//利用PORTB显示定时的时间

电子设计吧

2010.01.15

mc9s12dg128.h>

/*derivativeinformation*/

#pragmaLINK_INFODERIVATIVE"

mc9s12dg128b"

//利用定时器输出比较功能产生定时中断

//----------------------变量定义----------------------//

staticunsignedintwaittime=0;

//---------------------时钟初始化-------------------//

voidPLL_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;

//--------------------定时器初始化------------------//

voidECT0_Init(void)

TIOS=0x01;

//定时器通道0设置为输出比较

TC0=0x00ee;

//赋初值,当TCNT从0计数到此值时第一次进入中断

TCTL2=0x02;

//其他七路与定时器断开执行的动作时:

0通道输出清零

TSCR2=0x86//溢出中断禁止24M/64=2.67微秒,计一个数用2.67微秒

TSCR1=0x80;

//使能定时器

TIE=0x01;

//通道0输出比较中断允许

//-----------------------主函数------------------------//

PLL_Init();

ECT0_Init();

DisableInterrupts;

DDRB=0xff;

PORTB=0x00;

}

//-----------------------中断函数处理-------------------//

#pragmaCODE_SEGNON_BANKED

voidinterrupt8Timer0_ISR(void)//8为定时器通道0的中断标号

unsignedintm;

TFLG1_C0F=1;

//清中断标志位

m=TCNT;

TC0=m+37500;

//37500*2.67us=10ms定时时间

waittime++;

if(waittime>

=255)

waittime=0;

PORTB=waittime;

手把手教你写S12XS128程序(24)--Timer模块应用实例1

2010-01-1320:

43来源:

924次

输入捕捉(IC)编程步骤:

TIOS---选择工作方式为IC

TCTLx---设置对应位输入捕捉的方式(x=3、4,高位是3,低位是4)

处理函数

【例程3】

利用PP3通道产生40Hz,占空比为50%的方波

//利用PT0采集方波的个数,并在PB口显示

2010.01.13

unsignedintInput_Num;

//----------------------时钟初始化------------------------------//

//--------------------通道0输入捕捉初始化-------------------//

voidECT0_Init(void)

{

TSCR2=0x06;

//禁止溢出中断,分频系数64(24/64MHz)

TIOS_IOS0=0;

//通道0为输入捕捉

TCTL4=0x01;

//捕捉上升沿

TIE_C0I=1;

//通道0输入捕捉中断允许

//使能定时器

//---------------------PWM通道3初始化程序-------------------//

voidPWM_Init(void)

PWME_PWME3=0x00;

//PWWisdisabled禁止

PWMPRCLK=0x33;

//0b00110011A=B=24M/8=3M时钟预分频寄存器设置

PWMSCLA=150;

//SA=A/2/150=10k时钟设置

PWMSCLB=150;

//SB=B/2/15=10k时钟设置

PWMCTL=0x00;

//noconcatenation控制寄存器设置

PWMCLK_PCLK3=1;

//PWM3-----SB时钟源的选择

PWMPOL_PPOL3=1;

//Duty=HighTime极性设置

PWMCAE_CAE3=0;

//left-aligned对齐方式设置

PWMPER3=250;

//Frequency=SB/250=40周期寄存器设置

PWMDTY3=125;

//Dutycycle=50%占空比寄存器设置

PWME_PWME3=1;

//enable使能

//----------------------主函数-------------------------//

PWM_Init();

DDRB=0XFF;

PORTB=0X00;

//--------------------转速计算:

-------------------------------//

//

//智能车转速子函数

//-------------------------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2