📄 init.c
字号:
#include "sm89516a.h"
#include "common.h"
#include "i2c.h"
#include "io.h"
#include "process.h"
#include "recframe.h"
/*********************************************************************
* 函 数 名: Init
* 功能描述: 串口初始化
* 函数说明: 定时器1产生通信波特率2400
* 调用函数: 无
* 全局变量:无
* 输 入: 无
* 返 回: 无
* 设 计 者:zy
***********************************************************************/
void sum_init(void)
{
uchar radd_end;
uchar wport_end;
uchar port_init;
uchar freezetime_end;
// uchar i;
// for(i=0;i<96;i++)
// FreezeData[i]=0;
R_block(WPAGE0,RPAGE0,i2c_time_flag,&freezetime_end,1);
if(freezetime_end)
R_block(WPAGE0,RPAGE0,i2c_time_freeze,FreezeData,96);
else
R_block(WPAGE1,RPAGE1,i2c_time_freeze,FreezeData,96);
R_block(WPAGE0,RPAGE0,i2c_addr_addflag,&radd_end,1);
if(radd_end)
R_block(WPAGE0,RPAGE0,i2c_addr_data,&sum[0][0],96);
else
R_block(WPAGE1,RPAGE1,i2c_addr_data,&sum[0][0],96);
R_block(WPAGE0,RPAGE0,i2c_addr_portflag,&wport_end,1);
if(wport_end)
R_block(WPAGE0,RPAGE0,i2c_addr_io,bwary,2);
else
R_block(WPAGE1,RPAGE1,i2c_addr_io,bwary,2);
R_block(WPAGE0,RPAGE0,i2c_port_initflag,&port_init,1);
if(port_init==0xff)
{
port_init=0;
W_block(WPAGE0,i2c_port_initflag,&port_init,1);
bwary[0]=0xff;
bwary[1]=0xff;
}
}
void Init()
{
P0=0;
P2=0;
P1_2=0;
wr_switch=1;
P1_4=R_CON;
TMOD=0x21; // 设置定时器1工作方式 2
TH0=0xfc; // 定时1MS
TL0=0x18;
TR0=1;
ET0=1;
TH1=0xfd; // 设置波特率9600bps
TL1=0xfd;
// TH1=0xf4; // 设置波特率2400bps
// TL1=0xf4;
PCON&=0x00; // SMOD=0
TR1=1; // 开启定时器
SCON=0x40; // 设置串行口工作方式 1
REN=1; // 允许接收
EA=1; // 总中断允许
ES=1; // 串行口中断允许
EX0=1; // 外中断0允许
IT0=1; // 负跳变触发方式
SCONF=0x02; // 片内扩展ram使能
RCAP2H=0xb1; // 重装值
RCAP2L=0xe0;
TH2=0x9e; //定时器2定时25ms
TL2=0x58;
ET2= 1; // 允许T2中断
T2CON= 0x00;
TR2= 0;
WDTKEY=0x1E;
WDTKEY=0xE1;
WDTC=0x85; // 看门狗定时器使能,溢出时间为65.536ms
WDTKEY=0xE1;
WDTKEY=0x1E;
EX0=1; // INT0中断开
IT0=0; // INT0低电平触发
sum_init();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -