×
单片机 > 单片机程序设计 > 详情

外部中断、定时中断、串口中断C51程序

发布时间:2020-05-26 发布时间:
|

/********************************
 文件所用资源
1.外部中断0、1
  定时中断0、1
  串口中断
2.端口:P3.0,P3.1,P3.3,P3.4,P3.5
********************************/
sfr ISP_CONTR = 0xe7;
/*************************** 
 外部中断0服务子程序
****************************/
/*void Int0() interrupt 0
{   
}*/  
/***************************
 定时中断0服务子程序
****************************/
/*void timer0() interrupt 1
{   
}*/ 
/***************************
 外部中断1服务子程序
****************************/
/*void Int1() interrupt 2 
{   
}*/
/***************************
 自动ISP功能函数
***************************/
void isp_check(unsigned char tmp)
{
    static isp_counter=0;
 unsigned int i;
    unsigned char code isp_comm[16]=
 {0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef,0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef};
    if(tmp != isp_comm[isp_counter++]) 
 {
     isp_counter = 0;  
     return;
    }
    else if (isp_counter > 15) 
 {
        EA = 0;     
        for(i=0;i<5000;i++);
        ISP_CONTR = 0x60;  //软复位进入ISP下载模式   
    }   
}
/***************************
串口中断服务子程序
****************************/  
void serial () interrupt 4 

    if (RI) 
 {  
  RI = 0 ; 
        isp_check(SBUF);      
    }

/**************************
 串口发送一个字符 
**************************/
void com_send_dat(unsigned char dat) 

    SBUF=dat; 
 while (TI== 0); 
 TI= 0 ; 

/**************************
   串口初始化 
**************************/
void init_com( void ) 

 SCON=0x50 ;   //UART为模式1,8位数据,允许接收
    TMOD|=0x20 ;  //定时器1为模式2,8位自动重装
 TH1=0xfa ;     //波特率:19200 晶振="22.1184MHz" 
 TL1=0xfa;
 PCON|=0x80;  //SMOD=1;波特率加倍;   
   TR1 = 1 ;       //启动定时器1 
 ES=1;      //开串口中断

/**************************
   定时器0初始化 
**************************/
void init_timer0( void ) 

    TMOD|=0x02;  //定时器0为模式1,16位计数结构
 TH0=0xa0 ;      
 TL0=0xa0;
   //TR0=1;        //启动定时器0
 ET0=1;   //开定时中断0
}

关键字:外部中断  定时中断  串口中断  C51程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计