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

📄 rs232.c

📁 这段源码包括7279驱动
💻 C
字号:
#include	<rs232.h>
#use delay(clock=4000000,RESTART_WDT)
#fuses XT,WDT
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,stream=,bits=8)

void ini_rs232()
{
	TXSTA=0x00;
	RCSTA=0X90;
	SPBRG=0x06;
	
}

uchar	getchk(char x,char y,char z	)
{
	uchar t;
	t=x;
	t=t^y;
	t=t^z;
	return	t;
}


void	send_cmd(uchar fun)
{
	UCHAR i;
	tx_buffer[0]=0xF5;
	tx_buffer[frame_year]=0x06;//realtime.time.year;
	tx_buffer[frame_month]=0x11;//realtime.time.month;
	tx_buffer[frame_day]=0x30;//realtime.time.date;
	tx_buffer[frame_chk]=getchk(0x06,0x11,0x30);
	tx_buffer[6]=0x34;
	for(i=0;i<8;i++)
	{
	//	putc(tx_buffer[i]);
		TXREG=tx_buffer[i];
		delay_ms(10);
	}
}




/**************************************************************
* 函数原型:void serial_rx_isr(void)
* 功   能: 接收中断接收一串口数据,写入接收缓冲区
* 说   明:
 
****************************************************************/

#int_rda             				 //接收中断处理

void serial_rx_isr(void)

{
	uchar rx_byte;
	//rx_byte=getc();
	restart_wdt();
	rx_byte=RCREG;	
	if(rx_byte==0xF5)//一个帧头就行了,因为有效数据值不可能是F5,也部可能是0X34
		rx_counter=0;
	rx_buffer[rx_counter++]=rx_byte;
	if(rx_byte==0x34)
	{
		disable_interrupts(int_rda);//开着中断,tx_counter的值就不停在变
		disable_interrupts(int_TIMER1);//成功解密后重新显示时间
		disdata();
	}
}

void disdata()
{
	uchar mychk;
	mychk=getchk(rx_buffer[1],rx_buffer[2],rx_buffer[3]);
	if(rx_buffer[frame_chk]==mychk)
	{
			delay_ms(100);
			EEPROM_write_parameter(a_year,rx_buffer[frame_year]);
			EEPROM_write_parameter(a_month,rx_buffer[frame_month]);
			EEPROM_write_parameter(a_date,rx_buffer[frame_day]);
			get_endate(rx_buffer[frame_year],rx_buffer[frame_month],rx_buffer[frame_day]);
			//putc(0x77);//表示数据接受完毕,告诉解码器不必再申请发送数据
			enable_interrupts(int_TIMER1);//成功解密后重新显示时间
			TXREG=0X77;
			write7279(0x88,0xF0);
			restart_wdt();
			delay_ms(5000);
			write7279(0x88,0xFF);

	}
	else
	{
		enable_interrupts(int_rda);
	//	putc(0xAA);
		TXREG=0XAA;
	}
}

void EEPROM_write_parameter(UCHAR addr,uchar data)   
{
		write_eeprom(addr,data);
}

//读EEPROM
uchar EEPROM_read_parameter(UCHAR addr)                 
{
	uchar xx;
	xx=read_eeprom(addr);
    return xx;
}

⌨️ 快捷键说明

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