
c语言的单片机编程中的移位运算问题
#defineset_lcd_clklcd_kz|=(1<<clk)//置高#defineclr_lcd_clklcd_kz&=(~(1<<clk))//清0这两行程序中...
#define set_lcd_clk lcd_kz|=(1<<clk) //置高
#define clr_lcd_clk lcd_kz&=(~(1<<clk)) //清0
这两行程序中的移位运算为什么是 1<<clk ,而不是 clk<<1 或 clk>>1 ?? 展开
#define clr_lcd_clk lcd_kz&=(~(1<<clk)) //清0
这两行程序中的移位运算为什么是 1<<clk ,而不是 clk<<1 或 clk>>1 ?? 展开
3个回答
展开全部
看你写这两句,是两句宏定义.
lcd_kz是LCD的控制信号,是一个字节,而CLK占一个端口,也就是这一个字节的一位
在程序中可以找到CLK的具体值,是一个0-7的一个固定值,这个值的意思是CLK在这个lcd_kz字节中的第几位,第一句宏定义的意思就是把对应的CLK位置1。第二句宏定义的意思就是把对应的CLK位清零。
lcd_kz是LCD的控制信号,是一个字节,而CLK占一个端口,也就是这一个字节的一位
在程序中可以找到CLK的具体值,是一个0-7的一个固定值,这个值的意思是CLK在这个lcd_kz字节中的第几位,第一句宏定义的意思就是把对应的CLK位置1。第二句宏定义的意思就是把对应的CLK位清零。
展开全部
因为是要将1移动clk个字节的位,而不是将clk移动1个字节的位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1<<clk : 1左移clk个位置,如果clk = 3,1左移3位后变成00001000;置高
clk<<1 :clk左移1位,同上clk = 3(00000011),左移1位后00000110;数据运算;
clk<<1 :clk左移1位,同上clk = 3(00000011),左移1位后00000110;数据运算;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询