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

📄 usart.h~

📁 这是一个用AVRM16控制HTM68131,可以跟据这个例子自已做液晶.
💻 H~
字号:
#ifndef __USART_H__
#define __USART_H__
#include "MEGA16.h"  
#include "INIT.h"  
#include "EEPROM.h"   
#define UDRE 5 
 
#define R_485   PORTD= PORTD&0XDF     
#define W_485   PORTD= PORTD|0X20  

//发送函数
void send_data(unsigned char back)
{ 	uint	a; 
	while( !( UCSRA & (1<<UDRE)) ) ;
	UDR=back;
	for(a=0;a<500;a++); 
}  
//反回数据
void	  return_data(uchar e,uchar f,uchar g,uchar h,uchar i,uchar j,uchar k,uchar L,uchar m,uchar n,uchar q)
{      	
          W_485;//485发送 
          send_data(e);
          send_data(f);
          send_data(g);
          send_data(h);
          send_data(i);                                                             
	  send_data(j);
	  send_data(k);  
	  send_data(L);  
	  send_data(m);  
	  send_data(n);	
	  send_data(q);  
          R_485;//485接收  	
}  
//反回指令
void	  return_com(uchar i,uchar j,uchar k)
{      	
          W_485;//485发送 
          send_data(i);  
	  send_data(j);
	  send_data(k);   
          R_485;//485接收  	
}
//串口数据处理
void    suart_disposal(void)
{       uchar   i,or;      
 	        if(b_com==1)
 		{	   
 		        or=sbuf_data[2]^sbuf_data[3]^sbuf_data[4]^sbuf_data[5]^sbuf_data[6]^sbuf_data[7]^sbuf_data[8];
 			if((sbuf_data[0]==0x24)&&(sbuf_data[1]==0xdb)&&(sbuf_data[2]==0x0e)&&(sbuf_data[3]==0x02))
			{	//接收到温度设置  
				         			        
			}			
			if((sbuf_data[0]==0x24)&&(sbuf_data[1]==0xdb)&&(sbuf_data[2]==0x05))
			{//写地址  	
 
			        return_com(0x06,addr,0xf9); 	
			}	
			if((sbuf_data[0]==0x24)&&(sbuf_data[1]==0xdb)&&(sbuf_data[2]==0x07))
			{//写机型
			        return_com(0x08,addr,0xf7);	
			}		
			if((sbuf_data[0]==0x25)&&((sbuf_data[1]==addr)||(sbuf_data[1]==0x00))&&(sbuf_data[2]==0xda))
			{//暂停         
			                
			                b_run=0;		
			}
			if((sbuf_data[0]==0x26)&&((sbuf_data[1]==addr)||(sbuf_data[1]==0x00))&&(sbuf_data[2]==0xd9))
			{//停止       	
			                
			                b_run=0;			               				         				

			}
		   	if((sbuf_data[3]==0x01)&&(sbuf_data[4]==0x0D)&&(sbuf_data[9]==or))
		   	{//接收转速值  
		   	          return_com(0x06,addr,0xf9);
                                if((sbuf_data[2]==0x03)&&(mode==2))//温度值
                                {
                                        temperature_data=sbuf_data[7]*256+sbuf_data[8];
                                        mode_reg=mode+1;                                         
                                }
                                if((sbuf_data[2]==0x04)&&(mode==2))//转速值
                                {       
                                        rpm_data=sbuf_data[7]*256+sbuf_data[8];
                                        mode_reg=mode+1;                                
                                }
                                		   					   
		   	}   
	                for(i=0;i<20;i++)
 		                sbuf_data[i]=0x00;		   	
			b_com=0;
		}  
	//   	#asm("wdr"); 
            
}
#endif

⌨️ 快捷键说明

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