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

📄 init.c

📁 用于GPRS远程电力抄表系统中采集器端的程序
💻 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 + -