资源描述
nI/O口模块S12MEBIV3.PDF S12DTB128PIMV2.PDFn串行通信模块S12SCIV2.PDF S12SPIV4.PDF S12IICV2.PDFnECT 模块S12ECT16B8CV1.PDFnA/D模块S12ATD10B8CV2.PDFnPWM模块S12PWM8B8CV1.PDFnMSCAN模块S12MSCANV2.PDFn使用PORTJ中断口功能的例子,本例的原理是:设置A口为输出口,PTA的第6脚跟PTJ的第6脚硬件相连,PTB输出,用来控制8个LED灯,PTJ开中断,并且设置为上升沿触发。首先PTA初始化为0,PTB为0 xFF,此时等灭。在大循环冲设置PTA第6位为高电平,产生中断,灯低4个亮,高4个不亮。使用单步运行查看效果。nATDDR0ATDDR7:07通道的结果寄存器。A/D转换的结果需要从这几个寄存器中读取。每个16位寄存器可以分成2个8位的寄存器来读取,分别为ATDDRxH和ATDDRxL。n注意转换结果在这8个16位寄存器中的存储格式。以10位左、右对齐为例:n左对齐10位数据n右对齐10位数据n另外还要注意有符号数据和无符号数据的区别。总线时钟CLOCKACLOCKBCLOCKSACLOCKSB分频分频分频分频PWM波形频率和占空比的计算:PWMx 频率=Clock(A,B,SA,or SB)/PWMPERx若Polarity=0(PPOLx=0)Duty Cycle=(PWMPERx-PWMDTYx)/PWMPERx 100%若Polarity=1(PPOLx=1)Duty Cycle=PWMDTYx/PWMPERx 100%下面举一个左对齐输出的例子:假设时钟源频率=10MHz(周期=100ns),PPOLx=0,PWMPERx=4,PWMDTYx=1。所以,PWMx 的频率=10MHz/4=2.5MHz,PWMx 的周期=400ns,PWMx 的占空比=3/4100%=75%。用时钟源的频率除以周期寄存器中值的2 倍,得到的结果就是当前PWM输出波形的频率。PWMx Frequency=Clock(A,B,SA,or SB)/(2PWMPERx)若Polarity=0(PPOLx=0)Duty Cycle=(PWMPERx-PWMDTYx)/PWMPERx 100%若Polarity=1(PPOLx=1)Duty Cycle=PWMDTYx/PWMPERx 100%下面举一个居中对齐输出的例子:假设时钟源频率=10MHz(周期=10ns),PPOLx=0,PWMPERx=4,PWMDTYx=1。所以,PWMx 的频率=10MHz/4=2.5MHz,PWMx 的周期=400ns,PWMx 的占空比=3/4100%=75%。当PWMEx 被置位后,PWM 输出就会立即开始。但是直到PWM 模块时钟的下一个周期到来之时,才可以输出正确的波形,而在这之前的波形可能会是无效的。当处于级联模式时,8 个8 位PWM 通道组成4 个16 位的PWM 通道,PWME1、PWME3、PWME5 和PWME7 对这4 个通道进行控制,而其它控制位处于无效状态。PWMEx:通道有效选择位。1=允许PWM输出,0=禁止。PWMPOL 寄存器随时都可以进行设置。如果某PWM 通道在输出波形的过程中,波形的极性发生了改变,那么在两组波形的连接处可能会出现缩短或者拉伸了的不正常波形。PPOLx:通道x的输出极性。1=先高后低,0=先低后高。PCLK7:PWM 通道7 时钟源选择。1=Clock SB;0=Clock B。PCLK6:PWM 通道6 时钟源选择。1=Clock SB;0=Clock B。PCLK5:PWM 通道5 时钟源选择。1=Clock SA;0=Clock A。PCLK4:PWM 通道4 时钟源选择。1=Clock SA;0=Clock A。PCLK3:PWM 通道3 时钟源选择。1=Clock SB;0=Clock B。PCLK2:PWM 通道2 时钟源选择。1=Clock SB;0=Clock B。PCLK1:PWM 通道1 时钟源选择。1=Clock SA;0=Clock A。PCLK0:PWM 通道0 时钟源选择。1=Clock SA;0=Clock A。此寄存器用来选择Clock A 和B 的预分频因子。PWMPRCLK 寄存器随时都可以进行设置。如果某PWM 通道在输出波形的过程中,此通道的所使用时钟的频率发生了改变,那么在两组波形的连接处可能会出现缩短或者拉伸了的不正常波形。PCKB2、PCKB1、PCKB0:Clock B 预分频因子的选择PCKA2、PCKA1、PCKA0:Clock A 预分频因子的选择此寄存器控制每个PWM 通道输出波形的对齐方式,可以是左对齐或者居中对齐。如果CAEx=1,则对应通道的输出波形为居中对齐方式;如果CAEx=0,则为左对齐方式。注意只有当对应通道被禁止输出时,才可以设置此寄存器。CAEx:1=对应x通道为居中对齐模式 0=对应x通道为左对齐模式此寄存器可以实现把8 个8 位PWM 通道级联为4 个16 位PWM 通道。CONxy:x通道和y通道级联,以获得更高的输出精度。x通道作为高8位,y通道作为低8位。这时只有通道y的时钟选择位、极性控制位、输出允许位和对齐方式选择位才有效;通道x 的相应寄存器均无效。1=级联模式0=非级联模式PFRZ:冻结模式PWM 计数器停止。1=停止,0=继续运行。此寄存器用来提供产生时钟Clock SA 的比例因子,Clock SA 是由Clock A 经过一系列运算得来的,公式:Clock SA=Clock A/(2PWMSCLA)当PWMSCLA=0 时,默认比例因子为256,此时Clock SA 的频率等于Clock A 的频率除以512。此寄存器用来提供产生时钟Clock SB 的比例因子,Clock SB 是由Clock B 经过一系列运算得来的,公式如下:Clock SB=Clock B/(2PWMSCLB)当PWMSCLB=0 时,默认比例因子为256,此时Clock SB 的频率等于Clock B 的频率除以512。每个PWM 通道都有一个独立的加法/减法计数器,计数器的频率跟时钟源的频率有关。可以在任意时刻来读取计数器里的值,而计数器的工作不会受到影响。注意我们刚才讲过的左/居中对齐方式时,计数器的计数方式。对计数寄存器进行写操作将使它复位,计数器会立即开始加法计数,从周期寄存器和占空比寄存器的缓冲区里得到周期和占空比值,然后根据设置的极性来输出。当相应的PWM通道被禁止输出(PWMEx=0)时,计数器不工作;当PWM 通道允许时,计数器会以计数寄存器中的值为起点开始计数。每个PWM 通道都有一个独立的周期寄存器,周期寄存器中的值对应PWM 通道输出波形的周期。此寄存器具有双重缓存功能,新输入的值被送到缓冲区,而不是立即生效,到下一个有效周期开始时才会有效,所以PWM 输出波形的周期在改变时不会产生无效波形。每个PWM 通道都有一个独立的占空比寄存器,周期寄存器中的值对应PWM 通道输出波形的周期。此寄存器同样是双重缓存的。注意:读取寄存器会得到最新一次写入的值,而不会返回当前的周期值。PWM7ENA:PWM 紧急关断允许当此位为1 时,通道7 会被强制配置为输入端口,并且允许紧急关断。只有当此位为1时,寄存器中的其它位才有意义。PWM7INL:紧急关断通道7的有效电平。1=高电平,0=低电平。PWM7IN:PWM 通道7 的输入电平状态。PWMLVL:PWM 紧急关断后的输出电平。1=高,0=低。PWMRSTRT:PWM 重新启动。只有在当PWM 通道7 处于无效状态(非紧急关闭)时,才可以重新启动PWM 模块。把PWMRSTRT 置一,当计数器返回0 时,PWM 通道才开始运行。PWMIE:PWM 中断允许。1=允许,0=禁止。PWMIF:PWM 中断标志。当PWM7ENA 被置位时,PWM 通道7 上电平的任意变化将产生中断并使PWMIF 置位。1=PWM7IN输入有变化。0=PWM7IN 输入无变化。void PWMInit(void)PWMPOL=0 x20;/脉冲先高后低PWMCLK=0 x20;/使用sa 时钟源PWMPRCLK=0 x07;/时钟a 为总线8 分频PWMCAE=0 x00;/通道5 为左对齐输出模式PWMCTL=0 x00;/单独使用通道5,非级联PWMSCLA=0 x05;/Clock SA=Clock A/(2*PWMSCLA),SA 为3kHzPWMPER5=0 x64;/设定周期void main(void)unsigned char i;unsigned long j=10000;SET_PLL();/设置锁相环EnableInterrupts;PWMInit();/初始化PWMfor(i=0;i0 x64;i+)while(j-);j=10000;while(j-);j=10000;PWMDTY5=i;/设定占空比PWME=0 x20;/使能PWMvoid TimerOverflow(void)unsigned char i=1,j=0 x80;while(i!=0)&(j!=0)PORTB=(i|j);i=1;while(TCNT!=0 x0000);/延时while(TCNT=0 x0000);void main(void)/SET_PLL();/设置锁相环EnableInterrupts;TSCR1=0 x80;/定时器使能TSCR2=0 x07;/分频系数为128DDRB=0 xff;PORTB=0 xff;for(;)TimerOverflow();/请见请见exp15PORTB输出调用函数设置控制寄存器1设置控制寄存器2延时控制本例设置TSCR1=0 x80。TEN=1:主定时器使能。0=主定时器禁止,进入低功耗状态。TSWAI=0:等待模式时主定时器继续工作,方便调试。0=停止工作。TSFRZ=0:冻结模式时主定时器继续工作。0=停止工作。TFFCA=0:自动清除标志位。1=手动清除。必须设置TSCR1才可以使主定时器工作,需要在ECT模块初始化时就设置好。本例设置TOI=0:禁止定时器溢出中断。1=允许。TCRE=0:定时器自由运行。1=输出比较7引起复位。PR2=1、PR1=1、PR0=1:分频系数=128。TCNT为自由计数器的计数值,本例通过读取它的值实现延时。这是一个16位的寄存器,最大值为65535。while(TCNT!=0 x0000);while(TCNT=0 x0000);这两句的含义是:TCNT开始计数后值不为0,等待直到TCNT溢出返回0后,第一句继续,然后再等到到TCNT不为0,第二句继续。如果没有第二句,则有可能灯“隔一个亮一个”。IC0的初始化:的初始化:void ic_init(void)TSCR1=0 x90;/主定时器使能 TSCR2=0 x07;/分频因子=128 ICSYS=0 x02;/IC缓冲使能 TIOS=0;/通道设置为输入捕获TCTL4=0 xff;/采用上升、下降沿触发 TIE=0 x00000001;/通道0开中断本例使用了例一未使用的过寄存器:ICSYS、TIOS、TCTL4和TIE。SHxy=0:正常操作。1=通道x在通道y上产生同样的动作。TFMOD=0:只要产生正确的输入捕获事件,TFLG1中的CxF位就置一。1=队列模式时才使用。PACMX=0:8位脉冲累加器溢出后自动回0。1=不自动回0,停留在0XFF。脉冲累加器对IC通道捕获的有效边沿数量进行计数。BUFEN=1:使用输入捕获缓冲区。0=不使用。LATQ=0:输入捕获队列模式使能。产生一次成功的输入捕获时,IC通道寄存器中保留的计数值会被送到保持器中,然后IC寄存器会接收新的计数值。1=锁存模式使能。TIOS=0:设置相应的通道为输入捕获。IOSx:1=通道x为输出比较;0=通道x为输入捕获。EDGnA/B:输入捕捉边沿控制。本例设置EDG0A=1,EDG0B=1。即IC0通道采用上升,下降沿都触发。n代表通道序号。CxI:1=第x个通道中断允许;0=第x个通道中断禁止。本例设置C0I=1,把通道0的中断打开,这样能够使外部信号引发IC0中断,并进入相应的服务程序进行处理。初始化好后,需要在main函数中调用初始化函数ic_init()。以下是在main函数中,如何使用PORTA_BIT6来产生一个方波信号。DDRA=0 xff;/设置PORTA的方向寄存器,为输出PORTA=0 x00;/PORTA的输出初始化为低电平DDRB=0 xff;/PORTB设置为LED灯的控制信号PORTB=0 xff;/LED全灭for(;)for(i=0;i6000;i+)PORTA_BIT6=1;/循环中设置信号为高电平for(i=0;i6000;i+)PORTA_BIT6=0;/循环中设置信号为低电平,产生方波 方波信号已经成功得产生了,下面是中断服务程序:#pragma CODE_SEG NON_BANKEDvoid interrupt 8 ic0_int(void)TFLG1_C0F=1;/中断标志清除ic4=TC0;/通过读TC0寄存器来响应中断,ic4为用户设置的变量ic4=ic4-ic40;ic40=ic4;/得到脉冲宽度需要考虑溢出吗?PORTB=0 x55;/用LED灯来指示已经进入了中断/*以下放置其他代码*/这里讲一个输出比较例子,目的是通过OC0通道输出一个有一定宽度的脉冲。OC0的初始化:void oc_init()TSCR2=0 x07;/128分频,定时器溢出中断禁止TIOS=0 xff;/所有通道作为输出比较通道TIE =0 x00;/中断全部禁止TSCR1=0 x90;/主定时器使能TCTL2=0 xaa;/TC0低电平CFORC=0 xff;/强制输出比较void main(void)EnableInterrupts;oc_init();/初始化函数调用asm_main();TCTL2_OM0=1;TCTL2_OL0=1;/OC0高电平CFORC_FOC0=1;/OC0强制输出比较TC0=TCNT+40000;/设置脉冲宽度,在自由计数器TCNT的基础上加上脉冲宽度的计数值TCTL2_OM0=1;TCTL2_OL0=0;/OC0低电平for(;)/*其他代码*/FOCxx通道强制输出比较在相应的寄存器位写入强制输出比较命令,会立即使相应的通道处于输出比较状态。OMn:输出模式 OLn:输出等级这8 对控制位是用来指定输出比较的输出动作的,当OMn 和OLn 二者任意一个为1 时,OCn 对应的端口会有相应的输出。如果需要用OMn 和OLn 来控制相应定时器端口的输出,则OC7M 中的对应位必须清零。同步和异步串行通信的区别同步和异步串行通信的区别同步串行通信-使用时钟信号(SPI)。以数据块(帧)为传输单位;双方使用同一时钟(主控方提供时钟,被控方接收时钟);数据格式:每个数据块前加12个同步字符(同步头)进行帧同步,一般采用CRC循环冗余校验码;同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂;异步串行通信-不使用时钟信号(SCI)。串行通信时的数据、控制和状态信息都使用同一根信号线传送;收发双方必须遵守共同的通信协议(通信规程);串行异步通信以字符为单位进行传输。数据传输方式数据传输方式SPIESPI中断使能位。1=中断允许,0=中断禁止。SPESPI系统使能位。1=使用SPI,0=不使用SPI。SPTIE发送中断使能。1=允许,0=禁止。MSTR主从模式选择位。1=主机,0=从机。CPOL时钟极性位。1=有效时钟为低,空闲为高,0=有效时钟为高,空闲为低。主从机必须匹配。CPHASPI时钟相位控制。1=主机在SPSCK的第一个跳变开始驱动MOSI,从机应用它来启动数据发送。在连结几次SPI传送期间,从机的SS脚可保持为低电平;0=SS下跳用于启动从机数据发送,而第一个SPSCK跳变捕捉最高位。在一次SPI传送完毕,从机的SS脚必须返回高电平。SSOE从机选择输出使能。跟MODF配合使用。LSBFE最低位先发使能。1=先发最低位,0=先发最高位。SS非下降沿启动时钟信号启动MODFEN模式错误使能位。主机模式MODFEN=0,则SS不作用于SPI。如8页表。从机模式下,无论MODFEN为何值,SS只作为输入。1-SS引脚使用,0-SS引脚不作用于SPI。BIDIROE-在双工模式下(SPC0=1)输出使能。1-输出缓冲使能,0-输出缓冲禁止。SPISWAI-SPI 在等待模式下停止位。1-等待模式停止,0-等待模式正常工作。SPC0-串行引脚控制位0。控制正常和双工模式。波特率-每秒钟数据传输的二进制位数bps。SPPR2-SPPR0-SPI 波特率预分频位SPR2-SPR0-SPI 波特率选择位组合使用SPISR寄存器指示SPI的状态,并且只读。SPIF-SPIF 中断标志。1-中断发生,有数据存储到SPI数据寄存器-SPIDR;0-传输未完成。注意对此位清零的方法:当SPIF=1时,首先读SPISR的值,然后访问数据寄存器SPIDR。SPTEF-SPI 发送空中断标志。1-SPI数据寄存器空(数据已发送);0-SPI数据寄存器非空。注意对此位清零的方法:当SPTEF=1时,首先读SPISR的值,然后写数据寄存器SPIDR。MODF-模式错误标志。1-发生错误,0-无错误。当SPI 配置成主机模式并且模式错误检测使能(SPICR2 的MODFEN 位置位)时,如果SS 输入变低,该位置位。注意对此位清零的方法:当MODF=1时,首先读SPISR的值,然后写SPI控制寄存器1。SPI 数据寄存器是SPI 数据的输入和输出寄存器。写该寄存器会允许一个字节进入队列并发送。如果SPI 被配置成主机,当前面的数据发送完成,排在队列的数据会立即被发送。SPISR 寄存器中的发送空标志SPTEF 表明SPI 数据寄存器准备接收新的数据。当SPIF=1 时SPIDR 中接收的数据是有效的,这时才可以读到有效数据。注意,SPIEF=0时表示当前数据并未发送完成,不可写SPIDR寄存器,当SPIEF=1时,才可以写SPIDR寄存器以发送新数据。单片机MC9S12DG128 的SPI1 接口和74HC164 连接,74HC164 是串入并出的8 位移位寄存器,用其来扩展并行输出口,74HC164 的输出作为数码管显示电路的段码,采用动态扫描显示。PT5 做74HC164 的片选信号。微控制器工作于主模式,向SPIDR 写入数据启动SPI 发送模块后,MCU 发送的数据进入74HC164 的移位寄存器中。请见请见exp17。SPI1的的MOSI,时,时钟,片选,钟,片选,接到接到74HC16474HC164,串,串入并出。入并出。74HC244八八同相三态线驱同相三态线驱动器动器接接8段段LED的的驱动电路,驱动电路,低电平使某低电平使某段发光。段发光。MC9S12DG128单片机有两个SCI 模块。SCI 模块仅仅复用了PS 口的4 个I/O 引脚(0-3 位)作为RXD0、TXD0、RXD1、TXD1。当SCI 接收器/发送器被允许时,SCI 将控制TxD 和RxD 进入相应的操作,否则它们只能用作普通的I/O 口。注意SCI是异步异步串行通信口。SCI的发送器与接收器都是双缓冲的。各自有工作使能和中断控制。可工作于全双工模式。SCI的主要特性:1、异步 2、全双工3、不归零格式(NRZ)4、13个波特率控制位,选择更广5、收、发双缓冲 6、具有8个中断标志位的中断驱动操作SCI的其他特性可以在寄存器的讲解时体会。波特率计算公式:BR=两寄存器组合值,1-8191注意此寄存器的赋值方法:如果只对SCIBDH赋值是无效的,必须先对SCIBDH赋值,再对SCIBDL赋值才可以产生有效的BR。如果不使用SCIBDH,则可以直接给SCIBDL赋值,因为SCIBDH复位后默认为0,相当于赋0值。下面举个设置波特率为9600的例子。设置波特率实质上是计算公式中BR的值,再把BR的值赋给波特率寄存器。BR的值计算是有技巧的,可以用一个公式完成。BR值=(PLL频率/2)/目标波特率 /16)注意PLL频率/2即总线频率。使用PLL,总线频率=PLL频率/2,不使用,则总线频率=晶振频率/2。所以,如果需要设置SCI0波特率为9600,并假设PLL时钟频率=40M的话,赋值程序为:SCI0BDL=(unsigned char)(40000000UL/2)/9600/16);SCI0BDH不使用。LOOPS-SCI回送模式。即“自发自收”。1=回送模式,0=正常模式。SCISWAI-等待模式停止控制。1=等待模式SCI工作,0=不工作。RSRC-接收器来源。1=来源于外部,0=来源于内部。和LOOPS配合。M-数据字符长度。1=数据位9位,0=数据位8位。WAKE-唤醒条件位。1=地址位唤醒(接收数据的最大显著位为1),0=空闲线唤醒(RXD脚满足空闲条件)。ILT-空闲线类型。这位决定SCI什么时候开始计数“空闲字符”的位数。计数可从“起始位”或从“停止位”开始。从“起始位”开始计数,则“停止位”前的一串“1”可能产生错误的空闲线条件。从“停止位”开始计数,可避免错误的空闲线识别,但需要适当地同步发送操作。PE-奇偶校验使能。1=允许,0=禁止。PT-奇偶校验类型。1=奇校验,0=偶校验。一般此寄存器可以按默认值设置。TIE-传送寄存器空中断使能。1=中断允许,0=中断禁止。参考状态寄存器的TDRE位。由TDRE产生中断请求。TCIE-发送完毕中断使能。1=中断允许,0=中断禁止。参考TC位。RIE-接收数据寄存器满中断使能。1=中断允许,0=中断禁止。参考RDRF和OR位。ILIE-线路空闲中断使能。1=中断允许,0=中断禁止。参考IDLE位。TE-发送器使能。1=发送使能,0=发送禁止。RE-接收器使能。1=接收使能,0=接收禁止。RWU-接收器唤醒位。1=唤醒允许并且关闭接收中断。通常,硬件通过自动清除RWU来唤醒接收器。0=正常模式。SBK-传输终止位。1=发送终止符,0=不发送。这个寄存器的TDRE,TC,RDRF,IDLE和OR位跟控制寄存器2有关,控制寄存器2中的对应位为中断使能位,状态寄存器1中的位为中断状态位。TDRE-发送数据寄存器空标志。当数据由SCI数据寄存器移动到SCI移位寄存器中时,TDRE=1。然后数据寄存器为空,可以接收新数据。通过读SCISR1 然后写SCIDRL 来清TDRE。TC-发送完成标志。当TC=1 时,读SCISR1 然后写SCIDRL 清除该位。当数据、报头或中止符进入队列并准备发送时,TC 自动被清除。1=发送完毕,0=正在发送。RDRF-接收数据寄存器满标志。1=数据寄存器接收到有效数据,可读;0=数据寄存器中数据暂不可用。IDLE-线路空闲标志。当10 个连续的逻辑1(M=0)或11 个连续的逻辑1(M=1)出现在接收器输入端,IDLE置位。如果IDLE 被清除,在一个空闲条件置位IDLE 前一个有效的帧必须再次置位RDRF位。通过读SCISR1 然后读SCIDRL 来清除IDLE。1=接收空闲;0=上次空闲状态后,接收器还没有处于有效状态。OR-溢出标志。置位条件:在接收下一个数据前软件未读取数据寄存器,在接收到下一帧的停止位后,OR立即置位。移位寄存器中的数据丢失,但不会影响SCIDR中的数据。可以通过读SCISR1 然后读SCIDRL 来清除。1=有溢出,0=无溢出。NF-噪声标志。1=有噪声,0=无噪声。通过读SCISR1 然后读SCIDRL 来清除NF 标志。FE-接收器帧错误标志。当接收到的停止位是0 时,FE=1。通过SCISR1 然后读SCIDRL 来清除FE。FE 禁止进一步的数据接收直到FE 清除。1=检测到帧错误。0=未检测到帧错误。PF-奇偶错误标志。当奇偶使能位PE=1 且接收数据的校验位和校验类型不符时,PF=1。读SCISR1 然后读SCIDRL 清除PF。1=检测到奇偶错误。0=未检测到奇偶错误。SCISR2包含2个读写位,1个只读位。BK13-终止符长度。该位决定了发送的中止符长度是10 或11 位还是13 或14 位。帧错误的检测不影响该位。1=中止符长度是13 或14 位。0=中止符长度是10 或11 位。TXDIR:单线模式下的发送器引脚数据检测。该位决定了TXD 引脚在单线模式下是用来做输入还是输出。该位仅和单线模式有关。1=单线模式下TXD 引脚作为输入。0=单线模式下TXD 引脚作为输出。RAF:接收器有效标志。当接收器在起始位的RT1 时刻检测到逻辑0 时,RAF=1。当接收器检测到空闲字符时RAF 被清除。0=没有接收操作。1=正在接收。任意可读,读操作的是SCI 接收寄存器;任意可写,写的是SCI 发送数据寄存器,写R8 位无效。R8-接收位当SCI 配置成9 位数据格式(M=1)时,R8 是接收数据的第九位。T8-发送位当SCI 配置成9 位数据格式(M=1)时,T8 是发送数据的第九位。R7:0:接收位接收的数据位。T7:0:发送位发送的数据位。注意,读写时跟C语言的读写操作是一样的。需要定义字节型变量。注:如果T8 的值和前面发送的一样,T8 就不必重新写入。直到重新写入不同的值,T8才被更新。在8 位数据模式中,只有SCIDRL 需要访问。在9 位数据模式中,用8 位写指令操作时,要先写SCIDRH,后写SCIDRL。
展开阅读全文