📄 init.c~
字号:
#include "config.h"
/*****************************************************
IO初始化
*****************************************************/
void Init_IO ( void )
{
// PA接液晶用,状态输入,开启上拉,用7个口,剩PA0 接确认键。
PORTA=0xFE;
DDRA=0xFE;
PORTB=0x00;
DDRB=0x00;
/******************************************************************************************************
PC0(SCL) PC1(SDA) PC7( )
******************************************************************************************************/
PORTC=0xF7;
DDRC=0x07;
/*******************************************************************************************************
PD0 (B电机正反转) PD1(A电机正反转 ) PD2(传感器D) PD3(传感器C)
PD4(CPB) PD5(CPA) PD6(传感器B) PD7(传感器A)
********************************************************************************************************/
PORTD=0XCC;
DDRD=0X33;
}
/*******************************************************************
T1初始化,输出两路脉冲。未开中断,CTC模式
OCR1A=0x00FF;OCR1B=0x00FF;
*******************************************************************/
void Init_T1( void )
{
TCCR1A=0x00;
TCCR1B=0x0A;
OCR1AH=0x01;
OCR1AL=0xFF;
OCR1BH=0x01;
OCR1BL=0xFF;
}
/*********************************************************************
T0初始化
*********************************************************************/
void Init_T0( void )
{
TCCR0 = 0x00;//停止定时器
TCNT0 = 0x00;//初始值
OCR0 = 0x79;//匹配值
TIMSK |= 0x02;//中断允许
TCCR0 = 0x0D;//启动定时器
}
/***********************************************************************
T2初始化
***********************************************************************/
void Init_T2( void )
{
TCCR2 = 0x00;//停止定时器
ASSR = 0x00;//异步时钟模式
TCNT2 = 0x00;//初始值
OCR2 = 0x3E;//匹配值
TIMSK |= 0x80;//中断允许
TCCR2 = 0x00;//启动定时器
}
void Init_device( void )
{
MCUCR=0x00;
MCUCSR=0x80;
// Timer(s)/Counter(s) Interrupt(s) initialization
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
}
void Init_TWI(void)
{
TWCR= 0x00; //禁止TWI
TWBR= 0x15; //波特率15
//当电压为5V时, 上拉电阻为10K时, SCL和SDA的一个时钟周期为10us; 上拉电阻为1K时, SCL和SDA的一个时钟周期为2.5us;
//TWBR值需要仔细调节以配合ZLG7290的IIC频率要求
TWSR= 0x01; //预分频系数1,或(0<<TWPS1)|(0<<TWSP0);
//IIC从机地址SLAVE=0xa0
TWCR= 0x04; //使能TWI,禁止中断,即:TWCR =(1<<TWEN),
//禁止中断即TWINT被清零,TWI立即开始工作,因此,在
//清零TWINT之前一定要首先完成对地址寄存器TWAR,
//状态寄存器TWSR,以及数据寄存器TWDR的访问。
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -