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

📄 接受数据.c

📁 单片机串口通信程序可以与单片机
💻 C
字号:
//*******************************************************************************************//
//  程序名:接受数据.c
//    功能:串口接受一个1到8的字符,产生中断,从P1口输出控制8个小灯。
//调用函数:void  shuc(char d); void  delayms(unsigned char ms);
//    输入:用串口调试程序,从键盘输入1到8的其中一个。
//    输出:从P1口输出控制信号。
//  设计者:于宇宙     日期:2007年 7 月 3 日
//  修改者:           日期:    年   月   日
//    版本:
//********************************************************************************************//


#include <reg52.h>
#include <absacc.h>

void shuc(char d);             //字符输出函数
void delayms(unsigned char ms);//延时函数

sbit	k0= P1^0;
sbit	k1= P1^1;
sbit	k2= P1^2;
sbit	k3= P1^3;
sbit	k4= P1^4;
sbit	k5= P1^5;
sbit	k6= P1^6;
sbit	k7= P1^7;

//char a[]="Hao deng liang \n";
char r=0,j=0,c=0;
//-----------------------------------------------------------------------------------------------------



main()
{
    
//-----------------------------------------------------------------------------------------------------	
    IE=0x00;            //中断控制设计
    EA=1;               //中断全部打开
	ES=1;               //串口中断打开
    
    TMOD = 0x20;	    // 定时器1工作于8位自动重载模式, 用于产生波特率
	TH1 = 0xFD;	        // 波特率9600
	TL1 = 0xFD;
	
	SCON = 0x50;	    // 设定串行口工作方式
	PCON &= 0xef;	    // 波特率不倍增
		
	TR1 = 1;	        // 启动定时器1	              
    
	RI = 0;             //允许接受字符
    TI = 0;
	P1=0;
	P2=0x00;
	
					  
//------------------------------------------------------------------------------------------------------
	
	while(1)
	{
	    delayms(1);
		  if(r=='1') {P1=0;k0=1;shuc(r);P2=0x80;P0=0x06;r=0;}   
  		  if(r=='2') {P1=0;k1=1;shuc(r);P2=0x40;P0=0x5b;r=0;} 
		  if(r=='3') {P1=0;k2=1;shuc(r);P2=0x20;P0=0x4f;r=0;}
		  if(r=='4') {P1=0;k3=1;shuc(r);P2=0x10;P0=0x66;r=0;}
		  if(r=='5') {P1=0;k4=1;shuc(r);P2=0x80;P0=0x6d;r=0;}
		  if(r=='6') {P1=0;k5=1;shuc(r);P2=0x40;P0=0x7d;r=0;}
		  if(r=='7') {P1=0;k6=1;shuc(r);P2=0x20;P0=0x07;r=0;}
		  if(r=='8') {P1=0;k7=1;shuc(r);P2=0x10;P0=0x7f;r=0;}
          if(r=='z') {P1=0;shuc(r);P2=0xff;P0=0x00;r=0;}
		delayms(1);	  
					
           			
	                    						
	}//end while
}//end main 


//-----------------------------------------------------------------------------------------------------
//***********************************************************************************************//
//  函数名:intersvr0(void)
//    功能:串口中断处理程序。
//调用函数:
//输入参数:r,RI.
//输出参数:
//    说明:
//************************************************************************************************//
void intersvr0(void) interrupt 4 using 1//串口中断服务函数
{
           if(RI)                       //接受中断
		     {
               RI = 0;
			   r = SBUF;                // 暂存接收到的数据	 
		      }
			
	 	   if(TI)                     //发送中断		        
		      {
		        TI = 0;                         					     
              }			
		  	
}

//----------------------------------------------------------------------------------------------
//***********************************************************************************************//
//  函数名:shuc(char d)
//    功能:从串口输出控制的说明。
//调用函数:
//输入参数:d,j.
//输出参数:
//    说明:
//************************************************************************************************//
void shuc(char d)
{

       SBUF =d;
	  // while(!TI);				
	  // TI = 0;
	  // j=0;
     //while(j<=15)
//	{

	//   if(a[j] != '\0')
     //    {   
	//	     SBUF = a[j];
	//	     while(!TI);				
	//	     TI = 0;
     //    }

       // j++;
	}


//}
//-----------------------------------------------------------------------------------------------------
//***********************************************************************************************//
//  函数名:delayms(unsigned char ms)
//    功能:延时1毫秒函数。
//调用函数:
//输入参数:ms.
//输出参数:
//    说明:
//************************************************************************************************//

void delayms(unsigned char ms)	// 延时子程序
{						
	unsigned char i;
	while(ms--)
	{
		for(i = 0; i < 120; i++);
	}
} 

⌨️ 快捷键说明

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