微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大家帮我解答下注释当中的三个问题,谢谢

求大家帮我解答下注释当中的三个问题,谢谢

时间:10-02 整理:3721RD 点击:

#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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top