📄 computer2.c
字号:
Rs232_Rece_Error = True;
g_cReceNum = 0;
}
Start_Rxd = False;
}
else
{
if ((Rs_buf[1]>Rs232_Input_LEN)||(g_cReceNum>Rs232_Input_LEN-1))
{
g_cReceNum = 0;
Rs232_Rece_Error = True;
Start_Rxd = False;
}
}
}
else
{
if (Rece_data == Rx_start_data)
{
Start_Rxd = True;
g_cReceNum = 0;
Rs_buf[0] = Rece_data;
}
}
MCU_LED2 = True;
ES = True;
EA = True;
}
/*************接收固定长度****************/
/*void RS232(void) interrupt 4
{
unsigned char Rece_data = SBUF;
uchar i;
uchar verify = 0;
EA = False;
ES = False;
MCU_LED2 = False;
count = 0;
RI = 0;
if (Start_Rxd)
{
g_cReceNum ++;
if ((g_cReceNum<Rs232_Input_LEN) && (g_cReceNum>1)) {
Rs_buf[g_cReceNum-1] = Rece_data;
}
else
{
if (g_cReceNum == Rs232_Input_LEN)
{
Rs_buf[g_cReceNum-1]= Rece_data;
for (i=0;i<Rs232_Input_LEN-1;i++)
{
verify^=Rs_buf[i];
}
if (verify == Rs_buf[g_cReceNum-1])
{
Rs232_Flag = True;
g_cReceNum = 0;
}
else
{
Rs232_Rece_Error = True;
g_cReceNum = 0;
}
}
else g_cReceNum = 0;
Start_Rxd = False;
}
}
else
{
if (Rece_data == Rx_start_data)
{
Start_Rxd = True;
g_cReceNum = 1;
Rs_buf[0] = Rece_data;
}
}
MCU_LED2 = True;
ES = True;
EA = True;
}
/********************************************/
/****接收以一定的数据为结束标志的不定接收****/
/********************************************/
void RS232(void) interrupt 4
{
unsigned char Rece_data = SBUF;
uchar verify = 0;
EA = False;
ES = False;
MCU_LED2 = False;
count = 0;
RI = 0;
if (Start_Rxd)
{
g_cReceNum ++;
if ((g_cReceNum < Rs232_Input_LEN) && (Rece_data == 0xff)) {
Rs_buf[g_cReceNum-1] = Rece_data;
Start_Rxd = False;
Rs232_Flag = True;
g_cReceNum = 0;
goto Rs232_end ;
}
if (g_cReceNum<Rs232_Input_LEN) {
Rs_buf[g_cReceNum-1] = Rece_data;
}
else
{
g_cReceNum = 0;
Rs232_Rece_Error = True;
Start_Rxd = False;
}
}
else
{
if (Rece_data == Rx_start_data)
{
Start_Rxd = True;
g_cReceNum = 1;
Rs_buf[0] = Rece_data;
}
}
Rs232_end:
MCU_LED2 = True;
ES = True;
EA = True;
}
/****************************************/
/*************向计算机发数据*************/
/****************************************/
uchar TXD_pc(uchar icode)
{
//uchar count1; /* 接收等待时间 */
//uchar i;
//RS485 = False;
EA = 0;
ES = 0;
SBUF = icode;
while (!TI);
TI = 0; /* 发数据请求 */
//RS485 = True;
EA = True;
ES = True;
return(0);
}
/****************************DS1302***********************************/
void Close_write_bit(void)
{
char i;
EA = False;
Ds1302_clock = False;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
AD = 0x8e; //write control redister
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_(); _nop_();_nop_();_nop_();Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();
}
AD = 0x80; //close write protect bit
Ds1302_data = False;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
Ds1302_rst = False;
EA = True;
}
void Open_write_bit(void)
{
char i;
EA = False;
Ds1302_clock = False;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
AD = 0x8e; //write control redister
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_(); _nop_();_nop_();_nop_();Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
AD = 0x00; //close write protect bit
Ds1302_data = False;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
EA = True;
}
void Init_ds1302(void)
{
char i;
EA = False;
Ds1302_clock = False;
_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();
AD = 0x8e; //write control redister
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
AD = 0x00; //OPEN control redister
Ds1302_data = False;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
Ds1302_rst = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_clock = False;
Ds1302_clock = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True;
_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
AD = 0x90; //recharge register
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
AD = 0xa5;
AD = 0xa5;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Ds1302_clock = True;
AD = AD >> 1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
Ds1302_rst = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_clock = False;
Ds1302_clock = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True; _nop_(); _nop_();
AD = 0x80; //Start Work count
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
AD = 0x00;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
Ds1302_rst = False;_nop_();_nop_();
Ds1302_clock = False;_nop_();
EA = True;
}
void Read_ds1302()
{
uchar i,j;
EA = False;
Ds1302_rst = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_clock = False;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
AD = 0xbf;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); Ds1302_clock = True;
AD = AD >> 1;_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();
}
for (j=0; j<7; j++) {
for (i=1; i<=8; i++) {
AD = AD >> 1;
Ds1302_clock = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
AD_7 = Ds1302_data; Ds1302_clock = True;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
//i = AD/16;
//k = i * 6;
//AD = AD - k;
M_D[j] = AD;
}
Ds1302_rst = False; delay_2();
Ds1302_clock = False; delay_2();
EA = True;
}
void Write_ds1302(uchar address,uchar numb)
{
uchar i;
EA = False;
Ds1302_rst = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_clock = False;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = False; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
Ds1302_rst = True; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
AD = 0x80 | (address<<1);
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
delay_2(); Ds1302_clock = True;
AD = AD >> 1;delay_2();
}
AD = numb;
for (i=1; i<=8; i++) {
Ds1302_clock = False; Ds1302_data = AD_0;
delay_2(); Ds1302_clock = True;
AD = AD >> 1;delay_2();
}
Ds1302_rst = False;
Ds1302_clock = True;
EA = True;
delay(1);
}
/*******************************************************/
void delay(uint count0)
{
uchar i;
while ( (count0--) )
{
for (i=0;i<125;i++) {};
}
}
void delay_2()
{
uint i;
for (i=0; i<128; i++)
{
_nop_();
}
}
void delay_3(uchar count0)
{
uchar i;
while ( count0-- )
{
for (i=0;i<125;i++) {};
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -