⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hardwareinit.c

📁 一整套电梯控制器源程序
💻 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 + -