📄 rs232.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 + -