📄 hardwareinit.c
字号:
#include "global.h"
//#include<w77c32.h>
//#include<intrins.h>
void maininit()
{
uchar xdata *data s;
uchar xdata *data p;
uint data i;
// uchar a;
// uint xdata *data q=0xc077; 用户参数存储过标志
PMR=PMR|1; //cpu ram 有效
p=0x1800;
*(p+0xe0)=0; *(p+0xe2)=0xc; //页=0 VM=12H
*(p+6)=0xff; *(p+7)=0xff; //PSD A,B口为输出
*(p+4)=0; //A口输出=0
//can复位
*(p+5)=0xff;
_nop_();
_nop_();
_nop_();
_nop_();
*(p+5)=0xf;
_nop_();
_nop_();
_nop_();
_nop_();
*(p+5)=0xff;
s=0; //1k ram 初始化
for(i=0;i<0x400;i++)
*(s+i)=0;
canx_cs[0]=0xe000;
canx_cs[1]=0xe100;
canx_cs[2]=0xe200;
canx_cs[3]=0xe300;
can_init(canx_cs[0]);
can_init(canx_cs[1]); //can2初始化
can_init(canx_cs[2]); //can3初始化
can_init(canx_cs[3]);
//2004.07.26 LHM(改为定时器0定时,定时器1波特率发生器)
/*
TMOD=0x21; //T1为波特率发生器,T0为16位定时器
TH0=-(0x28B0/256);
TL0=-(0x28B0/256);
TR0=1; //启动T0
ET0=1; //开T0中断
TL1=0xe5; TH1=0xe5; //25M晶振 TL1=0xf9; TH1=0xf9; 波特率2400
PCON=0;
TR1=1; //启动T1
SCON=0x50; //串行1为方式1
ET1=0;
*/
TMOD=0x25; //定时器1工作在方式2,波特率产生器
// TL1=0xf9; TH1=0xf9; //25M晶振 波特率9600
// TL1=0xef; TH1=0xef; //16M晶振 波特率2400
TL1=0xe5; TH1=0xe5; //25M晶振 波特率2400
PCON=0;
TR1=1;
SCON=0x50; //串行1为方式1
//16M晶振
// RCAP2H=-(0x1A0A/256); //T2工作在定时器方式,定时为5MS
// RCAP2L=-(0x1A0A%256);
// RCAP2H=-(0x6828/256); //T2工作在定时器方式,定时为20MS
// RCAP2L=-(0x6828%256);
//25M晶振
RCAP2H=-(0x28AF/256); //T2工作在定时器方式,定时为5MS
RCAP2L=-(0x28AF%256);
ET2=1; T2CON=0x04;
P3_5=~P3_5; //看门狗
//时钟用
//rs232初始化
sbuf_rec=INVALID_ASC2; // SBUF的缓冲区初始值为0xFF
m_ST_60s_count=0; // 60s计数器
m_comm_enable_flg=0; // 通讯使能
m_comm_60sover_flg=0; // 60s计时结束标志
m_msg_monitor_flg=0; // 监视命令标记
m_msg_quit_flg=0; // 解除监视命令标志
m_msg_set_flg=0; // 参数设定命令标记
// m_monitor_delay_flg=0; // 监视延迟标记
m_monitor_delay_count=0;
m_scc.WriteFlg=0;
m_active_idx=0;
m_add_type_idx=0;
m_get_senddata_flg=1;
m_resolve_flg=0;
//clock用
m_read_time=1;
m_read_time_count=COUNT_5s;
//can通讯用
//-------04-5-17
m_state_20ms=0;
for(i=0;i<ENum_MAX;i++)
e_display_reflash_floor[i]=1;
//can复位用
m_can0_flg=0;
m_can1_flg=0;
m_can2_flg=0;
m_can3_flg=0;
m_can0_count=COUNT_ERR;
m_can1_count=COUNT_ERR;
m_can2_count=COUNT_ERR;
m_can3_count=COUNT_ERR;
m_can0err_flg=0;
m_can1err_flg=0;
m_can2err_flg=0;
m_can3err_flg=0;
//用户参数存储
m_once_param_over_flg=0;
//2004.06.11 上电后设置为用户参数
m_save_over_flg=0;
m_restore_flg=1;
m_save_flg=0;
m_factory_flg=0;
EA=1; // 总中断允许
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -