社区
单片机/工控
帖子详情
关于Atmega128的avr开发板的系统初始化
rudyfly
2011-08-29 08:37:11
小弟现在在学习avr的单片机,是Atmega128型号的开发板,但是小弟看的书和一些示例程序,都是直接进入C的Main函数的了,都没有系统初始化的代码,用icc编译的时候说一些库文件没有,小弟想找一些关于系统初始化的代码,比如一开始进去C语言的汇编代码,网上找了好久都没有,哪位大侠能发给我一些这样的代码,一些初始化的汇编代码和头文件,小弟万分感激。
邮箱:rudyfly@163.com
谢谢。
...全文
255
8
打赏
收藏
关于Atmega128的avr开发板的系统初始化
小弟现在在学习avr的单片机,是Atmega128型号的开发板,但是小弟看的书和一些示例程序,都是直接进入C的Main函数的了,都没有系统初始化的代码,用icc编译的时候说一些库文件没有,小弟想找一些关于系统初始化的代码,比如一开始进去C语言的汇编代码,网上找了好久都没有,哪位大侠能发给我一些这样的代码,一些初始化的汇编代码和头文件,小弟万分感激。 邮箱:rudyfly@163.com 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bjtea
2011-08-31
打赏
举报
回复
[Quote=引用 7 楼 rudyfly 的回复:]
引用 6 楼 floodever 的回复:
你说的是启动文件汇编代码吧,编译工程里是有的,要看懂的话需要看编译器手册逐条理解就好了。
关键还是做个工程,跑起来,慢慢去理解汇编,当然一般还有各链接文件也比较关键,从现象到本质么。
对对对,我就是想学习这个,但是我不知道哪里有?
[/Quote]
开发板的资源情况未知,开发商也许做了点初始化的工作,但是这些都不难,甚至简单。
一般使用AVR单片机都是使用裸机,例如MEGA16/32等,所有的初始化都是在main()之后做的;做法就是根据硬件设计的情况,按照CPU手册写寄存器的初始化,20行左右就搞定了。完全不涉及汇编。
rudyfly
2011-08-31
打赏
举报
回复
[Quote=引用 6 楼 floodever 的回复:]
你说的是启动文件汇编代码吧,编译工程里是有的,要看懂的话需要看编译器手册逐条理解就好了。
关键还是做个工程,跑起来,慢慢去理解汇编,当然一般还有各链接文件也比较关键,从现象到本质么。
[/Quote]
对对对,我就是想学习这个,但是我不知道哪里有?
rudyfly
2011-08-30
打赏
举报
回复
[Quote=引用 3 楼 bjtea 的回复:]
初学的基本诀窍是:
找到安装系统后的DEMO例子目录,先复制一份备份,然后,挨个使用原来的例子练手。
即使自己写新程序文件,也可以充分利用原例子。
例如,利用原来的工程文件,原例子的开始部分(包括包含文件,寄存器定义)等等。
[/Quote]
就是原来的工程例子没有的,不是很多硬件初始化的时候,有一段汇编代码的初始化吗?在哪有找到。
rudyfly
2011-08-30
打赏
举报
回复
[Quote=引用 2 楼 techenliu 的回复:]
估计不是用icc库文件没有的缘故,在初次用ICCAVR的时候很多初学者都习惯犯一个错误,那就是没有在ICCAVR环境中设置芯片的型号,导致编译时出现错误。还有一个错误就是没有选择ICCAVR对应的库函数的绝对路径。从你出的错误来看,应该是没有设置编译用到的库的绝对路径,或是设置的路径错误
[/Quote]
不是你说的这个意思,我是想知道在程序进入main函数前,做了哪些工作,比如系统时钟初始化是怎么实现的等等,这样的代码在哪里有找到,我看ICC编译器就直接进入了main函数就可以了。
bjtea
2011-08-30
打赏
举报
回复
初学的基本诀窍是:
找到安装系统后的DEMO例子目录,先复制一份备份,然后,挨个使用原来的例子练手。
即使自己写新程序文件,也可以充分利用原例子。
例如,利用原来的工程文件,原例子的开始部分(包括包含文件,寄存器定义)等等。
floodever
2011-08-30
打赏
举报
回复
你说的是启动文件汇编代码吧,编译工程里是有的,要看懂的话需要看编译器手册逐条理解就好了。
关键还是做个工程,跑起来,慢慢去理解汇编,当然一般还有各链接文件也比较关键,从现象到本质么。
付宇利
2011-08-29
打赏
举报
回复
估计不是用icc库文件没有的缘故,在初次用ICCAVR的时候很多初学者都习惯犯一个错误,那就是没有在ICCAVR环境中设置芯片的型号,导致编译时出现错误。还有一个错误就是没有选择ICCAVR对应的库函数的绝对路径。从你出的错误来看,应该是没有设置编译用到的库的绝对路径,或是设置的路径错误
nandou
2011-08-29
打赏
举报
回复
还是先看看编译器的资料吧。
AVR
单片机简单介绍(基于
atmega
128
)
本文主要内容是
AVR
单片机(基于
atmega
128
)的简单介绍,流水灯的程序编写。注意:每个板的电路图可能不同,但是原理是一样的。
ATmega
16
开发板
教程(8)——ADC
9、ADC 在将ADC之前,先聊聊其前因后果——由于计算机在自动控制、检测以及其他领域广泛应用数字电子技术,而大自然的信号全是模拟信号,如果通过计算机保存自然信号呢?那么就需要ADC(模数转换器Analog-Digital Converter)来讲模拟信号转换为数字信号,这样才能存储到计算机中。 那么ADC是如何转换的呢? l首先对选定一个瞬间对模拟信号进行采样; l然后将值转换为数字量; l最后按照一定编码格式转换。 —> 一个模拟信号肯定是不能采样一个点的,而是许多点集合而成。当长
ATmega
16
开发板
教程(5)——外部中断
6、外部中断 这里主要编写外部中断0和1的边沿触发,通过LED状态显示。 外部中断0 外部中断我们要知道的是:①如何触发?上升沿、下降沿还是高低电平;②外部中断使能;③中断服务函数的编写。
AVR
提供了3个外部中断0/1/2,对应的Pin脚是PD2/PD3/PB2,其中外部中断0是所有中断中优先级最高,响应最快的。 ①MCUCR:SM2,SE,SM1,SM0,ISC11,ISC10,ISC01,ISC00 MCUCR寄存器的低2位用于控制INT0中断的触发方式,具体如下图: 这里我们选择
ATmega
16
开发板
教程(2)——KEY点灯
3、KEY点灯 KEY引脚的寄存器定义与LED相同,还是3个寄存器:DDRx、PORTx、PINx(具体介绍可参见LED点灯部分)。 DDRx:1-输出,0-输入。当配置为输入时,PORTx=1,上拉使能,PORTx=0,高组态,但要注意SDIOR的第三位引脚,用于禁止上拉,所以配置上拉时要注意,否则就是高组态。 图2- 2 SFIOR寄存器图 代码说明: Ø定义3个按键引脚寄存器的对应比特位,再次提示,通过下划线来取该寄存器的bit位。 Ø按键
初始化
,同时允许上拉 Ø通过按键扫
使用Atmel Studio开发Arduino的
ATmega
328P单片机
我们知道Arduino
开发板
常用的芯片是Atmel公司生产的
AVR
微控制器系列。最常见的是
ATmega
328P,被广泛用于Arduino Uno
开发板
。其他常用的
AVR
芯片包括
ATmega
2560和
ATmega
32U4。使用Arduino平台开发
AVR
的单片机非常方便。Arduino IDE提供了一个非常简洁、易于使用的开发环境,使编写和上传代码变得简单。它提供了一套简化的函数库和API,使开发者可以轻松地与
ATmega
328P的硬件进行交互,无需深入了解底层的寄存器操作。
单片机/工控
27,383
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章