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

📄 wdp999.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(void)
{    
    int i,j;   
    ESXM;
    EOVM;
    ECNF;                              
    sys_init(); 
    //*SCICTL2=0x80;
    for(cn=0; cn<500; cn++){;}  
    while(1) 
    {  
       *SCICTL1 |= 0x02;
    }
 }
 
enable() 
{ 
    asm(" clrc INTM");
} 
  

void UartSent( )          	//发送服务程序
{
    EINT;
    while(1)     
    {  
        while(*SCICTL2 & 0x80 == 0x80) //TXRDY==1 (SCITXBUF is empty)
        {
            *SCITXBUF = '9';
            for(cn=0; cn<500; cn++)
            {; ;}  
            *SCICTL1 |= 0x03; //enable TXENA and RXENA    
        }
    }
    enable();	//开总中断,因为一进入中断服务程序总中断就自动关闭了
}  
  
void UartRec( )                         //接收服务程序
{   
    *SCITXBUF = 'A';                  
    enable();                           //开总中断,因为一进入中断服务程序总中断就自动关闭了
}

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

void sys_init(void)
{  
    DINT;  //disable Interrupt (SETC INTM)
    *WDCR = 0x00E8;
    *SCSR1 = 0x81FE;      		
    *MCRA = 0x3; //0:SCITXD 1:SCIRXD
    *PADATDIR = 0x100;  //configue PA0(SCITXD) as output 0

    //config SCI
    *SCICTL1 = 0x03;    //TXENA(1) and RXENA(0) = 1
    *SCICCR = 0x07;         	//1个停止位,不使能奇偶校验,空闲线多处理器模式,8位字符
    //#0013H 使能接收和发送,SLEEP=0 禁止休眠
    //  *SCICTL1=0x13;                       //方式, 禁止接收错误中断,TXWAKE=0 即没
                            //有选定的发送特征
    *SCIHBAUD = 0x00;
    *SCILBAUD = 0x2B;     	//波特率=115200B/S    晶振40M吗

    *SCIPRI = 0x60;          	//SCI中断(接收和发送中断)为低优先级中断      
    *IMR = 0x10;			    //使能UART中断-INT5
    *SCICTL2 | =0x03; 	//使能接收和发送中断
    *SCICTL1 = 0x23;         //使SCI脱离复位状态 SW RESET=1 
    enable();              //使能总中断
    *SCITXBUF = ''; 
}
 
void interrupt nothing() 
{
    return;
}  

⌨️ 快捷键说明

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