飞思卡尔寄存器整理
飞思卡尔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 的输出。
飞思卡尔16位单片机寄存器总结

一、输入输出端口寄存器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分频。
飞思卡尔MC9S12G系列芯片之【GPIO】模块总结

位数 8 8 8 8 2
小注: a. 由上表可知,这五个寄存器通过同一个电阻控制寄存器 PUCR 的 0~4 位分别
对应控制端口 A~D;
b. 在学习板中(这是前提,以下模块与寄存器的连接仅限此开发板):
LED 灯是通过 PORTA 寄存器控制,LED1~LED8 分别对应 PORTA 的 P0~P7 位(注意
置 0:输入 置 1:输出 置 0:上拉设备禁止 置 1:上拉设备使能 置 0:下降沿触发 置 1:上升沿触发 置 0:中断禁止 置 1:中断使能 置 0:无极性沿发生 置 1:有极性沿发生
位数 8
8
端口 P 和 J 都含有 7 个寄存器,其中与中断有关的寄存器有两个:
中断使能寄存器 PIEx 及中断标志寄存器 PIFx。
置 0:低电平 置 1:高电平 用于检测过载或输出 引脚短路条件 置 0:输入 置 1:输出 置 0:上拉设备禁止 置 1:上拉设备使能 置 0:下降沿触发 置 1:上升沿触发
WOMN 寄存器为 PORTS 和 PORTM 特有的寄存器,不常用。
位数 8
8
端口名称
寄存器种类 数据寄存器(PTT)
PORTT (PT)
GPIO 模块总结(以 MC9S12G128 为例)
一、常见功能
功能 设置输入/输出端口 设定 I/O 口的高低电平 选择内置上拉/下拉电阻 中断输入方式的选择 驱动能力的设置
需配置寄存器 DDRx(置 0 为输入,置 1 时为输出) PORTx(置 0 低电平、置 1 高电平) PERx PIEX XS128 芯片具有
EnableInterrupt;
// 定义主函数
// 禁止中断 // 设置 I/O 方向为输出 / *对 data 取反后为 0111 1111,因 LED 在低
飞思卡尔S12系列寄存器和中断讲解

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时,读操作返回的是这个端口寄存器的值;否则,读的是引脚的值。
飞思卡尔单片机 第1节-CPU寄存器

CPU寄存器
CPU寄存器
累加器 (A) 累加器A是一个通用8位寄存器。经常用于暂存一个输入到算 术逻辑单元(ALU)的操作数,并且用于存放(ALU)的计算结果。 复位对累加器A的内容没有影响。 索引寄存器(H:X) 这个16位寄存器实际上分为两个8位寄存器(H和X),它们作为 一个16位的地址指针一起工作,H存放一个地址的高位字节 和X存放地址的低位字节。所有索引寻址模式指令利用H:X中 全部16位值作为一个索引参考指针;然后,为了与早先 M68HC05家族兼容,一些指令只在低8位(X)中运行,并且H在 复位过程中强制为0x00。复位对X的内容没有影响。
HCS08 CPU的特点包括:
▪目标代码完全向上兼容M68HC05和M68HC08家族 ▪所有寄存器和存储器映射在单块64 Kbyte地址空间 ▪16位堆栈指针SP(64 Kbyte地址空间中的任意大小堆栈) ▪16位索引寄存器(H:X)的强大的寻址索引模式 ▪多种寻址模式 ▪8位累加器(A) ▪支持存储器到存储器的数据传送 ▪高效的位操作指令 ▪快速的8位乘8位和16位除以 8位指令 ▪STOP和WAIT指令唤醒低功耗运行状态
条件代码寄存器(CCR) 条件代码寄存器 8位条件代码寄存器存放中断屏蔽位(I)和5个指出刚执行指令 结果的标志。第5和第6位永远设置为1。如图:
I 位是中断屏蔽控制位,与其他位不同的是它在CCR 中不是处 理器状况位。在CCR的六个可执行位中,I 位也是复位后唯一可 被初始化的位。I 位复位后置为1,这使得中断被屏蔽直到堆栈 指针被初始化。其他五个状态位(V、H、N、Z 和C)在复位后是 未知的,只有在执行一个指令后才能知道。复位后无须强制这 些位为特定的值,因为直到执行了一个影响它们的指令后,与 这些位相关的条件转移才有意义。 这五个状态位标志了运算和其他指令的结果。条件转移指令 根据CCR 内状态位的值来决定是直接转移到一个新的程序地址, 还是继续执行下一个指令。简单的条件转移指令(BCC、BCS、 BNE、BEQ、BHCC、BHCS、BMC、BMS、BPL 和BMI)所导 致的转移取决于单一的CCR 位状态,而其他转移指令则被两三 个更复杂的CCR 位控制。例如,若布尔表达式[(Z) | (N⊕V)]真, 则将产生小于等于转移(BLE).
飞思卡尔之ATD模块

飞思卡尔之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⼝显⽰转换值}}。
飞思卡尔单片机_DG128_Timer寄存器说明

Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4
TC5 寄存器偏移量:$001A-$001B Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4
TC6 寄存器偏移量:$001C-$001D Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4
TC7 寄存器偏移量:$001E-$001F Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4
Bit11 Bit3
Bit11 Bit3
Bit8 Bit0
Bit8 Bit0
Bit8 Bit0
Bit8 Bit0
Bit8 Bit0
Bit8 Bit0
8、定时器核心寄存器(TCNT) 寄存器偏移量:$0004-$0005
Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8
Bit7 Bit6
Bit5
Bit4
所示的 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。
飞思卡尔2014mc9s12xs128学习及智能车制作笔记

S128学习笔记(一)GPIO 模块S128 IO操作主要有三个寄存器数据寄存器(PORTX)数据方向寄存器(DDRX) 上拉上拉电阻控制寄存器PUCR)一. GPIO概述通用I/O:GPIO(General Purpose I/O),是I/O的最基本形式,它是一组输入或输出引脚,有时也称为并行I/O(parallel I/O)。
作为普通输入引脚,MCU内部程序可以读取该引脚,知道该引脚是“1”(高电平)或“0”(低电平),即开关量输入。
作为普通输出引脚,MCU内部程序由该引脚输出“1”(高电平)或“0”(低电平),即开关量输出。
大多数通用I/O引脚可以通过编程来设定工作方式为输入或输出,称之为双向通用I/O。
2. I/O口的使用方法MC9S12DG128 MCU有10个普通I/O口,分别是A口、B口、E口、H口、J口、K口、M 口、P口、S口、T口。
这些引脚中的大部分具有双重功能,其中A、B、E、K口只用做GPIO 功能,这里仅讨论它们编程方法。
使用这些I/O口主要设置如下寄存器:1)数据方向寄存器(Data Direction Register x,DDRx)DDRx的第7~0位分别记为DDRx7~DDRx0,这些位分别控制着x口引脚PORTx7~PORTx0是输入还是输出,若DDRxn=0,则引脚PORTAxn为输入,若DDRxn=1,则引脚PORTxn为输出。
复位时DDRx为$00。
(注:x代表A、B、E、K口中的某一个,n表示某一位)2)数据寄存器(Port x I/O Register,PORTx)PORTx的第7~0位分别记为PORTx7~PORTx0。
若A口的某一引脚PORTxn被定义。
成输出,程序使x口I/O寄存器PORTx的相应位PORTxn=0,则引脚PORTxn输出“低电平”;程序使PORTxn=1,则引脚PORTxn输出“高电平”。
若x口的某一引脚PORTxn被定义成输入,程序通过读取x口I/O寄存器PORTx,获得输入情况,0表示输入为“低电平”,1表示输入为“高电平”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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时,对应引脚的中断禁止.(8)J口中断标志寄存器PIFJ任意时间读/写。
当对应引脚出现活动的边沿时,PIFJ相应位被置1。
是上升沿或下降沿,由PPSJ寄存器相应位的状态决定。
为了清除标志位,向PIFJ对应位写“1”。
写“0”无效。
4、M口寄存器(1)M口I/O寄存器PTM任意时间读/写。
当数据方向寄存器对应位置1时,读PTM将返回PTM中的值;否则读PTM将返回对应引脚的值。
(2)M口输入寄存器PTIM只读不写。
读该寄存器将返回引脚的值。
该寄存器可检测相应引脚的输出是否过载或短路。
(3)M口数据方向寄存器DDRMByteflight/CAN/BDLC强制将与其输出对应的引脚置为输出状态;同时,将与其输入对应的引脚置为输入状态。
(4)M口降功率驱动寄存器RDRM(5)M口拉动装备使能寄存器PERM任意时间读/写。
如果端口用于输入或“线或”输出,该寄存器配置被激活的上拉或下拉装置。
当端口用于推挽输出时,相应位无效。
(6)M口极性选择寄存器PPSM任意时间读/写。
当PPSM的某一位被置为1时,如果PERM对应位使能,并且端口用于通用或BDLC输入,则一个下拉装备被连接到M口对应引脚上。
当PPSM的某一位被清0时,如果PERM对应位使能,并且端口用于通用、Byteflight或RXCAN输入,则一个上拉装备被连接到M口对应引脚上。
(7)M口线或模式寄存器WOMM该寄存器配置输出引脚为线或。
如果应用于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(3)P口数据方向寄存器DDRP如果PWM对应通道或SPI模式使能,则该寄存器对引脚无效。
(4)P口降功率驱动寄存器RDRP(5)P口拉动装置使能寄存器PERP(6)P口极性选择寄存器PPSP任意时间读/写。
该寄存器有两个作用:选择激活的中断边沿的极性;选择上拉或下拉。
当PPSP某一位为1时,P口对应引脚信号上升沿将使PIFP寄存器中相应位置位;当PERP对应位置1且端口定义为输入口时,引脚和下拉装置连接。
当PPSP某一位为0时,P口对应引脚信号下降沿将使PIFP寄存器中相应位置位;当PERP对应位置1且端口定义为输入口时,引脚和上拉装置连接。
(7)P口中断使能寄存器PIEP任意时间读/写。
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(3)S口数据方向寄存器DDRS(4)S口降功率驱动寄存器RDRS(5)S口拉动装置使能寄存器PERS(6)S口极性选择寄存器PPSS任意时间读/写。
该寄存器有两个作用:选择激活的中断边沿的极性;选择上拉或下拉。
当PPSP某一位为,PERP对应位置1且端口定义为输入口时,引脚和下拉装置连接。
当PPSP某一位为0,PERP对应位置1且端口定义为线或输出口时,引脚和上拉装置连接。
(7)S口线或模式寄存器WOMS该寄存器配置输出引脚为线或。
如果应用于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支。