?? sci.c
字號(hào):
// 功能描述:下面給出一個(gè)在兩個(gè)DSP之間實(shí)現(xiàn)簡(jiǎn)單異步通信的通用程序
#include "register.h"
//禁止總中斷子程序
void inline disable()
{
asm(" setc INTM");
asm(" setc SXM");
}
//使能總中斷子程序
void inline enable()
{
asm(" clrc INTM");
}
main( )
{
disable(); //禁止所有中斷
IFR=0xFFFF; // 清除中斷標(biāo)志
SCSR1=0x81FE; //CLKIN=6M,CLKOUT=24M
WDCR=0xE8; //不使能看門狗
SCICCR=0x7; //1個(gè)停止位,不使能奇偶校驗(yàn),空閑線多處理
//器模式,8位字符
SCICTL1=0x13; //使能接收和發(fā)送,SLEEP=0 禁止休眠方式
//禁止接收錯(cuò)誤中斷,TXWAKE=0 即沒有選定的發(fā)送特征
SCICTL2=0x3; //使能接收和發(fā)送中斷
SCIHBAUD=0x2;
SCILBAUD=0x70; //波特率=4800B/S
SCICTL1=0x33; //使SCI脫離復(fù)位狀態(tài)
SCIPRI=0x60; //SCI中斷(接收和發(fā)送中斷)為低優(yōu)先級(jí)中斷
MCRA=0x3;
PADATDIR=0x100;
IMR=0x10; //使能UART中斷-INT5
enable(); //使能總中斷
SCITXBUF=' ';
while(1) ;
}
void UartSent( ) //發(fā)送服務(wù)程序
{
const char* var="F2407 UART is fine!";//定義一段需要發(fā)送的字符串
static int i=0;
if(i>strlen(var)) return; //如果需要發(fā)送的字符都已經(jīng)發(fā)送完,則中斷直接返回
SCITXBUF=var[i++]; //依次發(fā)送定義的字符串中的各個(gè)字符
IFR=0x0010; //清除IFR中相應(yīng)的中斷標(biāo)志
enable(); //開總中斷,因?yàn)橐贿M(jìn)入中斷服務(wù)程序總中斷就自動(dòng)關(guān)閉了
}
void UartRec() //接收服務(wù)程序
{
static int receive[10],j=0;
receive[j++] = SCIRXBUF; //依次接收字符
if(j>9) j = 0;
IFR= 0x0010; //清除IFR中相應(yīng)的中斷標(biāo)志
enable(); //開總中斷,因?yàn)橐贿M(jìn)入中斷服務(wù)程序總中斷就自動(dòng)關(guān)閉了
}
void interrupt uarttr( ) //中斷服務(wù)程序
{
switch (PIVR) //根據(jù)中斷向量寄存器PVIR的值區(qū)別是接收還是發(fā)送中斷
{
case 6:UartRec( ); //如果PIVR=6,則發(fā)生了接收中斷,執(zhí)行接收服務(wù)程序
case 7:UartSent( ); //如果PIVR=7,則發(fā)生了發(fā)送中斷,執(zhí)行發(fā)送服務(wù)程序
}
}
//當(dāng)由于干擾而引起其它中斷時(shí),中斷進(jìn)入此程序直接返回主程序
void interrupt nothing()
{
return;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -