打印
[AVR单片机]

AVR I/O口操作一点小经验

[复制链接]
4607|14
手机看帖
扫描二维码
随时随地手机跟帖
楼主
ATmega32L| | 2008-4-29 08:31 | 显示全部楼层 回帖奖励 |倒序浏览

看IAR:

看IAR:


#ifdef __IAR_SYSTEMS_ICC__
#define GET_IO_BITFIELD(addr)         (*(( __io volatile   bitfield  *)(addr))) 
#define __GET_IO_BIT(addr,b)        GET_IO_BITFIELD(addr).bit##b 
#define GET_IO_BIT(addr,b) __GET_IO_BIT(addr,b) 

#else 
#define GET_IO_BITFIELD(addr) GET_BITFIELD(addr) 
#define GET_IO_BIT(addr,b) GET_BIT(addr,b)
#endif


#define TEST_IO   GET_IO_BIT(&PORTB,PB0) 

看编译出来的汇编代码: 
  TEST_IO =1; 
        SBI     0x05, 0x00 


   TEST_IO =0; 
        CBI     0x05, 0x00 


 TEST_IO =!TEST_IO; 
        IN      R16, 0x05 
        SBRS    R16, 0 
        SBI     0x05, 0x00 
        SBRC    R16, 0 
        CBI     0x05, 0x00 

 TEST_IO =~TEST_IO; 
        IN      R16, 0x05 
        SBRS    R16, 0 
        SBI     0x05, 0x00 
        SBRC    R16, 0 
        CBI     0x05, 0x00 

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则