历史上的今天
今天是:2025年02月14日(星期五)
2020年02月14日 | AVR单片机ICCAVR应用的一些小技巧
2020-02-14 来源:eefocus
1.在汇编里面位造作用SEIPORTA3,把PORTA的第三位置1,
在C里面,可以用&与|表达:
PORTA=PORTA|0x08,简写为PORTA|=(0x08);
PORTA=PORTB&(0xF7)简写为PORTA&=0xF7
以上是对寄存器的某一位操作,当然也可以同时操作几个位,|0x0F,则低四位置1;
在很多地方,如ATMEL的文档里我们会看到像TCCR1A|=(1< 首先要知道<<,>>的意思,这是左移,右移操作,(A<<3)是把A的二进制数向左移3位,即乘以2的三次方. COM1A0是TCCR1A的第6位,这是ATMEL给TCCR1A寄存器第6位取的名字,在ICCAVR编译器的头文件iom16v.h里可以找到这样的定义"#defineOCR1A06",所以TCCR1A|=(1< 2.ICCAVR的macros.h里定义了一些有用的宏,如SEI(),其实是"asm("SEI")",此外还有CLI(),NOP()等等,大家可以去看看,顺便说说,ICCAVR嵌入汇编的格式是asm("汇编指令"); C里面我们把一些宏定义,函数的声明等写到.h头文件,而.c则是函数具体实现,当程序比较大时可以把一般函数和main函数分开,一起ADD到Project里面,便于管理. 3.ICCAVR里面的中断用#pragmainterrupt_handlerINTTERRUPT_NAME:INTERRUPT_NUM,INTERRUPT_NAME是自己取的中断函数名, INTERRPT_NUM是所选中断的中断号,在DATAsheet里有..在这之后就可以写自己的中断函数体了. 4.在嵌入式的C程序编写里边,尽量少用float,double等等数据类型,可以用整数运算,到最后一步再除以10的多少次方得到所要的数.此外像sin,log这样的高级函数,虽然C编译器自动给你生成,不想汇编那样自己用加减移位来编写,但是对于这样的函数,C编译器会比较大的代码,所以尽量少用.除法运算若被除数是2的次方,可以用移位操作代替. 以上是我个人感觉写C时要注意的问题,希望对初写C的人有一些帮助
史海拾趣
|
据中国半导体协会,截至2005年,中国车用芯片供应能力是零。中国汽车产量已接近600万辆,成为世界第三汽车大国,发展速度居世界第一。IC Insight的数据显示,全球平均每辆汽车中的电子器件价值从1990年的672美元提升至2004年的2132美元。预计2010年 ...… 查看全部问答> |
|
下面我就介绍一下本人一年来对主板理解程度.说得不好请大家多多指点: 首先在做图之前应对一些重要信号进行Space设置和一些线宽设置,如果客没有Layoutguaid,这就要求我们自已要有这方面的经验,,一般情况下我们要注意 ...… 查看全部问答> |
|
Google将推Google Chrome网络浏览器 https://bbs.eeworld.com.cn/thread-65318-1-1.html Chrome 向微软IE发起挑战 https://bbs.eeworld.com.cn/thread-65320-1-1.html Chrome渲染引擎同Safari 正开发Linux和MAC版 https://bbs.eeworld.com.cn/ ...… 查看全部问答> |
|
直接在灯头上使用AC电源的照明灯具十分需要应用电路简洁、使用成本低的AC/DC恒流源驱动IC。目前使用的驱动IC大多是从开关电源转用过来的反激式恒流驱动方案,采用隔离降压原理。分成初级侧反馈控制和次级侧反馈控制二类应用,次级侧反馈控制系统精 ...… 查看全部问答> |
|
这个也不知道发在哪个小论坛,姑且就在这儿吧,请问有遇到过这个问题的吗? 请问: 对S3C2410开发板进行引导程序烧录时, 出现 welcome to minicom 2.00.0 OPTIONS........ PRESS CTRL-A Z for help on special keys 不管烧录的是VIVI , ...… 查看全部问答> |
|
我想在LRESULT CMyDlg ::OnEraseBkgnd ( HDC hdc ) 中显示几张图片如果用 dcMem.SelectBitmap ( bmpBackground); buffer.BitBlt(0,0,rc.Width(),rc.Height(),dcMem,0,0,SRCCOPY ); 一张一张显示会出现图片闪烁,所以我想先画在一个缓存CDC中, ...… 查看全部问答> |
|
我有块智原的arm9开发板,启动信息如下: Uncompressing Linux............................................................ done, booting the kernel. Linux version 2.4.19-rmk4 (root@Sun) (gcc version 2.95.3 20010315 (release)) #13&nb ...… 查看全部问答> |




