ATmega - 128经典程序例子

激戰丄海灘 分享 2020-05-05 下载文档

ATMEGA128相关例程

1、流水灯程序 /*

硬件环境:atmega128开发板 软件环境:CodeVisionAVR-C */

#include #define uchar unsigned char #define uint unsigned int uchar cnt;

void timer1_init() {

TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE;

TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频 }

interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

TCNT1H=0XF0; //重载定时器初值 TCNT1L=0XBE; DDRE|=1<<2; PORTE|=1<<2; DDRA=0xff;

PORTA=cnt; //输出led的值到端口B cnt++; if(cnt==255) cnt=0; }

void main() {

//DDRB=0XFF; SREG|=0X80; TIMSK=0X04; timer1_init(); while(1) {; }

}

2、AD转换+数码管显示程序

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

/*ADC测试程序 */ /*目标器件:ATmega128 */ /*晶振:RC 8MHZ */ /*编译环境:ICCAVR 7.13A */

/*E-Mail:number007cool@163.com */ /*时间:2010年11月13日 */ //Aref接AVCC(+5V),采用Aref作参考电压 /*用数码管显示AD转换的结果*/

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

/*********************************包含头文件********************************/ #include #include

/********************************数码管段码表*******************************/

extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F};

/*********************************全局变量**********************************/ unsigned int adc_rel=0;

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

函数功能:ADC初始化函数 入口参数: 出口参数:

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

void adc_init(void) {

DDRF&=0XFE; //PORTF0设置为输入,即作为ADC0口输入模拟电压 PORTF&=0XFE; //PORTF0设置为输入低电平 ADCSRA=0x00; //关ADC

ADMUX = 0X00; //采用Aref作为参考电压,ADC0单端输入,右对齐 ACSR=(1<

ADCSRA = (1<

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

*****

函数功能:ADC中断函数 入口参数: 出口参数:

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

#pragma interrupt_handler adc_isr:iv_ADC void adc_isr(void) {

//int data_h,data_l; //data_l=ADCL; //data_h=ADCH; ADCSRA = 0x00;

ADCSRA = (1<

if(adc_rel>0x1ff) {

PORTA|=1<<2; } else

PORTA&=~(1<<2); */ }

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

函数功能:延时子程序 入口参数: 出口参数:

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

void delay(void) { int i;

for(i=0;i<1800;i++); }

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

函数功能:显示子程序 入口参数:k 出口参数:

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

void display(unsigned int k)//发光二极管显示初始化 {

DDRE|=1<<2; PORTE|=1<<2; DDRA=0XFF; PORTA=k; }

#define SS 0 #define SCK 1 #define MOSI 2 #define MISO 3

#define SS_H() PORTB|=(1<

#define led0_en() {DDRB|=1<<4;PORTB|=(1<<4);} //开第一个数码管的位选 #define led0_dis() {DDRB|=1<<4;PORTB&=~(1<<4);} //关第一个数码管的位选 #define led1_en() {DDRB|=1<<5;PORTB|=(1<<5);} #define led1_dis() {DDRB|=1<<5;PORTB&=~(1<<5);} #define led2_en() {DDRB|=1<<6;PORTB|=(1<<6);} #define led2_dis() {DDRB|=1<<6;PORTB&=~(1<<6);} #define led3_en() {DDRB|=1<<7;PORTB|=(1<<7);} #define led3_dis() {DDRB|=1<<7;PORTB&=~(1<<7);} #define OE 7 #define point 3 #define dp 7

#include #include

const unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66, //0,1,2,3,4 0x6D,0x7D,0x07,0x7F,0x6F, //5,6,7,8,9 0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; //a,b,c,d,e,f volatile unsigned char led_buffer[4];

void delay_1us(void) //1us延时函数 {

asm(\ }

void delay_nus(unsigned int n) //N us延时函数 {

unsigned int i=0; for (i=0;i

void delay_1ms(void) //1ms延时函数 {

unsigned int i;

for (i=0;i<1140;i++); }

void delay_nms(unsigned int n) //N ms延时函数 {

unsigned int i=0; for (i=0;i

/*完成spi的初始化*/ void spi_init(void) {

DDRB |= (1<

SPCR = (1<

/*spi主机传送数据*/

void SPI_MasterTransmit(char Data) {

/* 启动数据传输 */ SPDR = Data; /* 等待传输结束 */

while(!(SPSR & (1<

/*完成对HC595的初始化*/ void HC_595_init(void) {

DDRC |= (1<

led_buffer[0]=16; //初始化数码管段码 led_buffer[1]=16; led_buffer[2]=16; led_buffer[3]=16; }

/*HC595完成传送数据*/

void HC_595_OUT(unsigned char data) {

SS_L();

SPI_MasterTransmit(data); SS_H();


ATmega - 128经典程序例子 .doc 将本文的Word文档下载到电脑

下一篇:测量的初步知识 - 初中物理第一册教案

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7 元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx