📄 sci.c
字号:
// 功能描述:下面给出一个在两个DSP之间实现简单异步通信的通用程序
#include "register.h"
int songreceive[5] = {8,8,8,8,8};
//禁止总中断子程序
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=0x07; //1个停止位,不使能奇偶校验,空闲线多处理
/*
bit7 0 一个停止位
bit6 0 奇校验
bit5 0 禁止奇偶校验
bit4 0 选择自测试模式
bit3 0 选择空闲线多处理器模式
bit2~0 111 SCI字符长度选择8位
*/
SCICTL1=0x13; //使能接收和发送,SLEEP=0 禁止休眠方式
/*
bit7 0 reserved
bit6 0 RX ERR INT ENA;forbid receiving wrong interuppt
bit5 0 SW RESET;SCI software reset bit
bit4 1 reserved
bit3 0 TXWAKE;choice bit of wake SCI send
bit2 0 SLEEP bit; forbid sleep mode
bit1 1 TXENA;allow send
bit0 1 rxena;allow receive
*/
//禁止接收错误中断,TXWAKE=0 即没有选定的发送特征
SCICTL2=0x3; //使能接收和发送中断
/*
bit7 0 TXRDY;SCITXBUF full
bit6 0 tx empty;scitxbuf or txshf or both been loaded
bit5~2 0000 reserved;
bit1 1 rx/bk int ena;enable rxrdy/brkdt interrupt
bit0 1 tx int ena; enable txrdy interrupt
*/
SCIHBAUD=0x4;
SCILBAUD=0x10; //波特率=4800B/S
SCICTL1 |= 0x20; //00110011;使SCI脱离复位状态
SCIPRI=0x60; //00000000;SCI中断(接收和发送中断)为低优先级中断
MCRA=0x3;
MCRB &= 0XFFFE;
IMR=0x10; //使能UART中断-INT5
enable(); //使能总中断
SCITXBUF=20;
while(1) ;
}
void UartSent( ) //发送服务程序
{
int kk = 0;
const int max[5] = {66,77,88,99,11};
static int i=0;
if(i>5) return;
SCITXBUF=max[i++]; //依次发送定义的字符串中的各个字符
IFR |= 0x0010; //清除IFR中相应的中断标志
enable(); //开总中断,因为一进入中断服务程序总中断就自动关闭了
}
void UartRec() //接收服务程序
{
static int receive[5]={22,22,22,22,22},j=0;
receive[j++] = SCIRXBUF;//依次接收字符
songreceive[j-1] = receive[j-1];
if(j>9) return;
IFR |= 0x0010; //清除IFR中相应的中断标志
enable(); //开总中断,因为一进入中断服务程序总中断就自动关闭了
}
void interrupt uarttr( ) //中断服务程序
{
switch (PIVR) //根据中断向量寄存器PVIR的值区别是接收还是发送中断
{
//如果PIVR=6,则发生了接收中断,执行接收服务程序
case 7:UartSent( ); //如果PIVR=7,则发生了发送中断,执行发送服务程序
break;
case 6:UartRec( ); //如果PIVR=6,则发生了接收中断,执行接收服务程序
break;
default:break;
}
}
//当由于干扰而引起其它中断时,中断进入此程序直接返回主程序
void interrupt nothing()
{
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -