- 打卡等级:偶尔看看III
- 打卡总天数:34
- 最近打卡:2025-05-02 03:29:52
已绑定手机
中级会员
- 积分
- 335
|
背景介绍:
近期跟着Ai8051U的教学视频学习,用的是注册论坛会员时免费包邮的擎天柱核心板(32/8位Ai8051U-32K64的MCU)。
在做流水灯时出现问题,主要原因是自己是新手,基础知识与经验不足。
在帖子:“请教高手:擎天柱核心板-Ai8051U-32K64-实现流水灯程序为何显示有些乱?”有详细描述。
参考过国芯官网和论坛中的视频和代码,见到别人以各种方法实现流水灯,逐个点亮法,移位法,数组法等等,各有优势。
通过前几天对代码的学习,想到可以用一条语句实现流水灯,于是编写代码并在擎天柱核心板顺利实现。
思路:
代码尽可能简洁,逻辑上正确,能用一条语句实现就只用一条语句实现。
代码:
//一条语句的正向流水灯
//在擎天柱核心板(32位MCU Ai8051U-32K64)上实现
//作者:我心飞扬
//时间:2025年4月12日
#include "ai8051u.h"
void Delay500ms(void) //@40.000MHz
{
unsigned char data i = 76, j = 255, k = 241;
_nop_(); _nop_();
while(--i) {while(--j) {while(--k);};};
}
void main(void)
{
P2M0 = 0; P2M1 = 0;
while(1)
{
P2 = (0xff == P2) ? 0xfe : ~((~P2) << 1); //正向流水灯
Delay500ms();
}
}
总结:
程序逻辑功能的实现方法有多种,每种都有其优点,也有其不足。
掌握的方法多了才能游刃有余。
这也是从新手到高手要不断积累的过程。
借鉴着别的类别的工作经验,我正在积累MCU方面的知识与经验。
欢迎看到此贴的坛友针对文中代码内容发表意见。
欢迎坛友提出别的方法来实现流水灯,希望能看到更多的实现方法。
|
|