//该程序实现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;}
导读:目前正在解读《2407串行通信接口典型应用举例》的相关信息,《2407串行通信接口典型应用举例》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《2407串行通信接口典型应用举例》的详细说明。
简介:本文给出一个在两个DSP之间实现简单异步通信的通用程序。
提醒:《2407串行通信接口典型应用举例》最后刷新时间 2024-03-14 01:02:29,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《2407串行通信接口典型应用举例》该内容的真实性请自行鉴别。