51单片机 01 LED

一、点亮一个LED

在STC-ISP中单片机型号选择 STC89C52RC/LE52RC;如果没有找到hex文件(在objects文件夹下),在keil中options for target-output- 勾选 create hex file。

如果要修改编程 :重新编译-下载/编程-单片机重新启动

cs 复制代码
#include <REGX52.H>
void main()
{
	P2=0xFE;   //1111 1110   注意是大写P
    // P2=0x55; 间隔亮LED小灯
	while(1)
	{
		
	}
}

二、LED闪烁

这里我的keil中我STC database出现了于是我就选了STC89C52RC。

RC后缀单片机的系统频率是 11.0592mhz

cs 复制代码
#include <STC89C5xRC.H>
#include <INTRINS.H>

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_(); // need .h file
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main(){
	while(1){
		P2=0xFE;
		Delay500ms();
		P2=0xFF;
		Delay500ms();
	}
}

三、LED 流水灯

LED和蜂鸣器共用P2引脚,所以会响(正常现象)

cs 复制代码
#include <STC89C5xRC.H>
void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	// _nop_(); // can delete this sentense
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	while(1)
	{
		P2=0xFE;
		Delay500ms();
		P2=0xFD;
		Delay500ms();
		P2=0xFB;
		Delay500ms();
		P2=0xF7;
		Delay500ms();
		P2=0xEF;
		Delay500ms();
		P2=0xDF;
		Delay500ms();
		P2=0xBF;
		Delay500ms();
		P2=0x7F;
		Delay500ms();
	}
}

四、流水灯代码优化版

unsigned char: 适用于 8 位数据(如 P2 寄存器),内存占用小,与硬件匹配度高。

注意在 delay 函数中选择的值是500,所以要用unsigned int。

左移运算符 << 会将二进制数向左移动一位,右边空出的位用 0 填充。

按位或运算符 | 会将两个二进制数的每一位进行或运算。|0x01:将最低位置1。

cs 复制代码
#include <STC89C5xRC.H>
void Delayms(unsigned int x)		//@11.0592MHz
{
	unsigned char i, j;
	while(x)
	{
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
		x--;
	}
}


void main()
{
	unsigned char pattern =0xFE;
	while(1)
	{
		P2=pattern;
		Delayms(500);
		pattern=(pattern<<1)|0x01; //() is more distinct
		if(pattern==0xFF) pattern=0xFE;
	}
}

C51数据类型

相关推荐
清风6666667 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
azwsm8 小时前
电路元器件和GPIO控制器
单片机·嵌入式硬件
kebidaixu11 小时前
FreeRTOS 移植到 STM32F407VETX 记录(一)
stm32·单片机·嵌入式硬件
CSDN官方博客12 小时前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
半条-咸鱼12 小时前
【INACCESSIBLE_BOOT_DEVICE】安装 Config Tool 后 Windows 蓝屏,最终通过 VMware 虚拟机解决
windows·stm32·vmware·芯片
点灯小铭12 小时前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
云栖梦泽13 小时前
玩转RK3506SDK
linux·嵌入式硬件
数智工坊14 小时前
机器人四大主控板系统分层选型指南:树莓派、ESP32、STM32与Arduino的能力边界与实战定位
stm32·嵌入式硬件·机器人
某林21215 小时前
跨越底层与AI的鸿沟:ROS2+多模态大模型(Qwen-VL)机器人全链路排障实录
人工智能·stm32·机器人·人机交互·ros2·技术复盘
进击的小头15 小时前
第8篇:IGBT 从零到精通:核心原理、关键参数、选型指南与工业级应用要点
经验分享·嵌入式硬件·学习