?? system_init.c
字號:
#include <iom8v.h> //和單片機類型相對應的頭文件,選擇Atmega8做實驗;
#include <macros.h>
#include "discharge.h"
#include <stdio.h>
#include "LCD_1602.h"
void init_devices(void)
{
CLI(); //禁止所有中斷
MCUCR = 0x00;
MCUCSR = 0x80;//禁止JTAG
GICR = 0x00;
port_init();
usart_init();
timer1_init(10,10,4000);//PWM上限 4000
timer2_init();
AD_init();
LCD_init();
delay_nms(10);
SEI();//開全局中斷
}
//端口初始化
void port_init(void)
{
DDRB&=~(1<<0)|(1<<3)|(1<<4)|(1<<5);//KEY 輸入
PORTB|=(1<<0)|(1<<3)|(1<<4)|(1<<5);//KEY 開上拉
DDRC|=(1<<4)|(1<<5);//LED_G LED_R
DDRB&=~(1<<1)|(1<<2);//PWMA PWMB 設為輸入,即關閉
}
//串口通信初始化//38400kbps
void usart_init(void)
{
UCSRB = 0x00;//禁止中斷
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x0C;
UBRRH = 0x00;
UCSRB = 0x18;
}
//定時器T2初始化
void timer2_init(void)
{
TCCR2 = 0x00;//停止定時器
ASSR = 0x00;//異步時鐘模式
TCNT2 = 0x06;//初始值
OCR2 = 0x05;//匹配值
TIMSK |= 0x40;//中斷允許
TCCR2 = 0x06;//啟動定時器
}
//定時T1初始化
void timer1_init(unsigned int a,unsigned int b,unsigned int top)
{
TCCR1B = 0x00;//停止定時器
TIMSK |= 0x00;//中斷允許
TCNT1H = 0x00;
TCNT1L = 0x00;//初始值
OCR1A=a;//匹配A值
OCR1B=b;//匹配B值
ICR1=top-1;//輸入捕捉匹配值
TCCR1A = 0x82;
TCCR1B = 0x19;//啟動定時器 無分頻
}
/*
//定時器T0初始化
void timer0_init(void)
{
TCCR0 = 0x00;//停止定時器
TCNT0 = 0xFF;//初始值
}
void timer0_start(void)
{
TCNT0 = 0xFF;//初始值
TCCR0 = 0x05;//啟動定時器
}
void timer0_stop(void)
{
TCCR0 = 0x00;//停止定時器
LCD_write_number(9,0,0,TCNT0,"us",0);//
}
*/
void AD_init(void)
{
ADCSRA=0X00;
ACSR =(1<<ACD);//關閉模擬比較器
ADMUX =(1<<REFS0)|(1&0x0F); //
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//ADC轉換 64分頻
}
unsigned int read_adc (uchar r,uchar m)
{
unsigned int adc_rel;
ADMUX=0;
ADMUX |=(m&0x0F);//選擇通道
ADMUX |=(r<<6);//選擇基準
ADCSRA|=(1<<ADSC);//啟動AD轉換
delay_nus(125);
adc_rel=ADC&0x3FF;
return(adc_rel);
}
void delay_nms(unsigned int n)//延時n毫秒
{
unsigned int i;
for (i=0;i<n;i++)//執行n次1毫秒延時
{delay_nus(1000);}
}
void delay_nus(unsigned int n)//延時N微秒,N>=5 晶振:8MHz
{
unsigned int i;
for (i=5;i<n;i++)
{
asm("nop");
asm("nop");
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -