微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Atmega16单片机实用程序

Atmega16单片机实用程序

时间:12-01 来源:互联网 点击:

for(count=7;count>

ACSR&=~BIT(7); //使能模擬比較器,注意此處為低電平有效;

ACSR&=~BIT(6); //設置AIN0為正極輸入端;

ACSR|=BIT(3); //使能模擬比較器中斷;

ACSR|=(BIT(1)|BIT(0)); //比較器上升沿觸發中斷;

}

#pragma interrupt_handler comp:17 //注意函數名後不加();

void comp() //模擬比較器中斷服務程序;

{

ACSR&=~BIT(3);

/*************

此處加中斷處理函數

**************/

ACSR|=BIT(3);

}

/**********************************************************

名稱:外部中斷INT0 調試OK

功能:低電平觸發INT0端口引起中斷,並響應相關中斷服務程序

**********************************************************/

void int0_init()

{

DDRD&=~BIT(2); //PD2/INT0端口配置為輸入;

MCUCR&=((~BIT(0))&(~BIT(0))); //INT0觸發方式為低電平;

GICR|=BIT(6); //使能外部中斷0;

SEI(); //開總中斷;

}

#pragma interrupt_handler int0:2

void int0() //INT0中斷服務函數;

{

GICR&=~BIT(6); //關閉外部INT0;

/************************

此處加INT0中斷處理函數

************************/

GICR|=BIT(6); //開啟外部INT0;

}

/*********************************************************

名稱:外部中斷INT1,

功能:邊沿觸發INT0端口引起中斷,並響應相關中斷服務程序

**********************************************************/

void int1_init()

{

DDRD&=~BIT(3); //將PD3口配置為輸入;

PORTD&=~BIT(3); //pd3口初始值為0;

MCUCR|=(BIT(3)|BIT(2)); //INT1上升沿觸發中斷;

GICR|=BIT(7); //使能INT1中斷;

SEI(); //開總中斷;

}

#pragma interrupt_handler int1:3

void int1()

{

GICR&=~BIT(7); //關閉INT1中斷;

/*******************************

此處加INT1中斷服務函數;

*******************************/

GICR|=BIT(7); //開啟INT1中斷;

}

/**********************************************************

/**********************************************************

名稱:12864(ks0108)顯示應用

功能:圖形液晶使用

**********************************************************/

#define EN_CLR PORTD&=~BIT(0) //使能12864

#define EN_SET PORTD|=BIT(0) //關閉12864

#define RW_READ PORTD|=BIT(1) //讀操作

#define RW_WRITE PORTD&=~BIT(1) //寫操作

#define RS_COMM PORTD&=~BIT(2) //命令操作

#define RS_DATA PORTD|=BIT(2) //數據操作

#define RESET PORTD&=~BIT(3) //12864液晶複位

#define RESET_OVER PORTD|=BIT(3) //12864液晶結束複位;

#define CS1_EN PORTD&=~BIT(4) //使能CS1,選擇左半屏幕;

#define CS1_DIS PORTD|=BIT(4) //禁止CS1

#define CS2_EN PORTD&=~BIT(5) //使能CS2,選擇右半屏幕;

#define CS2_DIS PORTD|=BIT(5) //禁止CS2

#define basic_com 0x30 //一次送8BIT數據,基本指令集;

#define explo_com 0xc4 //擴展指令集

#define show_stitude 0x0f //顯示狀態,整體顯示,游標開,游標位置開

#define cleanscreen 0x01 //顯示清零,AC歸零

#define cursor 0x07 //写入/讀取时,游标右移,畫面左移

#define AC_0 0x03 //AC归0,不改变DDRAM内容

const int char_0816[]={

0xe0,0x18,0x04,0x04,0x04,0x18,0xe0,0x00,

0x07,0x18,0x20,0x20,0x20,0x18,0x07,0x00

};

/************************************************************

名稱:MCU端口初始化

功能:設置MCU端口初始方向以及狀態

*************************************************************/

void GPIO_INIT()

{

DDRA=0XFF;

PORTA=0X00;

DDRB=0XFF;

PORTA=0X00;

DDRC=0XFF;

PORTA=0X00;

DDRD=0XFF;

PORTA=0X00;

}

/****************************************************************

名稱:輸入數據

功能:MCU將數據送到總線

*****************************************************************/

void SET_DATA(uchar data)

{

delayus(3);

PORTC=

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top