51单片机第一节~
本帖最后由 Mike_python小 于 2023-1-17 08:20 编辑51单片机第一节
点亮Led灯并实现跑马灯
首先我们要知道led灯的引脚(我这里是P2
0(低电平)控制led灯开启
1(高电平)控制led灯关闭
我也不知道为啥
我们总共有8个led灯,用二进制全部点亮的话就是这样:0000 0000
但是直接写上0000 0000会被机器识别成10进制
所以需要转换成16进制也就是0x00
P2 = 0x00
还需要在后面接上一个循环,来确保程序不会向下走
总体代码就是
#include <8052.h>
void main() {
P2 = 0x00;// 0000 0000
while (1)
{
}
}
接下来就是烧录了
使用
ls /dev/tty.wchusbser*
指令查看端口~
然后切换至程序文件夹
sdcc main.c
使用sdcc编译
stcgal -P stc89 -p /dev/tty.wchusbserial11140 main.ihx
最后使用stcgal烧录进去就ok啦~
看效果:
OHHHHHHHHHHHHH!!
别问为啥数码管为啥也亮了,问就是冲突了
接下来就可以实现更伟大的操作~~~~跑马灯
在编写跑马灯的时候我发现了一个问题:无法使用Sleep啊!
然后我就自己编写了一个sleep函数.......
void Sleep(unsigned int xms)
{
unsigned char i, j;
while (xms)
{
i = 2;
j = 239;
do {
while (--j);
} while(--i);
xms--;
}
// _nop_();
}
接下来就是跑马灯的代码~
#include <8052.h>
// #include <intrins.h>
void Sleep(unsigned int xms)
{
unsigned char i, j;
while (xms)
{
i = 2;
j = 239;
do {
while (--j);
} while(--i);
xms--;
}
// _nop_();
}
void main() {
P2 = 0x00;// 1111 1110
// P2 = 0xFF
while (1)
{
P2 = 0xFE;
Sleep(1);
P2 = 0xFD;
Sleep(1);
P2 = 0xFB;
Sleep(1);
P2 = 0xF7;
Sleep(1);
P2 = 0xEF;
Sleep(1);
P2 = 0xDF;
Sleep(1);
P2 = 0xBF;
Sleep(1);
P2 = 0x7F;
Sleep(1);
}
}
是不是很简单!
需要注意的事项
sdcc于keil部分操作不一样,见下表
如解释错误,请指出
也可以到我的博客里看哦:https://cxwindlight.online/ 支持楼主!!! Python_tkinter 发表于 2023-1-17 07:53
楼主你能做我男朋友吗
{:5_92:} 哇!好想学学呀{:10_266:}
羡慕才华 高山 发表于 2023-1-17 08:36
哇!好想学学呀
羡慕才华
60多块说实话真不贵 高山 发表于 2023-1-17 08:36
哇!好想学学呀
羡慕才华
买个当新年礼物了{:10_256:} Mike_python小 发表于 2023-1-17 08:40
买个当新年礼物了
{:10_256:} 信息技术贴分享。
有学习兴趣 加油更下去~ 眼睛:我记住了!!!
脑子:什么玩意“唰”一声过去了 不二如是 发表于 2023-1-17 09:21
加油更下去~
动态数码管给我看懵了{:10_266:} 顶(虽然啊我看不懂) 如果不加 while (1) 循环会怎么样?是不是 main() 里的都执行完了就待机了? 虚无→与→飘渺 发表于 2023-1-17 18:25
如果不加 while (1) 循环会怎么样?是不是 main() 里的都执行完了就待机了?
是的,这只是一个简单的程序,所以加不加都一样,更高级的就不一样了 我以前玩arduino的时候一直有一个疑惑,比如说我想让一个灯A亮5分钟然后灭5分钟,循环,这样的话一般就是【灯A亮; delay5分钟; 灯A灭; delay5分钟;】,但是如果我想同时实现一个 “按住一个按钮灯B亮,松开灯B灭” 的功能,刚才的 delay5分钟 命令会让整个程序挂起,我灯B的功能就实现不了了,请问这样的问题应该怎么解决?
我当时第一反应是上多线程,但是这种小单片机都不支持多线程 虚无→与→飘渺 发表于 2023-1-18 23:06
我以前玩arduino的时候一直有一个疑惑,比如说我想让一个灯A亮5分钟然后灭5分钟,循环,这样的话一般就是【 ...
看我的第二节,里面有讲 Mike_python小 发表于 2023-1-19 07:49
看我的第二节,里面有讲
第二节是哪个?矩阵键盘,输入密码还是数码管? 虚无→与→飘渺 发表于 2023-1-19 17:48
第二节是哪个?矩阵键盘,输入密码还是数码管?
按照我发布的顺序,第二节是独立按键与矩阵键盘 楼主,你的博客进不去了
页:
[1]
2