沧浪 发表于 2018-11-23 12:35 set=i>>7是不是相当于00010100 右边的7位0010100给移走了,只剩最左边的0位,然后把最左边的0赋值给了ser? |
a66301208a 发表于 2018-11-23 11:02 直接用ser=I,这是把I的最低位给了ser,但是,他应该是从I的最高位开始发送的,所以就不能直接赋值了 |
a66301208a 发表于 2018-11-23 11:04 ser应该是一个io口吧,他只能能接收一个比特位 |
phang 发表于 2018-11-23 09:27 ser是接收字节00010100的最高位,还是只能接收一个位? |
沧浪 发表于 2018-11-22 22:58 有一点点明白了,不过为什么要用set=i>>7,直接用ser=i不可以吗?直接用set=i不正好74h595的ser不就直接接收00010100的左边第一个0吗?第二次循环00101000的第二位,这样依次循环。 |
你是不是忘了“ i = ser;”??? 因为没有“ i = ser ;” 现在程序是 i=0x14; i<<=1; ( i = 0x28 , 即0010 1000,是不是4、6排亮??) |
i>>7是在编译器里面是先拷贝了一个I ,然后把这个拷贝的I右移的7位,最后把这个变动的值给了ser,而原来的i并没有变化,那么在I<<1位后则变成0010 1000,那么则是第4位和第6位亮喽 |