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

📄 systemini.c

📁 这个是汽车制动台控制程序的C语言版本. 用于实际产品中.单片机用的是PIC16F877A.
💻 C
字号:
#include <pic.h>	// 包含头文件
#include "total.h"

/*********************************************************************************
* 最后修改日期: 	05-4-29
* 修改原因:		添加注释
* 修改人: 		饶阳胜
/********************************************************************************* 
* File: 	SystemIni.c
* 功能: 		系统的初始化设置
* 设计者: 	饶阳胜
* 日期: 		05-2-27
* 入口参数: 	无
* 出口参数: 	无
* 说明: 		每个项目均应包含此文件,依具体芯片的不同而做更改
* 芯片: 		PIC16c774
*********************************************************************************/
void System_Init(void)
{	
	PORTA = 0x0;			//端口设置
	PORTB = 0x0;
	PORTC = 0x0;
	PORTD = 0x0;
	PORTE = 0x0;
	TRISA = 0x23;
	TRISB = 0xFF;
	TRISC = 0xFF;
	TRISD = 0x0;
	TRISE = 0x1;

	ENABLE_273 = TRUE;		//选通外部输出273
	
	//配置WDT
	OPTION = 0x8F;

	//为AD转换配置参数
	ADCON1 = 0x8d;			//RA0、RA1、RA3为模拟通道,转换后的数据右对齐

	//为串口通信进行配置
	SPBRG = 0x47;			//波特率设置参数,波特率为9600
	TXSTA = 0x24;			//使能发送,异步模式,高速
	RCSTA = 0x90;			//使能接收
	
	//为I2C通信进行配置
	SSPCON = 0x28;			//主控器方式。允许串行端口(IIC)工作
	SSPADD = 0x1B;			//为I2C配置时钟
	STAT_CKE = 0; 			//输入电平服从I2C规范
	STAT_SMP = 1;			//采用100K速率
	
	//为中断做相关设置
	RCIF = 0;				//清接收中断标志
	ei();					//开总中断
	PEIE = 1;				//开第1外设中断
	RCIE = 1; 				//开接收中断

	display_weigh = 0;		//正常显示态
	weigh_side = 0;			//
}

/*******************************************************************************************
* 函数名称: void InitTmr1(void)
* 功能: 初始化TMR1
* 入口参数: 无
* 出口参数: 无
* 全局变量:
* 调用模块: 
* 设计者: 饶阳胜
* 日期: 05/3/4
* 说明: 定时时间: 0.05秒
*******************************************************************************************/
void Init_Tmr1(void){
	T1CON = 0x20;			//分频比1:4
	TMR1H = 0x78;			//设定值定入TMR1
	TMR1L = 0xff;
	TMR1IF = 0;				//清除TMR1溢出中断标志
	TMR1ON = 1;				//打开TMR1
}

/******************************************************************************************
* 函数名称:	unsigned short Hex_Bcd(unsigned short i)
* 功能:   	将16进制数转换成BCD码
* 入口参数:	i
* 出口参数: 
* 全局变量:  无
* 调用模块:  无
* 设计者:  	饶阳胜
* 日期: 		05-4-4
******************************************************************************************/
unsigned short Hex_Bcd(unsigned short i)
{
	return ( i / 1000 << 12 | (i % 1000) / 100 << 8 | (i % 100) / 10 << 4 | i % 10);
}

/******************************************************************************************
* 函数名称:	unsigned short Bcd_Hex(unsigned short i)
* 功能:   	将BCD码转换成16进制数
* 入口参数:	i
* 出口参数: 
* 全局变量:  无
* 调用模块:  无
* 设计者:  	饶阳胜
* 日期: 		05-4-4
******************************************************************************************/
unsigned short Bcd_Hex(unsigned short i)
{
	return (i >> 12 & 0xf) * 1000 + (i >> 8 & 0xf) * 100 + (i >> 4 & 0xf) * 10 + (i & 0xf);
}

/***************************************************************************************************
* 函数名称: 	void Delay(unsigned short i,unsigned short j)
* 功能: 		实现不同时段的延时
* 入口参数: 	i,j		延时参数,值越大,时间越长
* 出口参数: 	无
* 调用模块: 	无
* 全局变量: 	无
* 设计者: 	饶阳胜
* 日期:		05-4-2
***************************************************************************************************/
void Delay(unsigned short i,unsigned short j)		//根据不同的参数,实现不同时段的延时
{
	unsigned short k;

	for(; i > FALSE; i--){
		k = j;
		for(; k > FALSE; k--){
			asm("nop");
			asm("nop");
			asm("nop");
			asm("nop");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -