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

📄 uart.c.bak

📁 ADUC834串口通讯C代码
💻 BAK
字号:
#include<ADI/ADuC834.h>    //sfr定义用头文件

 // Delay routine           //延时用子程序
//unsigned char data[]={08FE,10F9,0795,09CA};

#define uchar unsigned char
#define uint unsigned int

sbit rs=P2^3;    //1602的数据/指令选择控制线 
sbit rw=P2^4;        //1602的读写控制线 
sbit en=P2^5;        //1602的使能控制线 

unsigned char DIAC[]="0xAC";
unsigned char DIBC[]="0xBC";
unsigned char DICC[]="0xCC";
unsigned char EICC[]="sbuf=0x02";
unsigned char g_data=0;
unsigned char tcount;
void delay(int a)
 {
 int length;
 for(;a>0;a--)
  {
  length=10000;
  while (length >=0)
      length--;
  }
 }
void lcd_wcom(uchar com)  //1602写命令函数                 
{ 
    rs=0;            //选择指令寄存器 
    rw=0;            //选择写 
    P0=com;            //把命令字送入P2 
    delay(5);            //延时一小会儿,让1602准备接收数据 
    en=1;           //使能线电平变化,命令送入1602的8位数据口 
    en=0; 
} 
void lcd_wdat(uchar dat)        //1602写数据函数       
{ 
    rs=1;        //选择数据寄存器 
    rw=0;        //选择写 
    P0=dat;        //把要显示的数据送入P2 
    delay(5);        //延时一小会儿,让1602准备接收数据 
    en=1;        //使能线电平变化,数据送入1602的8位数据口 
    en=0; 
} 
void lcd_init()              //1602初始化函数       
{ 
    lcd_wcom(0x38);       //8位数据,双列,5*7字形       
    lcd_wcom(0x0F);      //开启显示屏,关光标,光标不闪烁 
    lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 
    lcd_wcom(0x01);    //清屏 
} 
void uart_int() interrupt 4 
{
	unsigned char i;
	if(SBUF&0x32==0x32)
	{
		lcd_wcom(0x80);
  	//lcd_wdat('L');
  	for(i=0;i<10;i++)
  	{
  	 lcd_wdat(EICC[i]);
  	}
  	g_data|=SBUF;
	}
	switch(SBUF)
	{
		case 0x32:
			lcd_wcom(0x80+0x40);
  		//lcd_wdat('L');
  		for(i=0;i<5;i++)
  		{
  		 lcd_wdat(DIAC[i]);
  		}  
  		//curkey=0;
  		break;
  	case 0x33:
			lcd_wcom(0x80+0x40);
  		//lcd_wdat('L');
  		for(i=0;i<5;i++)
  		{
  		 lcd_wdat(DIBC[i]);
  		}  
  		//curkey=0;
  		break;
  	default : 
  		lcd_wcom(0x80);
  		//lcd_wdat('L');
  		for(i=0;i<5;i++)
  		{
  		 lcd_wdat(DICC[i]);
  		}  
  		break;
	}
	RI=0;
}
void main(void)
{  
	uchar i; 
//	ES=1;
//	EA=1;
	lcd_init();
  PLLCON=PLLCON&0xF8;    //CPU主频为12.58MHZ
  SCON=SCON|0x50;    //UART WORK IN MODE 1

  RCAP2H=-1;
  RCAP2L=-41;     //使用定时器T2,产生9600的波特率,数据手册上有 
  
  T2CON=T2CON|0x30;    //设定定    时器T2的工作方式
  TR2=1;      //开启定时器T2
  for(;;)
  {
    //g_data=SBUF;    //将要发送到串口的数据送入缓冲 
    for(;;)
    {
      if(SCON&0x01==0x01) //是否发送完毕
      {
        RI=0;   //关串口接收中断
        lcd_wcom(0x80+0x40);
  		  //lcd_wdat('L');
  		  for(i=0;i<5;i++)
  		  {
  		   lcd_wdat(DIBC[i]);
  		  } 
  		  if(SBUF)//==0x32)
  		  {
  		  	lcd_wcom(0x80);
  		    //lcd_wdat('L');
  		    for(i=0;i<5;i++)
  		    {
  		      lcd_wdat(DIBC[i]);
  		    }
  		  }
    	}
      break;   //退出查寻
    }
    delay(2);   //延时
  }
//  for(;;)
//  {
//    SBUF=0x32;    //将要发送到串口的数据送入缓冲 
//    for(;;)
//    {
//      if(SCON&0x02==0x02) //是否发送完毕
//      TI=0;   //关串口接收中断
//      break;   //退出查寻
//    }
//    delay(2);   //延时
//  }
}

⌨️ 快捷键说明

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