日本ab视频-日本ab在线-日本a黄-日本a黄色片-国产亚洲精品第一综合linode-国产亚洲精品高清在线

新聞資訊
AVR像51一樣位操作 GCC IAR ICCAVR
2010-09-19


C 語言本身有較強的位處理功能。但在控制領域有時經常需要控制某一個二進制位為此在MCS-51 的C 語言中,如KEIL51 擴充了兩個數據類型bit 和sbit。前者可以在MCS-51 的位尋址區進行分配而后者只能定義為可位尋址的特殊功能寄存器SFR 中的某一位這兩個擴充為MCS-51 應用C 語言編程帶來很大的方便

相對于51系列單片機,AVR單片機的位操作比較麻煩。在支持AVR的眾多C語言中,除了CodeVisionAVR C 可以像C51一樣直接使用位變量,其他語言如iccAVR,IAR icc90,avrgcc等均沒有定義。當然也可以使用一定方法實現,但在很多情況下它使編譯器產生繁復的代碼。
   本文介紹如何用位域(BitField)來訪問單片機寄存器的某一位,并且使產生的代碼相當緊湊、高效。
   請看下列代碼

/*  高效率的位操作,使用位域(BitFileds)。
    在 IAR icc90 和avrgcc 下編譯通過。
     
     張磊 浙江林學院163#
     Zhang_lei@cnnb.net
     USR.CN整理者注:這種寫法不知最初出自誰手,但是筆者最早看到是在傻孩子(Gorgon Meducer)的文章中。
*/

// 這是avrgcc;如是其它編譯器,請修改。
#include <avr/io.h>

// 定義一個寄存器(Register)或端口(Port)的八個位
typedef struct _bit_struct  
{
    unsigned char bit0 : 1 ;
    unsigned char bit1 : 1 ;
    unsigned char bit2 : 1 ;
    unsigned char bit3 : 1 ;
    unsigned char bit4 : 1 ;
    unsigned char bit5 : 1 ;
    unsigned char bit6 : 1 ;
    unsigned char bit7 : 1 ;
}bit_field;

//定義一個宏,用來得到每一位的值
#define GET_BITFIELD(addr) (*((volatile  bit_field *) (addr)))

//定義寄存器或端口的地址(一般已經包含在頭文件中了,本步可不做
//  #define PORTB  0x38
//  #define PINB      0x36

//定義每一個位
#define LED GET_BITFIELD(PORTB).bit0
#define BUTTON  GET_BITFIELD(PINB).bit7

//延時函數
void delay(unsigned int x)
{
   unsigned char i;
   unsigned int  j;
   for (i=0; i<255; i++)     
           for(j=0; j }
    
int main( void )
{
      //配置PB0為輸出,PB7為輸入
   outp(0x41,DDRB);            

while(1) // 閃爍PB0                      
   {
     if( 0 == BUTTON )
       (
         LED=0;   //低電平,LED開
         delay(1000);
         LED=1;   //高電平,LED關
         delay(1000);
       }
    else if( 1==BUTTON )
       {
        LED=1;        //否則LED關           
       }
   }
}


關注有人微信公眾號
了解更多信息

主站蜘蛛池模板: 2021久久伊人精品中文字幕有 | 99热婷婷| 毛片资源 | 麻豆画精品传媒2021直接看 | 国产va免费精品 | 欧美中文字幕在线播放 | 欧美一区二区三区在线可观看 | 成年女人a毛片免费视频 | 国产精品1024在线永久免费 | 亚洲精品手机在线观看 | 99热热久久这里只有精品8 | 国产成人自产拍免费视频 | 岛国免费大片 | 日本xxxxx高清免费观看 | 色花堂国产精品第一页 | 99久久伊人精品波多野结衣 | 善良朋友的妻子在线观看 | 欧美一区a | 激情 婷婷| 婷婷丁香在线视频 | 99久久国内精品成人免费 | 亚洲香蕉在线视频 | 色花堂中文字幕98堂网址 | 一区二区三区四区日韩 | 久久成人亚洲香蕉草草 | 一级毛片免费一级直接观看 | 成人在线视频免费看 | 久久99国产精品二区不卡 | 日日日日日日日 | 亚洲欧美一区二区三区在饯 | 日本高清www| 国产成人久久精品一区二区三区 | 成人免费黄色 | 岛国在线免费 | 在线国产一区二区三区 | 国产九九精品视频 | 成人午夜小视频手机在线看 | 亚洲欧美综合日韩字幕v在线 | 九九热九九 | 一级成人 理伦片 | 久久国产精品高清一区二区三区 |