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
|