随笔分类 -  AVR单片机

摘要:序: 以前一直用的是STC51 + 飞思卡尔xs128组合,简单的就用51写,复杂的用xs128,对于AVR、PIC、STM系列是只闻其声,不见其人。最近因为要做飞思卡尔电磁磁场发生器而开始第一次接触AVR,顿有相见恨晚之感。 简单点说,有内部上拉电阻,引脚30ma的拉电流和灌电流,内部硬件PWM和ADC等,而且价格也不贵,我正式决定用atmege8代替51。 对端口操作: AVR端口是真正的双向端口,不像51伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。 DDRn PORTn PINn 解释:n为端口号:ABCDE DDRn: 阅读全文
posted @ 2012-01-04 19:10 云说风轻 阅读(643) 评论(0) 推荐(0)
摘要:C语言“位运算”:“与&”运算:1×1=11×0=00×1=00×0=0“或|”运算: 1+1=1 1+0=1 0+1=1 0+0=0“异或^”运算:1^1=0 1^0=1 0^1=1 0^0=0设:PORTA==10110100 x=(0~7)PORTA &= ~(0x01<<x) x位置“0”PORTA |= (0x01<<x) x位置“1”PORTA^=(0x01<<x)x位置“取反”______________________________________C语言常识:逻辑“真”:非“0”, 逻 阅读全文
posted @ 2012-01-04 19:08 云说风轻 阅读(762) 评论(0) 推荐(0)
摘要:/*********************************************************** * 函数库说明:ATMEGE8 按键检测程序 * 版本: v1.0 * 修改: 庞辉 * 修改日期: 2011年08月01日 * ... 阅读全文
posted @ 2012-01-04 19:07 云说风轻 阅读(738) 评论(0) 推荐(0)
摘要:/*********************************************************** * 函数库说明:ATMEGE8 INT1中断程序 * 版本: v1.0 * 修改: 庞辉 * 修改日期: 2011年08月01日 * ... 阅读全文
posted @ 2012-01-04 19:06 云说风轻 阅读(1481) 评论(0) 推荐(0)
摘要:普通51 IO口 拉电流100ua 灌电流10maatmege8 IO口 拉电流20ma 灌电流 20ma今天又在焊的板子上加了一个蜂鸣器,IO口直接驱动,比悲剧的51还要加个三极管驱动强多了蜂鸣器果断很有远见的加到PWM口上去,到时可以放个音乐了 阅读全文
posted @ 2012-01-04 19:06 云说风轻 阅读(612) 评论(0) 推荐(0)
摘要:今天偶然的机会,因为定时器老是不对劲,而把晶振给拔了突然发现对程序的运行没有任何影响,这次我才想起来atmege8是不是有内部晶振哦。 一查果然。。。。。。修改的方法是改熔丝位 时钟源 启动延时 熔丝 外部时钟 6 CK + 0 ms CKSEL=0000 SUT="00" 外部时钟 6 CK + 4.1 ms CKSEL=0000 SUT="01" 外部时钟 6 CK + 65 ms CKSEL="0000" SUT="10"内部RC振荡1MHZ 6 CK + 0 ms CKSEL="0001" 阅读全文
posted @ 2012-01-04 19:05 云说风轻 阅读(2388) 评论(0) 推荐(0)
摘要:/*********************************************************** * 函数库说明:ATMEGE8 PWM * 版本: v1.0 * 修改: 庞辉 * 修改日期: 2011年08月01日 * ... 阅读全文
posted @ 2012-01-04 19:05 云说风轻 阅读(965) 评论(0) 推荐(0)
摘要:/*********************************************************** * 函数库说明:ATMEGE8 延迟库函数 * 版本: v1.0 * 修改: 庞辉 * 修改日期: 2011年08月02日 * ... 阅读全文
posted @ 2012-01-04 19:04 云说风轻 阅读(960) 评论(0) 推荐(0)
摘要:/***************************************************************** * 函数库说明:ATMEGA8 串口通信 * 版本: v1.0 * 修改: 庞辉 芜湖联大飞思卡尔工作室 * 修改日期: 2011年08月03日 * ... 阅读全文
posted @ 2012-01-04 19:03 云说风轻 阅读(5413) 评论(1) 推荐(0)
摘要:/***************************************************************** * 函数库说明:ATMEGA8 NOKIA 5110LCD 驱动 * 版本: v1.0 * 修改: 庞辉 芜湖联大飞思卡尔工作室 * 修改日期: 2011年08月03日 ... 阅读全文
posted @ 2012-01-04 19:01 云说风轻 阅读(1237) 评论(0) 推荐(0)
摘要:好吧,不得不承认,我使用飞思卡尔的XS128单片机已经非常之习惯了,结果一上手atmega8,最令我反感的就是atmega8不能对IO引脚进行操作,非要用些繁琐的位操作。我就不,我就要像飞思卡尔那样操作。。。 于是。。。。。。 把我写的下面这个头文件塞到winavr目录的include/avr中,并在io.h头文件的最后包含这个头文件。 嘿嘿,一切变得是那么的亲切与熟悉。。。。。。/*********************************************************** * 函数库说明:ATMEGE8 * 版本: v1.0 ... 阅读全文
posted @ 2012-01-04 18:59 云说风轻 阅读(1841) 评论(0) 推荐(0)
摘要:今天下午遇到了一个很无语的问题,算了,不提了,最后解决了。。。。。 总之下次一个可以编译的工程,在任意添加一个文件后不能编译了,那么请检查工程目录是否有中文。。。。。。。 阅读全文
posted @ 2012-01-04 18:58 云说风轻 阅读(305) 评论(0) 推荐(0)
摘要:/*********************************************************** * 函数库说明:ATMEGE8 AD模数转换 * 版本: v1.0 * 修改: 庞辉 * 修改日期: 2011年08月05日 * ... 阅读全文
posted @ 2012-01-04 18:54 云说风轻 阅读(812) 评论(0) 推荐(0)
摘要:在使用中还要注意的是:虽然IO端口的灌电流(IOL)在稳定的实验条件下,可以达到每路20mA(VCC=5V时),10mA(VCC=3V时),但必须遵从:TQFP及MLF封装1]所有端口的总和,不能超过400mA.2]端口A0-A7,G2,C3-C7的灌电流总和,不能超过300mA.3]端口C0-C2,G0-G1,D0-D7,XTAL2的灌电流总和,不能超过150mA.4]端口B0-B7,G3-G4,E0-E7的灌电流总和,不能超过150mA.5]端口F0-F7的灌电流总和,不能超过200mA.如果灌电流超出了上面的标准,端口的电压(VOL)就会超出规范值。端口不能保证在超出标准的灌电流下正常工 阅读全文
posted @ 2012-01-04 18:49 云说风轻 阅读(501) 评论(0) 推荐(0)
摘要:/*********************************************************** * 函数库说明:ATMEGE8 AD模数转换 * 版本: v1.0 * 修改: 庞辉 * 修改日期: 2011年08月06日 * ... 阅读全文
posted @ 2012-01-04 18:48 云说风轻 阅读(1938) 评论(2) 推荐(0)
摘要:/***************************************************************** * 函数库说明:ATMEGA8 NOKIA 12864LCD 驱动 * 版本: v1.02 * 修改: 庞辉 芜湖联大飞思卡尔工作室 * 修改日期: 2011年08月08日 * ... 阅读全文
posted @ 2012-01-04 18:47 云说风轻 阅读(2078) 评论(0) 推荐(0)
摘要:SARM空间是AVR单片机最重要的部分,所有的操作必须依赖该部分来完成。变量在SARM空间的存储模式有tiny,small,large 三种,也就是对应于__tiny, __near,__far三中存储属性。一旦选择为哪种存储模式,对应的数据默认属性也就确定了,但可以采用__tiny, __near,__far关键字来更改。 对于程序中的局部变量,编译器会自动处理的,我们也不可能加什么储存属性,但IAR提供了强大的外部变量定义。IAR编译器内部使用了部分工作寄存器,留给用户的只有R4-R15供12个寄存器供用户使用,要使用工作寄存器必须在工程选项里打开锁定选项。 例: 定义两个变量使用工作寄存 阅读全文
posted @ 2011-12-01 23:35 云说风轻 阅读(2211) 评论(0) 推荐(0)
摘要:1.扩展关键字:用于控制数据和指针 __eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放 __tinyflash, __flash, __farflash, __hugeflash 用于flash 存储空间, 控制数据存放,控制指针类型和存放 __ext_io, __io 用于I/O存储空间, 控制数据存放,控制指针类型和存放 __regvar 放置一个变量在工作寄存器中2.函数扩展关键字: __nearfunc __farfunc 用于控制数据存放,这组关键字必须在函数声明和定义的时候指定 __interrupt. 关键字控制函数的类型。这组关键字必须在函数声明. 阅读全文
posted @ 2011-12-01 23:23 云说风轻 阅读(5123) 评论(0) 推荐(0)
摘要:整型类型:bool 数据类型在C++语言里是默认支持的。如果你在C代码的头文件里包含stdbool.h, bool数据类型也可以使用在C语言里。也可以使用布尔值 false和 true。char型是无符号型还是有符号型,可以在工程设置中选择。浮点类型: 阅读全文
posted @ 2011-12-01 23:20 云说风轻 阅读(4153) 评论(0) 推荐(0)
摘要:Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement运算符两边都是volatile变量的警告这警告有意义.用volatile修饰的变量一般不直接参与运算,volatile就以为着这个变量在运算过程中有可能已经改变了例如:想计算a * b 要这样:volatile unsigned char a;volatile unsigned char b;unsigned char x,y;x = a;y = b;return (x * y);建议使用另外一个变量参 阅读全文
posted @ 2011-12-01 22:04 云说风轻 阅读(28926) 评论(0) 推荐(1)