瑞萨单片机论坛
直播中

伍拾柒

未满1年用户 103经验值
擅长:可编程逻辑 嵌入式技术 控制/MCU
私信 关注

【RA-Eco-RA2E1-48PIN-V1.0开发板试用】LED灯模拟二进制进位

LED灯模拟二进制进位实验

实验设计

通过RA-Eco-RA2E1-48PIN-V1.0开发板实现二进制数的进位模拟,利用板上的两个LED灯模拟二进制进位计数器。

  • L2表示最低位(二进制的第0位),L1表示高一位(二进制的第1位)。
  • 每当低位(LED0)出现“溢出”(从1翻转回0)时,高位(LED1)进位。
  • 二进制计数器的核心逻辑是从00(二进制的0)计数到11(二进制的3)。
  • 使用软件延时(或基于硬件定时器的延时)逐步递增计数值,将计数值的每一位通过GPIO状态对应映射到LED灯上。
  • LED0亮表示1,灭表示0;LED1同样遵循该规则。

实验实现

代码如下:

int a = 0;

while(1){

switch(a){
case 0:
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
                ++a;
                break;
case 1:
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
                ++a;
                break;
case 2:
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);

                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
                ++a;
                break;
case 3:
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
                R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
                a = 0;
                break;
        }

R_BSP_SoftwareDelay(1500, BSP_DELAY_UNITS_MILLISECONDS);

    }

实验结果

可以看到,LED灯按照我们预设的程序、预想的状态进行进位展示。

test_ra_1

更多回帖

发帖
×
20
完善资料,
赚取积分