标题:
74hc595程序中的这句话是什么意思?ser是怎么么等于1和0的,等于1 和0会怎么样
[打印本页]
作者:
董亚伟
时间:
2014-11-12 07:48
标题:
74hc595程序中的这句话是什么意思?ser是怎么么等于1和0的,等于1 和0会怎么样
#include<reg52.h>
#include<intrins.h>
int i;
sbit ser=P3^4; //(14脚)串行数据输入
sbit rclk=P3^5; //(12脚)并行输出控制
sbit srclk=P3^6; //(11脚)移位时钟控制
void hc595(unsigned char send)
{
unsigned char i;
rclk=0;
ser=0;
for(i=0;i<8;i++)
{
if((send<<i)&0x80)
{
ser=1;
}
else
{
ser=0;
}
srclk=0;
_nop_();
srclk=1;
}
rclk=0;
_nop_();
rclk=1;
}
void main()
{
hc595(0xfe);
for(i=0;i<20000;i++);
hc595(0xff);
for(i=0;i<20000;i++);
}
复制代码
作者:
dgahz
时间:
2014-11-12 08:11
ser接在P3^4,怎样操作P端口不用说了吧?假如接的是LED,怎样让它亮灭会吧!单片机上电后P口电平默认为高电平,只要你后续不操作它它永远为高电平。同时ser也是595的信号输入端,至于先给它低电平再送信号你就当是595的要求吧!
作者:
董亚伟
时间:
2014-11-12 21:17
if((send<<i)&0x80) 这里是什么判断语句,什么情况下它才等1或0
作者:
dgahz
时间:
2014-11-13 09:30
设send=10111111, 0x80化为二进制是10000000, 则(send<<1)&0x80=01111111&10000000=0; (send<<2)&0x80=11111100&10000000=1;
if条件判断语句,当被判断语句值为1或0时分别执行不同的相应操作。
作者:
skyhanfeng
时间:
2014-11-14 14:31
if((send<<i)&0x80)
{
ser=1;
}
else
{
ser=0;
}
应该改为
if(((send<<i)& 0x80) != 0) //左移i位后判断值是否为0,不等于0就输出1
{
ser=1;
}
else
{
ser=0;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1