用户名: 密  码:
英达社区 / 加入收藏 / 设为首页
网站首页 | 学校简介 | 就业中心 | 软件测试 | 企业外包 | 单片机开发 | ARM开发 | DSP开发 | PLC开发 | 在线咨询 | 在线报名 | 联系我们
   高新:029-88259409,88278304   小寨:029-85399057, 85268103
您所在的位置:首页 >> 单片机、ARM、DSP >> 正文
一个基于DSP2407串行通信接口典型应用举例
http://www.yd-itedu.com/  添加日期:08-01-09 18:20:25  来源:    进入论坛

串行通信接口典型应用举例

     下面给出一个在两个DSP之间实现简单异步通信的通用程序。

//该程序实现2407的串口异步通信

#include "register.h"

//禁止总中断子程序      

void  inline  disable()

{

     asm(" setc INTM");

     asm(" setc SXM");

}

//使能总中断子程序

void     inline   enable()

{

asm(" clrc INTM");

}

main( )

{

     disable();                 //禁止所有中断

*IFR=0xFFFF;                // 清除中断标志  

*SCSR1=0x81FE;             //CLKIN= 6M,CLKOUT= 24M

*WDCR=0xE8;                 //不使能看门狗

*SCICCR=0x7;                     //1个停止位,不使能奇偶校验,空闲线多处理

//器模式,8位字符

*SCICTL1=0x13;             //#0013H 使能接收和发送,SLEEP=0 禁止休眠

//方式 , 禁止接收错误中断,TXWAKE=0 即没

//有选定的发送特征

*SCICTL2=0x3;              //使能接收和发送中断

*SCIHBAUD=0x2;

     *SCILBAUD=0x70;       //波特率=4800B/S

*SCICTL1=0x33;              //使SCI脱离复位状态

*SCIPRI=0x60;              //SCI中断(接收和发送中断)为低优先级中断

*MCRA=0x3;

     *PADATDIR=0x100;

     *IMR=0x10;                //使能UART中断-INT5

      enable();                     //使能总中断

     *SCITXBUF=' ';

      while(1)   ;

}

void   UartSent( )               //发送服务程序

{

     const  char*  var="F2407 UART is fine!";//定义一段需要发送的字符串

     static  int  i=0;

     if(i>strlen(var))  return; //如果需要发送的字符都已经发送完,则中断直接返回

     *SCITXBUF=var[i++];   //依次发送定义的字符串中的各个字符

     *IFR=0x0010;               //清除IFR中相应的中断标志

     enable();                  //开总中断,因为一进入中断服务程序总中断就自动关闭了

}  

void   UartRec()                 //接收服务程序

{                       

static  int  receive[10],j=0;

receive[j++] = *SCIRXBUF;//依次接收字符

if(j>9) j = 0;

*IFR= 0x0010;              //清除IFR中相应的中断标志

     enable();                  //开总中断,因为一进入中断服务程序总中断就自动关闭了

}

void  interrupt  uarttr( )           //中断服务程序

{

     switch (*PVIR)              //根据中断向量寄存器PVIR的值区别是接收还是发送中断

     {

case 6:UartRec( );   //如果PIVR=6,则发生了接收中断,执行接收服务程序

         case 7:UartSent( );  //如果PIVR=7,则发生了发送中断,执行发送服务程序

     }

}

//当由于干扰而引起其它中断时,中断进入此程序直接返回主程序

void  interrupt  nothing()

{

     return;

}

上一篇:
下一篇:
 
最新动态
就业明星 更多>>
技术文章
推荐论坛
英达概况 | 在线报名 | 在线咨询 | 联系我们
版权所有: 西安英达科技培训学校
电话:029-88259409 88278304 传真:88259409 E_mail:tukx@21cn.com
高新校区:西安市太白南路263号新一代国际公寓C座1508室(太白南路与科技路什字东南角)
小寨校区:西安市雁塔西路161号 世纪经典大厦A座1906室(小寨南纬二街什字东50米)