久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

AVR 單片機 位操作

作者:未知   來源:本站原創   點擊數:  更新時間:2014年04月01日   【字體:

在匯編里面位造作用   SEI   PORTA   3,把PORTA的第三位置1 ,
在C里面,可以用&與|表達:
PORTA=PORTA|0x08,   簡寫為PORTA|=(0x08); 
PORTA=PORTB&(0xF7) 簡寫為PORTA&=0xF7

以上是對寄存器的某一位操作,當然也可以同時操作幾個位, |0x0F ,則低四位置1;

 

在很多地方,如ATMEL的文檔里我們會看到像TCCR1A|=(1<<COM1A0);//A比較匹配,

這樣的操作,這是怎么回事呢?  

首先要知道<<   ,>>的意思,這是左移,右移操作,(A<<3)是把A的二進制數向左移3位,即乘以2的三次方.

COM1A0是TCCR1A的第6位,這是ATMEL給TCCR1A寄存器第6位取的名字,   在ICCAVR編譯器的頭文件iom16v.h里可以找到這樣的定義"#define OCR1A0    6"   ,所以TCCR1A|=(1<<OCR1A0)的意思是把TCCR1A寄存器的第6位置1, 如果TCCR1A|=(1<<OCR1A0)|(1<<WGM10),那么WGM10同時也被置1;

而TCCR1A&=~(1<<OCR1A0)把第6位清零.   之所以我們要這樣寫而不寫作TCCR1A|=0x40我想一是便于記憶,只記每一位的名字,不記在哪位,這樣不容易錯,便于對照DATAsheet檢查程序.此外還更好移植,從一個系列的一個單片機到另一個單片機,只要控制某功能的位的名字不變,例如OCR1A0不管在哪個位置,此語句都實現OCR1A0置一的功能.

以上是某一個或幾個位置一或清零操作,當然可以直接賦值,例如PORTA=0X0F,則是把低四位置1,高四位清零,這樣看起來最簡單但是對于我們想要改變某些位而不影響其它位的場合是不行的,例如1602液晶操作E和RS,還有數據等等,有嚴格的時間順序,彼此要獨立,按4data線統統接到PORTA,則無法用=直接賦值.

 

ICCAVR 的macros.h里定義了一些有用的宏,如SEI(),其實是"asm("SEI") ",    此外還有CLI(),NOP()   等等,大家可以去看看,順便說說,ICCAVR嵌入匯編的格式是asm("匯編指令");

C 里面我們把一些宏定義,函數的聲明等寫到.h頭文件,而.c則是函數具體實現,當程序比較大時可以把一般函數和main函數分開,一起ADD到Project里面,便于管理.

 

ICCAVR里面的中斷用#pragma interrupt_handler INTTERRUPT_NAME:INTERRUPT_NUM,         INTERRUPT_NAME是自己取的中斷函數名,

INTERRPT_NUM是所選中斷的中斷號,在DATAsheet里有..在這之后就可以寫自己的中斷函數體了.

 

在嵌入式的C程序編寫里邊,盡量少用float,double等等數據類型,可以用整數運算,到最后一步再除以10的多少次方得到所要的數.此外像sin,   log這樣的高級函數,雖然C編譯器自動給你生成,不想匯編那樣自己用加減移位來編寫,但是對于這樣的函數,C編譯器會比較大的代碼,所以盡量少用.除法運算若被除數是2的次方,可以用移位操作代替.

關閉窗口

相關文章

主站蜘蛛池模板: 欧美精品一区在线发布 | 成人精品一区二区三区 | 天天干视频在线 | 99爱在线免费观看 | 日韩av免费在线观看 | 亚洲97| 久久久久国产一区二区三区四区 | 黄色片视频网站 | 亚洲欧美一区二区三区情侣bbw | 一区二区三区电影在线观看 | 精品视频在线播放 | 久久小视频 | 狠狠干天天干 | 久久久一二三区 | 91精品国产综合久久久久久 | 美女张开腿露出尿口 | 国产精品一区二区三区在线播放 | 91精品免费视频 | 99精品在线| 中文字字幕在线中文乱码范文 | 日本激情一区二区 | 精品一区二区久久久久久久网精 | 久久人人爽人人爽人人片av免费 | 国产网站久久 | 欧美黄 片免费观看 | 天天影视亚洲综合网 | 亚洲欧美成人影院 | 日韩一二区 | 久久夜色精品国产 | 国产精品九九九 | 日韩一区二区三区视频 | 久久精品久久精品久久精品 | 国产在线中文字幕 | 久综合 | 亚洲国产成人精品女人久久久野战 | 中文av在线播放 | 自拍偷拍第1页 | 欧美极品在线播放 | 日日爱夜夜操 | av在线成人| а√中文在线8 |