求大家帮我解答下注释当中的三个问题,谢谢
#include "led.h"
#include "Basic.h"
uint16 T_delay = 10;
void main(void){
P0SEL &= ~0x04;
P0DIR |= 0x04;
P0_2 = 0;
INIT_LED();
for( ;; ){
LEDprintf(LED1_ON,BYTE_5); //BYTE_5到底有什么作用?
Delay(T_delay);
LEDprintf(LED2_ON,BYTE_5);
Delay(T_delay);
LEDprintf(LED3_ON,BYTE_5);
Delay(T_delay);
……
}
}
void INIT_LED(void) //这个初始化led函数的作用是什么?
{
P1SEL &= ~0xFF;
P1DIR |= 0xFF;
P1 = 0;
}
void LEDprintf(unsigned char data,unsigned char byte)
{
unsigned char bits = 0;
unsigned char get_bit = 0x80;
P1 |= byte; //P1 |= byte的意义是什么?
RCK = LOW;
SRCK = LOW;
for(bits = 8;bits > 0;bits --)
{
if(data & get_bit)
SER = 1;
else
SER = 0;
SRCK = HIGH;
get_bit >>= 1;
SRCK = LOW;
}
RCK = HIGH;
}
//BYTE_5到底有什么作用?没看见定义 估计是5个字节
1.BYTE_5是选择硬件电路的流水灯,如果你能看到硬件电路的话BYTE_1-BYTE_4是选择4个数码管,这个函数LED_printf()第一个参数是亮哪一位灯,第二个参数是选择流水灯还是哪位数码管
2.初始化LED就是初始化控制LED的io口,要使用io口之前我们都要设置他的输入输出模式,上拉/下拉还是三态,通用还是外设,设置好了我们才能像操作51单片机一样使用它
3.第一个问是说BYTE_5是选择水灯的,那为什么可以这样实现呢,因为它通过一个芯片使得P1口的3 4 5 6 7位分别控制BYTE_1到BYTE_5,那我们怎么选择BYTE_5也就是流水灯呢,就是把P1_7置1就可以了也就是0X80,头文件有定义你可以看下BYTE_5是不是0x80
