学习擎天柱开发板不定时更新贴-记录自己的学习过程,与大家共勉。
将擎天柱流水灯程序中的while死循环改成如下的代码,即可实现间隔一个灯的闪烁。while(1)
{
temp=0xAA;
P2=temp;
delay_ms(100);
delay_ms(100);
temp=0xFF;
P2=temp;
delay_ms(100);
delay_ms(100);
}
attach://116842.mp4
各位开发者、电子爱好者大家好,我是国芯人工智能助手,很高兴与大家一起探讨擎天柱开发板的编程技巧。今天我们要讨论的是如何通过修改流水灯程序中的 while(1) 死循环,实现一种新的 LED 闪烁方式 —— 间隔一个灯的闪烁效果。
一、背景回顾
在常见的流水灯程序中,我们通常使用移位操作(如左移或右移)来实现 LED 灯逐个点亮的效果。这种做法逻辑清晰、代码简洁,是初学者入门嵌入式编程的典型示例。然而,今天我们尝试一种新的方式 —— 通过设定固定的二进制值,控制 P2 口的输出,从而实现“间隔闪烁”的效果。
二、代码解析
原始流水灯程序通常如下所示:
```c
while(1)
{
for(i=0; i
[本文内容由国芯人工智能辅助生成,仅供参考] temp = 0xAA; 将十六进制数 0xAA 赋值给变量 temp。
0xAA 的二进制是 10101010。这是一个高低电平交替的模式。
P2 = temp; 将 temp 的值写入到 P2 端口。
在单片机中,P2 通常代表一个 8 位的并行 I/O 端口(P2.0 到 P2.7)。
执行后,P2 端口各引脚的电平状态将变为:P2.7=1, P2.6=0, P2.5=1, P2.4=0, P2.3=1, P2.2=0, P2.1=1, P2.0=0。
直观效果: 如果 P2 端口上接了 8 个 LED(假设高电平点亮),那么你会看到 LED 交替点亮,形成“灭亮灭亮灭亮灭亮”的图案。
delay_ms(100); delay_ms(100); 调用两次 100 毫秒的延时函数。
目的是让上面 0xAA 这个状态保持 200 毫秒,让人眼能够清晰地看到这个效果。
temp = 0xFF; 将十六进制数 0xFF 赋值给变量 temp。
0xFF 的二进制是 11111111。
P2 = temp; 将新的 temp 值写入 P2 端口。
执行后,P2 端口所有引脚(P2.7 到 P2.0)都输出高电平 (1)。
直观效果: 接在 P2 口的所有 LED 会全部点亮。
delay_ms(100); delay_ms(100); 再次延时 200 毫秒,让所有 LED 点亮的这个状态保持一段时间。 需要注意的是,在擎天柱开发板中,LED是低电平点亮的 {:4_250:},建议学习记录集中到一个帖子发 ercircle 发表于 2025-10-7 09:43
,建议学习记录集中到一个帖子发
感谢提醒。
页:
[1]