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

📄 原来.c

📁 2812的高质量代码
💻 C
字号:
/*************************************************************************/
/*2007年5月16日串口发送中断程序*/
/*************************************************************************/
#include "DSP2407A.h"
#include "mine20060907.h"   

typedef unsigned int uint;

unsigned int cn;            
unsigned int vc;            
unsigned char InterruptFlag;                                                  
unsigned char x;
unsigned char m;
unsigned char flg=0;

const char *tra="AAA"; 

void main()
{    
    int i,j;   
	ESXM;
	EOVM;
	ECNF;                              
	sys_init(); 
    //*SCICTL2=0x80;
    for(cn=0;cn<500;cn++){;}  
   while(1) 
    {  
       *SCICTL1|=0x02;
    }
   /*  {  
        while(*SCICTL2&0x80==0x80)
             {
                  { 
                   *SCITXBUF='9';
                   for(cn=0;cn<30000;cn++){;}  
                  }
               *SCICTL1|=0x03;    
             }
      
        }
      } 
     
   */        	
 
/*
   while(1)                         
    {                                  
        *PFDATDIR=0xFF00;
 	    for(cn=0;cn<32000;cn++){;}
        *PFDATDIR=0xFFFF;
        for(cn=0;cn<32000;cn++){;}   
    }
      */
// }
//使能总中断子程序
 //void NOPP() 
 // {
  //   asm(" NOP");
 // } 
 }
 
 enable() 
  {
     asm(" clrc INTM");
  } 
  

void   UartSent( )          	//发送服务程序
  {
  
       EINT;
       while(1)     
     {  
        while(*SCICTL2&0x80==0x80)
             {
                  { 
                   *SCITXBUF='9';
                   for(cn=0;cn<500;cn++){;}  
                  }
               *SCICTL1|=0x03;    
             }
      
        }
       
       
       enable();	//开总中断,因为一进入中断服务程序总中断就自动关闭了
    }  
  
    void UartRec( )         	//接收服务程序
  {      *SCITXBUF='A';                  
   // static int  receive[10],j=0;
   // receive[j++]=*SCIRXBUF;//依次接收字符 
   // if(j>9) j = 0;
    //static char  receive[1],j=0;
    
   // receive[1]=*SCIRXBUF;//依次接收字符 
   // m=receive[1];
   // if(j>9) j = 0;  
    // *IFR= 0x0010;		//清除IFR中相应的中断标志 
	 enable();				//开总中断,因为一进入中断服务程序总中断就自动关闭了
 }
 
 void  interrupt  uarttr( )    		//中断服务程序
  {  
	 switch (*PVIR)			//根据中断向量寄存器PVIR的值区别是接收还是发送中断
	{   
       case 6:UartRec( );break;	//如果PIVR=6,则发生了接收中断,执行接收服务程序
       case 7:UartSent( );break;   //如果PIVR=7,则发生了发送中断,执行发送服务程序
       
    } 
  }
               //当由于干扰而引起其它中断时,中断进入此程序直接返回主程序



void sys_init(void)
{    DINT;
	*WDCR=0x00E8;
    *SCSR1=0x81FE;      		
   	*MCRA=0x3;
	*PADATDIR=0x100;  
    *SCICTL1=0x03;  
    *SCICCR=0x07;         	//1个停止位,不使能奇偶校验,空闲线多处理器模式,8位字符
    //#0013H 使能接收和发送,SLEEP=0 禁止休眠
    //  *SCICTL1=0x13;                       //方式, 禁止接收错误中断,TXWAKE=0 即没
                            //有选定的发送特征
    //*SCIHBAUD=0x2;
    //*SCILBAUD=0x07;     	//波特率=9600B/S
    *SCIHBAUD=0x00;
    *SCILBAUD=0x2B;     	//波特率=115200B/S
    
    *SCIPRI=0x60;          	//SCI中断(接收和发送中断)为低优先级中断      
	*IMR=0x10;			    //使能UART中断-INT1
     *SCICTL2|=0x03;         	//使能接收和发送中断
     *SCICTL1=0x23;         //使SCI脱离复位状态
     enable();		     	//使能总中断
     *SCITXBUF=''; 
   
}
 
 void  interrupt  nothing() 
   {
    	return;
   }  

⌨️ 快捷键说明

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