📄 init.c
字号:
#include "glo.h"
void port_init(void)
{
PORTA = 0xFF; //PORTx 端口x数据寄存器
DDRA = 0xFF; //DDRx 端口x方向寄存器 1为输出,0为输入
PORTB = 0xFF;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x7F;
DDRD = 0x00;
DDRE = 0xFC;
PORTE = 0x0B;
DDRE = 0x00;
PORTF = 0xFF;
DDRF = 0x00;
PORTG = 0x00;
DDRB |= 0XFF; //PB.4/PB.5/PB.6按键输出
DDRF |= 0xF0; //CS1~CS4 输出
// DDRF &= 0xFE; //MIC输入
DDRG |= 0x07; //ALE/RD/WE输出
DDRG &= 0xE7; //DDRG.3,DDRG.4输入
DDRD |= 0x70; //LCD_RS/LCD_RST/LCD_CS输出
DDRD |= 0X01; //SCK I2C时钟线输出
DDRD |= 0X08; //OE 输出0
DDRD |= 0x80; //A16输出0
PORTD&= 0x7F;
}
void spi_init(void)
{
DDRB |=0x07;
PORTB &=0xf8; //选择3548
SPCR = 0x54; //setup SPI,SPI使能,主机模式,为1/4分频
SPSR= 0x01; //setup SPI SPI选择加速,为1/2分频
}
void uart0_init(void)
{
UCSR0B = 0x00; //disable while setting baud rate
UCSR0A = 0x00; //发送等待缓冲器
UCSR0C = 0x06; //异步通信,8位数据
UBRR0L = 0x5F; //0x08; //set baud rate lo 9600
UBRR0H = 0x00; //set baud rate hi
// UCSR0B =0X00;
UCSR0B = 0x98; //接收结束中断使能,接收使能,发送使能
}
//-------------------------------------------------------------------------------
/*
MCU初始化
*/
//-------------------------------------------------------------------------------
//call this routine to initialize all peripherals
void init_devices(void)
{
CLI();
XDIV=0x00 ;
//timer1_init();
port_init();
//
spi_init();
//
uart0_init();
//
// adc_init();
// int_isr_init();
//中断设置
// Initial_3544();
//
// i2c_init();
LCD_init();
//MCUCR = 0x00;//电源管理控制寄存器
TIMSK=0x04 ;
ETIMSK=0x00 ;
MCUCR=0xc0 ;
//1100 0000
XMCRA=0x0e ;
// 读/写操作插入2个等待周期。输出新地址之前还要插入1个等待周期
//- SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 -
//7------------------------0
XMCRB=0 ;
//(1<<XMBK); // 使能外部扩展随机存储器总线保持功能
//XMBK - - - - XMM2 XMM1 XMM0
//XMBK 外部存储器总线保持功能使能
//XMM2~0 外部存储器高地址屏蔽
UCSR0B|=0x80 ;
//开串口接收中断
SEI();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -