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

📄 text1.c

📁  单片机和PC的串口通讯源码(PC上用VB编写了一个简单的通讯程序
💻 C
字号:
#include <reg52.h>
#include <string.h>


code unsigned char CodeLed[16]={
	0x3f,	//'0'的7段编码
	0x06,   //'1'的7段编码	
	0x5b,   //'2'的7段编码	
	0x4f,   //'3'的7段编码	
	0x66,   //'4'的7段编码	
	0x6d,   //'5'的7段编码	
	0x7d,   //'6'的7段编码	
	0x07,   //'7'的7段编码	
	0x7f,   //'8'的7段编码	
	0x6f,    //'9'的7段编码
	0x77,
	0x7c,
	0x39,
	0x5e,
	0x79,
	0x71
};
    sbit k0=P2^0;
	sbit k1=P2^1;
	sbit k2=P2^2;
	sbit k3=P2^3;
    sbit k4=P3^4;


//串口发送程序;
#define INBUF_LEN 4   //file://数据长度
unsigned char inbuf='a';
unsigned char inbuf2[4];
unsigned char checksum,m=0,count3=0;
bit           read_flag=0;


    void delay(void)
  {   
    unsigned int i, j;
    for( i=0; i<10; i++ ) for( j=0; j<10; j++ );
  }



/*void show2()
{
	P0=(CodeLed[inbuf2[0]/10]);
	k0=0;
	delay();
	k0=1;
	P0=(CodeLed[inbuf2[0]%10])|0x80;
	k1=0;
	delay();
	k1=1;
	P0=CodeLed[inbuf2[1]/10];
	k2=0;
	delay();
	k2=1;
	P0=CodeLed[inbuf2[1]%10];
	k3=0;
	delay();
	k3=1;
}*/
void show()
{
	unsigned int i, j;
    unsigned char seg;
    seg = 0xfe;
   
	

	{
	    
	    //P2 = 0xff;		//全部LED都不亮,消隐
		//P0 = CodeLed[ inbuf2[ count3]-48];//将K数值通过影射方式变为7段编码后驱动LED段极
		for (count3=0;count3<4;count3++)
      {	P2 = 0xff;		//全部LED都不亮,消隐
		P0 = CodeLed[inbuf2[ count3]-48];	//将K数值通过影射方式变为7段编码后驱动LED段极
		P2 = seg;		//让相应的LED显示
		for( i=0; i<20; i++ ) for( j=0; j<20; j++ ); //延时一段时间,以便能看到相应数码管显示
		seg <<= 1;		//准备下支LED显示
		seg |= 0x01;
        if(count3==4)count3=0;
        if(seg==0xef) seg=0xfe;
	  }	
	
	}
	

}

//数码管显示程序完;
//数码管显示子程序;
void show1(unsigned char reshu )
{
	unsigned int t, l;

   // for (k=0;k<=10;k++)
	

	{
		//P2 = 0xff;		//全部LED都不亮,消隐
		P0 = CodeLed[ reshu ];//将K数值通过影射方式变为7段编码后驱动LED段极
		k0=0;
		for( t=0; t<250; t++ ) for( l=0; l<250; l++ );
	    k0=1;
		//延时一段时间,以便能看到相应数码管显示
	}
	

}

//数码管显示程序完;


void init_serialcomm(void)
{
    EA=0;
    SCON  = 0x50;       //file://SCON: serail mode 1, 8-bit UART, enable ucvr 
    TMOD |= 0x20;       //file://TMOD: timer 1, mode 2, 8-bit reload 
    PCON |= 0x80;       //file://SMOD=1; 
    TH1   = 0xFA;       //file://Baud:4800  fosc=11.0592MHz 
    IE   |= 0x90;       //file://Enable Serial Interrupt 
    TR1   = 1; 
    EA=1;
	// timer 1 run 
   // TI=1; 
}



//file://向串口发送一个字符 
void send_char_com(unsigned char ch)  
{
    SBUF=ch;
    while(TI==0);
    TI=0;
}

//串口发送程序完;
//串口接收程序;
 

  void serial () interrupt 4 using 3 
{
   // unsigned char ch;
    RI=0;
	inbuf2[m]=SBUF;
	 m+=1;
    if(m==4)m=0;
   
   
}


  

//串口接收程序完;
//中断程序
   void startt0()
{
    IT0=1;
    EX0=1;
     EA=1;
}
  void startt1()
{
    IT1=1;
    EX1=1;
     EA=1;
}


void service0() interrupt 2
{   
       send_char_com(inbuf);
       if(++inbuf=='z')
         inbuf='a';    
}   


  
   void service1() interrupt 0
{   
        
             send_char_com(inbuf);
                
    
    
}   
//中断程序
   void main(void)
 { 
     unsigned char j,i=0;
   
     for(j=0;j<=10;j++)
   {
     init_serialcomm(); 
     send_char_com(inbuf);
     show1(10+i);
 
     i+=1;
     if(i>=4) i=0;
     delay();  
 	 
   }
	TI=0;

    startt0();
    startt1();
   
   while(1)show();
  
   
 }
     
  
 

⌨️ 快捷键说明

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