历史上的今天
返回首页

历史上的今天

今天是: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<而TCCR1A&=~(1<以上是某一个或几个位置一或清零操作,当然可以直接赋值,例如PORTA=0X0F,则是把低四位置1,高四位清零,这样看起来最简单但是对于我们想要改变某些位而不影响其它位的场合是不行的,例如1602液晶操作E和RS,还有数据等等,有严格的时间顺序,彼此要独立,按4data线统统接到PORTA,则无法用=直接赋值.


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的人有一些帮助

推荐阅读

史海拾趣

超音(CY)公司的发展小趣事

随着科技的不断进步,超音意识到技术创新对于公司发展的重要性。因此,公司加大了研发投入,积极引进高端人才,不断推出具有创新性和竞争力的产品。其中,超音的一款高端音响产品凭借其卓越的音质和精美的外观设计,在市场上获得了广泛的好评。此外,超音还积极与其他科技公司合作,共同研发新产品,不断拓宽产品线。

HTSEMI( Jin Yu Semiconductor )公司的发展小趣事

为了加速国际化进程,金宇半导体于2020年制定了详细的国际化战略。公司首先在欧洲设立了研发中心,以吸引更多国际顶尖人才加入。随后,金宇半导体又通过一系列并购整合动作,收购了多家在特定领域具有领先技术的海外企业。这些并购不仅增强了金宇半导体的技术实力和市场影响力,还为其在全球范围内的业务拓展提供了有力支持。通过国际化战略的实施,金宇半导体正逐步成为一家具有全球竞争力的半导体企业。

Glenair公司的发展小趣事
使用万用表等工具检查电路中的关键元件是否损坏或性能下降,如电压比较器、继电器、可控硅等。
Electro Technik Industries公司的发展小趣事

随着电子技术的快速发展,ETI意识到只有不断创新才能在竞争中立于不败之地。公司加大了对研发的投入,积极引进国内外先进技术,并鼓励员工提出创新性的想法。在一次偶然的实验中,ETI的研发团队成功研发出了一种具有高效能、低功耗特点的电子元器件,这一突破性的技术成果迅速获得了市场的认可,为ETI带来了可观的收益。

ABI Electronics公司的发展小趣事

ABI Electronics公司的起点可以追溯到其对电路板测试技术的深入研究。在创立初期,ABI便以开发出高精度、高效率的电路板故障检测仪为目标。通过对电路板测试技术的不断钻研和创新,ABI成功推出了一系列性能卓越的测试设备,这些设备不仅提高了电路板测试的准确性和效率,也极大地降低了测试成本,赢得了市场的广泛认可。

ELM [ELM Electronics]公司的发展小趣事

随着电子技术的快速发展,ELM意识到只有不断创新才能保持市场竞争力。因此,公司加大了研发投入,专注于新技术的研发和应用。经过数年的努力,ELM成功推出了一系列具有创新性和领先性的电子产品,如高性能的集成电路、先进的传感器等。这些产品的推出不仅丰富了ELM的产品线,也进一步提升了公司的市场地位。

问答坊 | AI 解惑

指点本土IC设计公司进军汽车电子的“四句箴言”

据中国半导体协会,截至2005年,中国车用芯片供应能力是零。中国汽车产量已接近600万辆,成为世界第三汽车大国,发展速度居世界第一。IC Insight的数据显示,全球平均每辆汽车中的电子器件价值从1990年的672美元提升至2004年的2132美元。预计2010年 ...…

查看全部问答>

实用模拟电路设计技术

实用模拟电路设计技术…

查看全部问答>

主板的各种类型信号的基本走线要求

下面我就介绍一下本人一年来对主板理解程度.说得不好请大家多多指点:       首先在做图之前应对一些重要信号进行Space设置和一些线宽设置,如果客没有Layoutguaid,这就要求我们自已要有这方面的经验,,一般情况下我们要注意 ...…

查看全部问答>

谷歌官方博客透露将推Chrome浏览器

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/DC恒流源驱动I

直接在灯头上使用AC电源的照明灯具十分需要应用电路简洁、使用成本低的AC/DC恒流源驱动IC。目前使用的驱动IC大多是从开关电源转用过来的反激式恒流驱动方案,采用隔离降压原理。分成初级侧反馈控制和次级侧反馈控制二类应用,次级侧反馈控制系统精 ...…

查看全部问答>

最近在做平台搭建,想问些问题

作为一个开发环境的搭建者,应该承担的工作有哪些呢,我有点不知道从何入手,导师并没有清楚的讲明白这个问题。…

查看全部问答>

新手提问,minicom

这个也不知道发在哪个小论坛,姑且就在这儿吧,请问有遇到过这个问题的吗? 请问: 对S3C2410开发板进行引导程序烧录时, 出现 welcome to minicom 2.00.0 OPTIONS........ PRESS CTRL-A Z for help on special keys 不管烧录的是VIVI , ...…

查看全部问答>

Wince双缓存问题(WTL)

我想在LRESULT CMyDlg ::OnEraseBkgnd ( HDC hdc ) 中显示几张图片如果用 dcMem.SelectBitmap ( bmpBackground); buffer.BitBlt(0,0,rc.Width(),rc.Height(),dcMem,0,0,SRCCOPY ); 一张一张显示会出现图片闪烁,所以我想先画在一个缓存CDC中, ...…

查看全部问答>

ARM9开发板启动信息的疑问?

我有块智原的arm9开发板,启动信息如下: Uncompressing Linux............................................................ done, booting the kernel. Linux version 2.4.19-rmk4 (root@Sun) (gcc version 2.95.3 20010315 (release)) #13&nb ...…

查看全部问答>

有那位ZLG的开发工程师想换工作

想找2名ZLG的兄弟来公司帮忙,有意向的,请发资料fatom.lee@wellida.com…

查看全部问答>