⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sci.c

📁 dsp的
💻 C
字号:
#include	"2407c.h"

//禁止总中断子程序
void disable() 
{
	asm(" setc	INTM");
	asm(" setc	SXM");
}

//使能总中断子程序
void enable() 
{
	asm(" clrc	INTM");
}

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 (*PIVR)			//根据中断向量寄存器PVIR的值区别是接收还是发送中断
	{
		case 6:UartRec();	//如果PIVR=6,则发生了接收中断,执行接收服务程序
		case 7:UartSent();	//如果PIVR=7,则发生了发送中断,执行发送服务程序
	}
}
//当由于干扰而引起其它中断时,中断进入此程序直接返回主程序
void interrupt nothing()
{
	return;
}

void main(void) 
{
	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);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -