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

📄 init.c

📁 avr单片机操控ks0108c图形点阵液晶屏代码
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
#include "board.h"
//----------------------------------------
//端口初始化
//----------------------------------------
void port_init(void){
	
   PORTB = 0x00;
   DDRB  = 0x00;
   PORTC = 0x00; //m103 output only
   DDRC  = 0x3F;
   PORTD = 0x00;
   DDRD  = 0x04;
}

//----------------------------------------
//UART0 初始化
//UART0 initialisation
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
//----------------------------------------
 
void uart0_init(void){
     UCSRB = 0x00; // RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 
     UCSRA = 0x00; // RXC   TXC   UDRE  FE   DOR  PE    U2X  MPCM  
     UCSRC = 0x86; // URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL 
                   //  |     |     |    |     |    |     |     |_时钟极性 1上升沿 0 下降沿
                   //  |     |     |    |     |    |_____|_______字符位数 11 是8位
                   //  |     |     |    |     |__________________停止位个数 0是1个
                   //  |     |     |____|________________________校验方式 00 禁止校验
                   //  |     |___________________________________通信方式 0 是异步方式
                   //  |_________________________________________读写目的选择1是读写UCSRC 
                   //                                            0是写 UBRRH
     
     UBRRL = 0x33; // set baud rate lo     9600
     UBRRH = 0x00; // set baud rate hi
	 
     UCSRB = 0x18; // RXCIE TXCIE UDRIE RXEN      TXEN UCSZ2 RXB8 TXB8 
     
     
     
 }

//TIMER0 initialisation - prescale:1
// WGM: Normal
// desired value: 2uSec
// actual value:  2.000uSec (0.0%)
void timer0_init(void)
{
     TCCR0 = 0x00; //stop
     //TCNT0 = 0xF8; //set count
     //TCCR0 = 0x01; //start timer
}
/*
//TIMER1 initialisation - prescale:1
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 100uSec
// actual value: 100.000uSec (0.0%)
void timer1_init(void){
    TCCR1B = 0x00; //stop
    
    TCNT1H = 0x00; //setup
    TCNT1L = 0x00;
    
    OCR1AH = 0x03;
    OCR1AL = 0x20;
    OCR1BH = 0x03;
    OCR1BL = 0x20;
    ICR1H  = 0x03;
    ICR1L  = 0x20;
    TCCR1A = 0x00;
    //TCCR1B = 0x01; //start Timer
}
*/
//======================================
//TIMER1 initialize - prescale:8
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1uSec
// actual value:  1.000uSec (0.0%)
//使用8Mhz外部有源震荡器8预分频,1US计数器
//加1。
//======================================
void timer1_init(void){
    TCCR1B = 0x00; //stop
    TCNT1H = 0x00; //setup
    TCNT1L = 0x00;
    OCR1AH = 0x00;
    OCR1AL = 0x01;
    OCR1BH = 0x00;
    OCR1BL = 0x01;
    ICR1H  = 0x00;
    ICR1L  = 0x01;
    TCCR1A = 0x00;
    TCCR1B = 0x00; //start Timer
}

//TIMER2 initialize - prescale:8
// WGM: Normal
// desired value: 50uSec
// actual value: 50.000uSec (0.0%)
void timer2_init(void)
{
    TCCR2 = 0x00; //stop
    ASSR  = 0x00; //set async mode
    TCNT2 = 0x06; //setup
    OCR2  = 0xFA;
    TCCR2 = 0x00; //start
}




//call this routine to initialise all peripherals
void init_devices(void){
        //stop errant interrupts until set up
	CLI(); //disable all interrupts
	port_init();


	MCUCR = 0x00; // E SM2 SM1 SM0 ISC11 ISC10 ISC01 ISC00
	              //                             |     |
	              //                             ---------- 1 0  下降沿产生中断
 	GICR  = 0x00; //INT1 INT0 -  -  -  - IVSEL IVCE
 	              // |    |   |  |  |  |  |     |__ 
 	              // |    |   |  |  |  |  |________
                      // |    |   |__|__|__|___________ 
                      // |    |________________________ INT0 中断允许
                      // |_____________________________ INT1 中断允许
 	                                              
 	//TIMSK = 0x41; //timer interrupt sources
 	              //OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 – TOIE0
    //timer0_init(); 
    //timer2_init();	              
 	//timer1_init();
 	//timer2_init();
	uart0_init();
 	//SEI(); //re-enable interrupts
 	//all peripherals are now initialised
}

⌨️ 快捷键说明

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