[AVR单片机] avr程序,高手看看啊!

[复制链接]
4440|14
 楼主| zhongmagic 发表于 2008-5-15 08:04 | 显示全部楼层 |阅读模式
#define        Q1_CLK        PB1
#define        Q2_CLK        PB2
#define        Q3_CLK        PB0
#define        CLK_PORT    PORTB
#define        Q_DATA      PORTD
void    write_display_data(uchar    Q1,uchar    Q2,uchar    Q3)
{    Q_DATA=0x00;
    cbi(CLK_PORT,Q1_CLK);
    _nop();
    sbi(CLK_PORT,Q1_CLK);
    Q_DATA=0X00;
    cbi(CLK_PORT,Q2_CLK);
    _nop();
    sbi(CLK_PORT,Q2_CLK);
    Q_DATA=Q3;
    cbi(CLK_PORT,Q3_CLK);
    _nop();
    sbi(CLK_PORT,Q3_CLK);
    Q_DATA=Q1;
    cbi(CLK_PORT,Q1_CLK);
    _nop();
    sbi(CLK_PORT,Q1_CLK);
    Q_DATA=Q2;
    cbi(CLK_PORT,Q2_CLK);
    _nop();
    sbi(CLK_PORT,Q2_CLK);
}
我不明白是cbi sbi什么意思
tjjack 发表于 2008-5-15 08:59 | 显示全部楼层

清零和置位

mxh0506 发表于 2008-5-15 12:55 | 显示全部楼层

clear bit 和 set bit

是GCC的程序?
 楼主| zhongmagic 发表于 2008-5-15 14:25 | 显示全部楼层
sbhpande 发表于 2008-5-15 16:04 | 显示全部楼层

是清零和置为

作用就相当于and、or
农民讲习所 发表于 2008-5-15 16:51 | 显示全部楼层

cbi(CLK_PORT,Q1_CLK); 等于 CLK_PORT &= ~( 1<
sbi(CLK_PORT,Q1_CLK); 等于 CLK_PORT |= ( 1<<Q1_CLK) );

生成的汇编代码是一样的。后者更安全,不能位操作的能按字节逻辑操作。

 楼主| zhongmagic 发表于 2008-5-15 21:41 | 显示全部楼层

谢谢哦

hotpower 发表于 2008-5-16 02:05 | 显示全部楼层

俺喜欢CLK_PORT |= ( 1<

shiyang800 发表于 2008-5-17 23:56 | 显示全部楼层

WinAVR的编程风格不错,里面可以学到不少东西!

gongdl1204 发表于 2008-5-19 20:30 | 显示全部楼层

请问( 1<
请问为什么 要像  1<<Q1_CLK这样写呢?
  我是个AVR的 初学者 。

ATmega32L 发表于 2008-5-19 20:40 | 显示全部楼层

俺喜欢CLK_PORT |= _BV(Q1_CLK);

俺喜欢CLK_PORT |= _BV(Q1_CLK);
smart_avr 发表于 2008-5-24 11:16 | 显示全部楼层

回复

CLK_PORT |= _BV(Q1_CLK);  请问这个语句中的 _BV(Q1_CLK);是什么意思啊?
是不是包含在那个头文件的,或者是函数啊?谢谢,刚刚学AVR 都快整晕头了。
zhilikeji 发表于 2008-5-24 16:31 | 显示全部楼层

楼上的,我可以回答你.

_BV(Q1_CLK) 相当于1<<(Q1_CLK); Q1_CLK 应该是个整数,如1-7
CLK_PORT |= _BV(Q1_CLK);
CLK_PORT是个端口,

就相当于PROTx |= 1<< Q1_CLK;
就是PROTx端口(不一定是端口,变量也可) Q1_CLK位置1; 其他位不变
qjy_dali 发表于 2008-5-24 16:58 | 显示全部楼层

CBI与SBI在AVR的汇编中就有

smart_avr 发表于 2008-5-26 15:53 | 显示全部楼层

谢谢

谢谢13楼的朋友的解答。
是不是这样个意思:1<<(Q1_CLK); 就是把1移动到Q1_CLK这个位,也就是把这个位置为1,再这个位和端口的值相或,1或1还是1,其他位不变,。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部