mc9s12xs128中uart一款单片机里头有许多的资源模块即片内外设在学习这些_第1页
mc9s12xs128中uart一款单片机里头有许多的资源模块即片内外设在学习这些_第2页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MC9S12XS128 中 UART(串口)的使用写面的话-:一款单片机里头有许多的资源模块(即片内外设),在学习这些资源模块的时候一般都是先学习它的 GPIO 的使用。那么接下来最好就先学习里头的UART(串口) 模块,这样在编程调试的时候就可以将调试信息打印出来,方便我们的调试。在 MC9S12XS128 这款单片机中 有两个串口,对应的 Pin 为 PS0/RXD0 、PS1/TXD1 、PS2/RXD2、PS3/TXD2。具体可参考 datasheet 中的 Chapter 15(435页)Serial Peripheralerface (S12SPIV5)。/*以下为代码实现*/#i

2、nclude #include /* common defines/* derivative mc9s12xs128and macros */information*/#pragma #define #define/*LINK_INFO DERIVATIVEucharunsigned charuunsigned函数原型*/void void voidSCI_Init(void);SCI_Phar(char ch);SCI_Putstr(char *str);uchar SCI_getchar(void);void void void void/*Put_Uchar(uchar ch);Put_

3、U(uch);SetBusCLK_40M(void);DE_40M_ms(ms);*/*-主函数串口向电脑的串口调试助手发送信息*/void main(void)byte i = 0;Disableerrupts;SetBusCLK_40M(); SCI_Init();for(i=0;i8;i+)SCI_Putstr(This is a UART test !); SCI_Putstr(n);SCI_Putstr(这是一个串口测试程序);户的串口调试助手是否支持中文,/发送中文时要注意用/如果不能的话,发送的中文则以空字符显示,即空白。SCI_Putstr(n);while(1);/让程序停在

4、这里/*串口初始化*/void SCI_Init(void)SCI0CR1 =0 x00; SCI0CR2=0 x2c;enable P408/P409/enable Receive Fullerrupt,RX enable,Tx/SCI控制寄存器2,SCI主要功能控制SCI0BD=0 x104;/9600/SCI0BDH=0 x00;/如果只对SCI0BDH 赋值,读操作不能返回正确的值,除非先写 SCI0BDH 然后写 SCI0BDL/SCI0BDL=0 x68;中的内容/SCIBAUD=busclk/(16*BR),BR 为SCI 波特率寄存器/SCI0BDL=busclk/(16*BA

5、UD)/busclk8MHz, 9600bps,SCI0BD=0 x34/busclk 16MHz, 9600bps,SCI0BD=0 x68/busclk 24MHz, 9600bps,SCI0BD=0 x9C/busclk 32MHz, 9600bps,SCI0BD=0 xD0/busclk 40MHz,9600bps,SCI0BD=0 x104/busclk 40MHz, 38400bps,SCI0BD=0 x41/busclk 64MHz, 9600bps,SCI0BD=0 x1a0/*/发送一个字符*/voidSCI_Phar(char ch)while(!(SCI0SR1&0X80

6、); while(!(SCI0SR1&0X40);/检查发送寄存器空标志 TDRE/检查发送完成标志 TC/=0正在发送 =1没有发送SCI0DRL=ch;/*发送字符串*/uart_putstr(个void )SCI_Putstr(char *str) /可直接发送中文,比如for(;*str!=0;str+)SCI_Phar(*str);/*接收一个字符*/byte SCI_getchar(void)while(!SCI0SR1_RDRF);/RDRF接收数据寄存器满标志/当接收移位寄存器中的数据发动到 SCI 数据寄存器中时,RDRF 置位。/当RDRF=1 时,通过读 SCISR1 然

7、后读 SCIDRL 来清 TDRE./RDRF=0,SCI数据寄存器中的数据不可用。RDRF=1,SCI 数据寄存器中的数据可用。return(SCI0DRL);/*发送数字*/void Put_Uchar(uchar ch)/最大值为 255SCI_Phar(ch/100)+0 x30);/0 对应的ASCII 码值为0 x301 对应的 ASCII 码值为 0 x31,之后以此类推SCI_P SCI_Phar(ch%100/10)+0 x30); har(ch%100%10)+0 x30);/*发送数字*/void Put_USCI_P SCI_P(uch)/最大值为 65535har(c

8、h/10000)+0 x30);har(ch%10000)/1000)+0 x30);SCI_Phar(ch%10000)%1000)/100)+0 x30);SCI_P SCI_Phar(ch%10000)%1000)%100)/10)+0 x30); har(ch%10000)%1000)%100)%10)+0 x30);/*配置系统时钟*/void SetBusCLK_40M(void)CLKSEL=0X00; PLLCTL_PLLON=1; SYNR =0 xc0 | 0 x04; REFDV=0 xc0 | 0 x01;TDIV=0 x00;Hz;_asm(nop);/disengage PLL to system/turn on PLL/pllclock=2*osc*(1+SYNR)/(1+REFDV)=80M/BUS CLOCK=40M_asm(nop);while(!(CRG_LOCK=1); CLKSEL_PLLSEL =1;/when pll is steady ,then use it;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论