飞思卡尔寄存器整理
- 格式:doc
- 大小:2.25 MB
- 文档页数:19
一、输入输出端口寄存器I/O接口包括PORTA、B、E、K、T、S、M、P、H、J、AD。
其中PORTA、B、E、K属于复用扩展总线接口,单片机在扩展方式下工作时,作为总线信号。
1、PORTT、S、M、P、H、JI/O寄存器PTx如果对应位数据方向寄存器DDRx为“0”,输入,读取该寄存器返回引脚值;“1”,输出,读取该寄存器返回I/O寄存器的内容。
数据方向寄存器DDRx决定对应引脚为输出还是输入,“0”为输入,“1”为输出,复位后,默认为输入。
上拉/下拉使能寄存器PERx选择使用内置上拉/下拉器件,“1”允许,“0”禁用。
中断使能寄存器PIExPORTP、H、J三个端口具有中断功能。
“1”对应引脚允许中断,“0”禁止,复位后,所有端口中断关闭。
中断标志寄存器PIFxPORTP、H、J三个端口具有中断功能。
“1”对应引脚允许中断,“0”禁止,复位后,所有端口中断关闭。
2、PORTA、B、E、KI/O寄存器Px若某端口的引脚被定义为输出,写入I/O寄存器中的数值会从对应引脚输出;输入,通过I/O寄存器读取对应引脚电平。
数据方向寄存器DDRx决定对应引脚为输出还是输入,“0”为输入,“1”为输出,复位后,默认为输入。
PORTE最低两位只能为输入。
上拉电阻控制寄存器PERx第7、4、1、0位分别控制K、E、B、A端口,“1”允许使用对应端口的上拉电阻,“0”禁止,复位后,PK、PE端口使能,PB、PA禁止。
二、中断系统中断控制寄存器INTCR第7位IRQE,中断电平/边沿有效选择,0为低电平有效,1为下降沿有效;第6位IRQEN,外部中断IRQ中断请求使能,0关闭,1允许。
三、PWM模块PWM允许寄存器PWME对应每一位PWMEx,1启动输出,0停止输出,读写任意时刻。
PWM预分频时钟选择寄存器PWMPRCLK为Clock A和B选择独立的预分频因子,读写任意时刻。
Clock B对应6、5、4三位,Clock A对应2、1、0三位,分别可以实现2、4、8、16、32、64、128分频。
S12的输入/输入端口(I/O口)I/O端口功能可设置为通用I/O口、驱动、内部上拉/下拉、中断输入等功能。
设置I/O口工作方式的寄存器有:DDR、IO、RDR、PE、IE和PS。
DDR:设定I/O口的数据方向。
IO :设定输出电平的高低。
RDR:选择I/O口的驱动能力。
PE:选择上拉/下拉。
IE:允许或禁止端口中断。
PS:1、中断允许位置位时,选择上升沿/下降沿触发中断;2、中断禁止时且PE有效时,用于选择上拉还是下拉。
I/O端口设置1、A口、B口、E口寄存器(1)数据方向寄存器DDRA、DDRB、DDREDDRA、DDRB、DDRE均为8位寄存器,复位后其值均为0。
当DDRA=0、DDRB=0、DDRE=0 时A口、B口和E口均为输入口。
否则,A口、B口、E口为输出口。
当DDRA、DDRB、DDRE的任何一位置1时,则该位对应的引脚被设置为输出。
例如,将A口设置为输出口,则其C语言程序的语句为:DDRA=0xff;(2)A口、B口、E口上拉控制寄存器PUCRPUCR为8位寄存器,复位后的值为0。
当PUPAE、PUPBE、PUPEE被设置为1时,A口、B口、E口具有内部上拉功能;为0时,上拉无效。
当A口、B口、E口为地址/数据总线时,PUPAE和PUPBE无效。
(3)A口、B口、E口降功率驱动控制寄存器RDRIVRDRIV为8位寄存器,复位后的值为0,此时,A口、B口、E口驱动保持全功率;当RDPA、RDPB、RDPE为1时,A口、B口、E口输出引脚的驱动功率下降(4)数据寄存器PORTA、PORTB、PORTEPORTA、PORTB、PORTE均为8位寄存器,复位后的值为0,端口引脚输出低电平;要使引脚输出高电平,相应端口对应位应该置1。
由于PE0是/XIRQ、PE1是IRQ,因此,PE0和PE1只能设置为输入。
2、H口寄存器(1)H口I/O寄存器PTH任意时间读/写。
当某一引脚对就的数据方向位设置为1时,读操作返回的是这个端口寄存器的值;否则,读的是引脚的值。
以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了,所以这一页其实也没有用。
飞思卡尔之ATD模块今天看了ATD的模块,⼿头上有dg系列的资料,⽽⽤到的开发板是XS系列的。
在⽹上很难找到有关S12XS系列的中⽂资料,所以只能对着datasheet看,再加上⽹上搜集到的⼀些资料,有关此模块的⼀些⼩总结:S12XS系列MCU的ATD模块有27个寄存器,六个转换控制寄存器,两个转换状态寄存器,⼀个⽐较使能寄存器,⼀个⽐较⽅式寄存器和16个转换结果寄存器,附上⼀段例程void ATD_init(void){ATD0CTL1=0x0f; //选择8位转换精度ATD0CTL2=0x40; //打开CCF快速清零位,关闭外部触发输⼊,关闭中断ATD0CTL3=0x08; //数据左对齐,non-fifo,转换序列长度为1ATD0CTL4=0xE3; //采样时间为24个ATD时钟期, ATDCLK=8MB/8=1MHz}⼀般常⽤到的也就是这段例程中⽤到的⼏个寄存器。
//-----------------------------------------------------------////功能说明:MC9S12XS128--ATD例程//使⽤说明:由通道ATD0进⾏多通道A/D转换,转换值在B⼝显⽰//程序设计:DEMOK⼯作室()//设计时间:2010.03.12//------------------------------------------------------------//#include <hidef.h>#include "derivative.h"word AD_wValue;//AD转换结果//--------------初始化函数----------------////-----时钟初始化程序--------//void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1){ //锁相环时钟=2*16*(2+1)/(1+1)=48MHzREFDV=1; //总线时钟=48/2=24MHzSYNR=2;while(!(CRGFLG&0x08));CLKSEL=0x80;}//-----ATD初始化程序--------//void AD_Init(void){ATD0CTL1=0x00; //选择AD通道为外部触发,8位精度,采样前不放电ATD0CTL2=0x40; //标志位⾃动清零,禁⽌外部触发, 禁⽌中断ATD0CTL3=0xa0; //右对齐⽆符号,每次转换4个序列, No FIFO, Freeze模式下继续转ATD0CTL4=0x01; //采样时间为4个AD时钟周期,PRS=1,ATDClock=6MHzATD0CTL5=0x30; //特殊通道禁⽌,连续转换 ,多通道转换,起始通道为0转换4个通道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(!ATD0STAT2_CCF0); // 等待转换结束while(ATDOSTAT2_CCF0==1) AD_GetValue(&AD_wValue); // 读取转换结果PORTB = (byte)AD_wValue; // 在B⼝显⽰转换值}}。
SCI寄存器说明1、波特率控制寄存器(SCIBDH、SCIBDL)IREN:红外调制模式使能位1 使能0 禁止TNP[0..1]:窄脉冲发射位SBR[0..12]:波特率设置位When IREN = 0 then,SCI baud rate = SCI bus clock / (16 x SBR[12:0])When IREN = 1 then,SCI baud rate = SCI bus clock / (32 x SBR[12:1])【说明】波特率发生器在复位后是禁止的,在设置TE、RE(在SCICR2寄存器中)后才会工作。
当(SBR[12:0] = 0 and IREN = 0) 或者(SBR[12:1] = 0 andIREN = 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。
飞思卡尔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 的输出。
附录I:寄存器地址列表直接页面寄存器总结高页面寄存器总结非易失寄存器总结注:直接页面寄存器表地址的低字节用粗体显示,直接寻址对其访问时,仅写地址低字节即可。
第2列中寄存器名用粗体显示以区别右边的位名。
有0的单元格表示未用到的位总是读为0,有破折号的单元格表示未用或者保留,对其读不定。
附录II 指令接与寻址方式HCS08指令集概括运算符() = 括号种表示寄存器或存储器位置的内容← = 用……加载(读: “得到”)& = 布尔与| = 布尔或⊕= 布尔异或×= 乘÷ = 除: = 串联+ = 加- = 求反(二进制补码)CPU registersA =>累加器CCR =>条件代码寄存器H =>索引寄存器,高8位X => 索引寄存器,低8位PC =>程序计数器PCH =>程序计数器,高8位PCL =>程序计数器,低8位SP =>堆栈指针存储器和寻址M =>一个存储区位置或者绝对值数据,视寻址模式而定M:M + 0x0001 => 两个连续存储位置的16位值.高8位位于M的地址,低8位位于更高的连续地址.条件代码寄存器(CCR)位V => 二进制补码溢出指示,第7位H => 半进位,第4位I => 中断屏蔽,第 3位N => 求反指示器, 第2位Z => 置零指示器, 第1位C => 进/借, 第0位 (进位第 7位 )CCR工作性符号– => 位不受影响0 = > 位强制为01 = > 位强制为1= >根据运算结果设置或清除位U = > 运算后没有定义机器编码符号dd =>一个直接寻址0x0000–0x00FF的低8位(高字节假设为0x00)ee => 16位偏移量的高8位ff => 16位偏移量的低8位ii => 立即数的一个字节jj => 16位立即数值的高位字节kk => 16位立即数值的低位字节hh => 16位扩展寻址的高位字节ll => 16位扩展寻址的低位字节rr => 相对偏移量n —任何表达范围在0–7之间的一个有符号数的标号或表达式opr8i —任何一个表达8位立即值的标号或表达式opr16 —任何一个表达16位立即值的标号或表达式opr8a —任何一个表达一个8位值的标号或表达式.指令对待这个8位值为直接页面64K 字节地址空间(0x00xx)中地址的低8位.opr16a —任何一个表达16位值的标号或表达式.指令对待这个值为直接页面64K字节地址空间.oprx8 —任何一个表达8位无符号值的标号或表达式,用于索引寻址.oprx16 —任何一个16位值的标号或表达式.因为HCS08有一个16位地址总线,这可以为一个有符号或者无符号值.rel —任何指引在当前指令目标代码最后一个字节之后–128 to +127个字节之内的标号或表达式.汇编器会计算包括当前指令目标代码在内的8位有符号偏移量. 寻址方式隐含寻址(Inherent)如CLRA,只有操作码,无操作数,需要操作的数据一般为CPU寄存器,因此不需要再去找操作数了。
S12的输入/输入端口(I/O口)I/O端口功能可设置为通用I/O口、驱动、内部上拉/下拉、中断输入等功能。
设置I/O口工作方式的寄存器有:DDR、IO、RDR、PE、IE和PS。
DDR:设定I/O口的数据方向。
IO :设定输出电平的高低。
RDR:选择I/O口的驱动能力。
PE:选择上拉/下拉。
IE:允许或禁止端口中断。
PS:1、中断允许位置位时,选择上升沿/下降沿触发中断;2、中断禁止时且PE有效时,用于选择上拉还是下拉。
I/O端口设置1、A口、B口、E口寄存器(1)数据方向寄存器DDRA、DDRB、DDREDDRA、DDRB、DDRE均为8位寄存器,复位后其值均为0。
当DDRA=0、 DDRB=0、 DDRE=0 时A口、B口和E口均为输入口。
否则,A口、B口、E口为输出口。
当DDRA、DDRB、DDRE的任何一位置1时,则该位对应的引脚被设置为输出。
例如,将A口设置为输出口,则其C语言程序的语句为:DDRA=0xff;(2)A口、B口、E口上拉控制寄存器PUCRPUCR为8位寄存器,复位后的值为0。
当PUPAE、PUPBE、PUPEE被设置为1时,A口、B口、E口具有内部上拉功能;为0时,上拉无效。
当A口、B 口、E口为地址/数据总线时,PUPAE和PUPBE无效。
(3)A口、B口、E口降功率驱动控制寄存器RDRIVRDRIV为8位寄存器,复位后的值为0,此时,A口、B口、E口驱动保持全功率;当RDPA、RDPB、RDPE为1时, A口、B口、E口输出引脚的驱动功率下降(4)数据寄存器PORTA、PORTB、PORTEPORTA、PORTB、PORTE均为8位寄存器,复位后的值为0,端口引脚输出低电平;要使引脚输出高电平,相应端口对应位应该置1。
由于PE0是/XIRQ、PE1是IRQ,因此,PE0和PE1只能设置为输入。
2、H口寄存器(1)H口I/O寄存器PTH任意时间读/写。
当某一引脚对就的数据方向位设置为1时,读操作返回的是这个端口寄存器的值;否则,读的是引脚的值。
(2)端口H输入寄存器PTIH只可读,不可写。
读该寄存器返回的是引脚状态。
该寄存器可检测相应引脚的输出是否过载或短路。
(3)数据方向寄存器DDRH(4)端口H降功率驱动寄存器RDRH(5)端口H拉动装置使能寄存器PERH任意时间读/写。
如果端口H是输入口,该寄存器将配置被激活的上拉或下拉装置。
当PERH某一位为1时,对应装备上拉或下拉使能。
当PERH某一位为0时,对应装备上拉或下拉禁止。
(6)端口H极性选择寄存器PPSH任意时间读/写。
该寄存器有两个作用:选择激活的中断边沿的极性;选择上拉或下拉。
当PPSH某一位为1时,H口对应引脚信号上升沿将使PIFH寄存器中相应位置位;当PERH对应位置1且端口定义为输入口时,引脚和下拉装置连接。
当PPSH某一位为0时,H口对应引脚信号下降沿将使PIFH寄存器中相应位置位;当PERH对应位置1且端口定义为输入口时,引脚和上拉装置连接。
(7)H口中断使能寄存器PIEH任意时间读/写。
PIEH寄存器可设置端口H相应引脚的外部中断边沿使能或禁止。
PIEH某一位置1时,对应引脚的中断使能。
PIEH某一位置0时,对应引脚的中断禁止。
(8)口中断标志寄存器PIFH任意时间读/写。
当对应引脚出现活动的边沿时,PIFH相应位被置1。
是上升沿或下降沿,由PPSH寄存器相应位的状态决定。
为了清除标志位,向PIFH对应位写“1”。
写“0”无效。
3、J口寄存器(1)J口I/O寄存器PTJ任意时间读/写。
当数据方向寄存器对应位置1时,读PTJ将返回PTJ中的值;否则读返回对应引脚的值。
(2)J口输入寄存器PTIJ只读不写。
读该寄存器将返回引脚的值。
该寄存器可检测相应引脚的输出是否过载或短路。
(3)J口数据方向寄存器DDRJ(4)J口降功率驱动寄存器RDRJ(5)J口拉动装备使能寄存器PERJ(6)J口极性选择寄存器PPSJ任意时间读/写。
该寄存器有两个作用:选择激活的中断边沿的极性;选择上拉或下拉。
当PPSJ某一位为1时,J口对应引脚信号上升沿将使PIFJ寄存器中相应位置位;当PERJ对应位置1且端口定义为输入口时,引脚和下拉装置连接。
当PPSJ某一位为0时,J口对应引脚信号下降沿将使PIFJ寄存器中相应位置位;当PERJ对应位置1且端口定义为输入口时,引脚和上拉装置连接。
(7)J口中断使能寄存器PIEJ任意时间读/写。
PIEJ寄存器可设置端口J相应引脚的外部中断边沿使能或禁止。
PIEJ某一位置1时,对应引脚的中断使能。
PIEJ某一位置0时,对应引脚的中断禁止.任意时间读/写。
当对应引脚出现活动的边沿时,PIFJ相应位被置1。
是上升沿或下降沿,由PPSJ寄存器相应位的状态决定。
为了清除标志位,向PIFJ对应位写“1”。
写“0”无效。
4、M口寄存器(1)M口I/O寄存器PTM任意时间读/写。
当数据方向寄存器对应位置1时,读PTM将返回PTM中的值;否则读PTM 将返回对应引脚的值。
(2)M口输入寄存器PTIM只读不写。
读该寄存器将返回引脚的值。
该寄存器可检测相应引脚的输出是否过载或短路。
Byteflight/CAN/BDLC强制将与其输出对应的引脚置为输出状态;同时,将与其输入对应的引脚置为输入状态。
(4)M口降功率驱动寄存器RDRM(5)M口拉动装备使能寄存器PERM任意时间读/写。
如果端口用于输入或“线或”输出,该寄存器配置被激活的上拉或下拉装置。
当端口用于推挽输出时,相应位无效。
(6)M口极性选择寄存器PPSM任意时间读/写。
当PPSM的某一位被置为1时,如果PERM对应位使能,并且端口用于通用或BDLC输入,则一个下拉装备被连接到M口对应引脚上。
当PPSM的某一位被清0时,如果PERM对应位使能,并且端口用于通用、Byteflight或RXCAN输入,则一个上拉装备被连接到M口对应引脚上。
该寄存器配置输出引脚为线或。
如果应用于Byteflight、CAN和BDLC 输出且许多几种串行模式的多点连接,则该寄存器的某一位对于用于输入的相应引脚无影响。
当WOMM某一位置为1时,输出缓冲器工作在开漏输出状态。
当WOMM某一位清为0时,输出缓冲器工作在推挽输出状态。
5、P口寄存器(1)P口I/O寄存器PTP任意时间读/写。
如果PWM通道使能,则PWM功能优先于通用I/O功能。
如果相应通道使能,通道6~0只能输出;如果停机特性使能,则通道7可作为PWM输出与输入。
SPI功能也优先于通用I/O功能。
(2)P口输入寄存器PTIP如果PWM对应通道或SPI模式使能,则该寄存器对引脚无效。
(4)P口降功率驱动寄存器RDRP(5)P口拉动装置使能寄存器PERP(6)P口极性选择寄存器PPSP任意时间读/写。
该寄存器有两个作用:选择激活的中断边沿的极性;选择上拉或下拉。
当PPSP某一位为1时,P口对应引脚信号上升沿将使PIFP寄存器中相应位置位;当PERP对应位置1且端口定义为输入口时,引脚和下拉装置连接。
当PPSP某一位为0时,P口对应引脚信号下降沿将使PIFP寄存器中相应位置位;当PERP对应位置1且端口定义为输入口时,引脚和上拉装置连接。
任意时间读/写。
PIEP寄存器可设置端口P相应引脚的外部中断边沿使能或禁止。
PIEP某一位置1时,对应引脚的中断使能。
PIEP某一位置0时,对应引脚的中断禁止。
(8)P口中断标志寄存器PIFP任意时间读/写。
当对应引脚出现活动的边沿时,PIFP相应位被置1。
是上升沿或下降沿,由PPSP寄存器相应位的状态决定。
为了清除标志位,向PIFP对应位写“1”。
写“0”无效。
6、S口寄存器(1)S口I/O寄存器PTS(2)S口输入寄存器PTIP(4)S口降功率驱动寄存器RDRS(5)S口拉动装置使能寄存器PERS(6)S口极性选择寄存器PPSS任意时间读/写。
该寄存器有两个作用:选择激活的中断边沿的极性;选择上拉或下拉。
当PPSP某一位为,PERP对应位置1且端口定义为输入口时,引脚和下拉装置连接。
当PPSP某一位为0,PERP对应位置1且端口定义为线或输出口时,引脚和上拉装置连接。
该寄存器配置输出引脚为线或。
如果应用于SPI和SCI输出且许多几种串行模式的多点连接,则该寄存器的某一位对于用于输入的相应引脚无影响。
当WOMM某一位置为1时,输出缓冲器工作在开漏输出状态。
当WOMM某一位清为0时,输出缓冲器工作在推挽输出状态。
S12微控制器中断模块中断源:中断请求信号的来源。
S12微控制器的中断源:特殊中断源、外部中断源、端口中断源、定时中断源、通信中断源、A/D中断源等。
中断过程①外部或内部中断源提出中断请求,如果存在中断标志位,则硬件置相应中断标志位。
②如果开放了CPU对相应中断源的中断请求的响应,CPU将暂停当前程序段的执行,I清0,即关中断,将断点地址与相关寄存器的值压入堆栈保护起来。
③跳转到中断入口地址执行指令,进而执行中断服务程序。
中断服务程序中清标志位。
④将压入堆栈的数据放回相关寄存器,断点地址放回PC。
⑤返回暂停的程序段继续执行。
1、不可屏蔽中断XIRQ中断入口地址:$fff4、$fff5。
C语言中断号:5。
(1)中断允许位X将CCR中的X位清0,就开放了CPU对XIRQ中断请求的响应。
C语言程序中,使用如下指令可开放XIRQ的中断:ASM LDAA #$10;ASM TAP;(2)中断请求信号低电平有效。
(3)实验①实验要求在main()中顺序点亮8支发光管,每次点亮1支。
在XIRQ的中断服务程序中反向点亮8支发光管,每次点亮2支。
②电路连接发光管由A口驱动;将E口与B口连接,由PB0为XIRQ提供中断请求信号。
2、可屏蔽中断IRQ中断入口地址:$fff2、$fff3。
C语言中断号:6。
(1)中断允许总控制位I将CCR中的I位清0,就开放了CPU对可屏蔽中断源的中断请求的响应。
(2)IRQ控制寄存器IRQCR程序中,IRQCR使用符号INTCR代替。
①IRQ中断触发方式选择位IRQE当IRQE=1时,IRQ引脚下降沿触发中断。
当IRQE=0时,IRQ引脚低电平沿触发中断。
②IRQ中断允许控制位IRQEN当IRQEN=1时,IRQ引脚与中断逻辑连接,IRQ中断允许。
当IRQEN=0时,IRQ引脚与中断逻辑断开,IRQ中断禁止。
(3)实验①实验要求在main()中顺序点亮8支发光管,每次点亮1支。
在IRQ的中断服务程序中反向点亮8支发光管,每次点亮2支。
②电路连接发光管由A口驱动;将E口与B口连接,由PB1为IRQ提供中断请求信号。
3、H口中断中断入口地址:$ffcc、$ffcd。
C语言中断号:25。
(1)中断允许总控制位I将CCR中的I位清0,就开放了CPU对可屏蔽中断源的中断请求的响应。