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

📄 initmcu.c

📁 AVR使用硬件SPI控制ISD1760源代码
💻 C
字号:
#include <iom64.h>
#include "mydeclare.h"
#include "initmcu.h"
#include "port_def.h"

//==============================================================================
void init_port(void)
{
  
  DDRA = 0xFF;   //LCD数据总线
  PORTA = 0xFF;  
  
  DDRB = 0xA7;  //ISD语音芯片控制(B0-B3),
  PORTB = 0x00;
  
  DDRC = 0xA3;  //lcd控制脚
  PORTC = 0xE0;
  
  DDRD = 0x79;  //24C512 ds1302 232
  PORTD = 0xAF; //1302的SCK和RST要为低电平 
  
  DDRE = 0xC0;
  PORTE = 0x3F; //开采码头上拉
  
  DDRF = 0x00;
  PORTF = 0xF0; //JTAG KEY charge_current_gather
  
  DDRG = 0x1C;  //12V电源使能, 232电源使能,电磁铁, 继电器使能
  PORTG = 0x04;     
  
}

/*TMR0不使用
//==============================================================================
void init_tmr0(void)
{
  TCCR0 = 0x07;  //TMR0 1024分频 ,TMR0计156.25为20ms,
  OCR0 = 0;
  ASSR = 0;
  TCNT0 = 0;  
}
*/
//==============================================================================
void init_tmr1(void)
{
  TCCR1A = 0xC1;  //预分频选择1:1, 8位快速PWM模式,频率为(8MHz/1024= 7.8125KHz)
  TCCR1B = 0x09;
  TCCR1C = 0x00; 
  OCR1AH = 0x00; //设置占空比为零
  OCR1AL = 0x00;
}

//==============================================================================
void init_tmr3(void)
{
  TCCR3A = 0x00; //T3工作于普通模式,作为定时用,最大计数值为0xFFFF;
  TCCR3B = 0x02; //预分频为1:8; 最长可产生65536ms定时
  TCCR3C = 0x00;
  OCR3AH = 0; 
  OCR3AL = 0;
  
}

//==============================================================================
void init_usart1(void)
{
  UCSR1A = 0x40;
  UCSR1B = 0x98; //使能发送和接收,使能接收中断 
  UBRR1H = 0;    //设置8M晶振下波特率为9600
  UBRR1L = 51; 
  UCSR1C = 0x06; //使用异步模式,8位数据位,1位停止位,无奇偶校验
}

//==============================================================================
void init_i2c(void)
{
  TWBR = 0x20; //比特率寄存器为32  
  TWSR = 0x00; //分频比1:1,//使用100K传输速率
  TWAR = 0x00; //配置从机地址为0x00,接收广播
  TWCR = 0x80; //关闭TWI总线
}

//==============================================================================
void init_spi(void)
{
  SPCR = 0x7F; //SPI使能,SCK空闲保持为高电平,数据在上升沿采样,速率为1:64(FOSC/64)
  SPSR = 0x01; //使能倍速
}

//==============================================================================
void init_adc(void)
{
  ADMUX = 0xE0; //内部2.56V参考源, 选中通道0;,转换结果左对齐
  ADCSRA = 0x10; //ADC转换关闭(再开启时要舍弃第一次所用),预分频1:1
}






⌨️ 快捷键说明

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