2023-09-25 知识库►嵌入式 51单片机入门-点亮LED 初次接触51单片机,记录下第一个程序,LED跑马灯,源代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <reg52.h>//引入52系列单片机头文件//位定义,sbit 标识符 = 地址值sbit led1=P2^0;sbit led2=P2^1;sbit led3=P2^2;sbit led4=P2^3;sbit led5=P2^4;sbit led6=P2^5;sbit led7=P2^6;sbit led8=P2^7;//延迟函数,单位约10微秒,此处利用的是CPU处理的延时,并不准确//11.0952MHz测得执行时间为0.000009771593,约为9.771593微秒void delay(int us){ while(us--);//循环执行,递减}void main(){ while(1) { led1=0;//设置低电平点亮LED,断点开始时间0.00042318 delay(10000);//1秒为1000毫秒1000000微秒,此处为0.1秒,断点结束时间0.09813911 led1=1;//设置高电平熄灭LED delay(10000); led2=0; delay(10000); led2=1; delay(10000); led3=0; delay(10000); led3=1; delay(10000); led4=0; delay(10000); led4=1; delay(10000); led5=0; delay(10000); led5=1; delay(10000); led6=0; delay(10000); led6=1; delay(10000); led7=0; delay(10000); led7=1; delay(10000); led8=0; delay(10000); led8=1; delay(10000); }} 改进版 123456789101112131415161718192021222324252627282930#include <reg52.h>//引入52系列单片机头文件#include <intrins.h>//引入intrins内置函数//延迟函数,单位约10微秒,此处利用的是CPU处理的延时,并不准确//11.0952MHz测得执行时间为0.000009771593,约为9.771593微秒void delay(unsigned int us){ while(us--);//循环执行,递减}void main(){ while(1) { int i; P2 = 0xfe;//二进制11111110,对应LED P2^7到0 for(i=0;i<7;i++) { P2 = _crol_(P2,1);//使LED 从11111110左移一位11111101 delay(5000);//1秒为1000毫秒1000000微秒,此处为0.05秒,断点结束时间0.09813911 } for(i=0;i<7;i++) { P2 = _cror_(P2,1);//使LED从上方代码执行后的01111111右移一位变为10111111 delay(5000); } }} 前一篇 将二进制可执行程序构建为deb包 后一篇 Debian x86_64平台搭建arm docker环境