欢迎来到天天文库
浏览记录
ID:45341080
大小:307.41 KB
页数:38页
时间:2019-11-12
《ATmega128几个常用程序例子》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ATMEGA128相关例程自己学avr单片机已经有相当一段时间了,一开始用的是atmega128,觉得不是很好用。于是自己去买了一块16L的芯片,觉得还行。一开始用的是ICCAVR,应为它用起来比较简单,不像winavr那样,要写个Makefie,比较的麻烦,但iccavr的缺点是太过于简陋,调试程序时,感觉不是很好。后来经同学介绍,用起了winavr,其实也是比较的简单,只不过要加一个makefile而已,其实makefile可以用软件自带的组建自动生成,只需修改几个参数就可以用。后来又用起了codevisionavr,虽然不太习惯,也谈不上不好用.需要注意的是,三
2、个不同的软件所带的同文件不一样。iccavr是iom128v.h(姑且以128为例),winavr是avr/io.h,不过makefile中要设置芯片为atmega128.而cvavr则是mega128.h。记得一开始的时候,我对这些不同的同文件不是很理解,是从一个学长那里了解到,才弄明白的。其实前两个软件只需把头文件稍微改一下基本上可以通用。而最后一个软件的中断的写法似乎不太一样,因而和钱两个软件的兼容性是最差的。总体说winavr给人的感觉是比较专业自己学习时多总结吧!1、流水灯/硬件环境:atmega128开发板软件环境:CodeVisionAVR-C/#inc
3、lude#define ucharunsignedchar#define uint unsignedintucharcnt;voidtimer1_init(){ TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE; TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频}interrupt[TIM1_OVF]voidtimer1_ovf_isr(void){ TCNT1H=0XF0; //重载定时器初
4、值 TCNT1L=0XBE; DDRE=1<<2; PORTE=1<<2; DDRA=0xff; PORTA=cnt; //输出led的值到端口B cnt++; if(cnt==255) cnt=0;}voidmain(){ //DDRB=0XFF; SREG=0X80; TIMSK=0X04; timer1_init(); while(1) {; }}2、AD转换+数码管显示///ADC测试程序
5、 //目标器件:ATmega128 //晶振:RC8MHZ //编译环境:ICCAVR7.13A //E-Mail:number007cool@163.com //时间:2010年11月13日
6、 ///Aref接AVCC(+5V),采用Aref作参考电压/用数码管显示AD转换的结果////包含头文件/#include#include/数码管段码表/externconstunsignedchartab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F};/全局变量/unsignedintadc_rel=0;/函数功能:ADC初始化函数入口参数:出口参数:/voidadc_i
7、nit(void){DDRF&=0XFE; //PORTF0设置为输入,即作为ADC0口输入模拟电压PORTF&=0XFE; //PORTF0设置为输入低电平ADCSRA=0x00; //关ADCADMUX=0X00; //采用Aref作为参考电压,ADC0单端输入,右对齐ACSR=(1<
此文档下载收益归作者所有