?? 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波特率發(fā)生器)
/*
TMOD=0x21; //T1為波特率發(fā)生器,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的緩沖區(qū)初始值為0xFF
m_ST_60s_count=0; // 60s計數器
m_comm_enable_flg=0; // 通訊使能
m_comm_60sover_flg=0; // 60s計時結束標志
m_msg_monitor_flg=0; // 監(jiān)視命令標記
m_msg_quit_flg=0; // 解除監(jiān)視命令標志
m_msg_set_flg=0; // 參數設定命令標記
// m_monitor_delay_flg=0; // 監(jiān)視延遲標記
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 + -