51单片机实验课一

实验任务一:实现控制8个发光管的亮(灭)

复制代码
#include <REGX52.H>
void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms)
	{
		xms--;
	
		i = 12;
		j = 169;
	do
	{
		while (--j);
	} while (--i);
	}	
}
void main()
{
	while(1)
	{
		P2=0;//八个LED灯全亮
		Delay1ms(100);//延时100ms
		P2=1;//八个LED灯全灭
		Delay1ms(100);
	}
}

实验任务二:实现8位流水灯的效果

实验现象单片机从P2_0------P2_7逐个点亮LED(始终只有一个亮,呈现LED流水灯的形式)

直到P2_7的LED灯点亮之后再熄灭,P2_0的LED灯又点亮,如此循环往复

复制代码
#include <REGX52.H>
unsigned char i;
void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	while(xms)
	{
		xms--;
	
		i = 12;
		j = 169;
	do
	{
		while (--j);
	} while (--i);
	}
}
void main()
{
	P2=0xFE;
	while(1)
	{   
		for(i=0;i<8;i++)
		{
		Delay1ms(100);
		P2=P2<<1;
		P2=P2|0x01;
		Delay1ms(100);
	    }
		P2=0xFE;
	}
}

程序讲解:

在for循环中,让流水灯的程序循环八次

P2=P2<<1;

因为LED灯为共阳极,所以为低电平点亮,我们将P2端口数值左移一位,"<<"表示左移,"1"为移动的位数

P2=P2|0x01;

将P2端口的数值(8位)与00000001进行或运算,即给P2端口最低位补1

最后,P2=0XFE,让P2等于11111110,重新开始新一轮循环

相关推荐
redaijufeng20 分钟前
stm32实现串口打印输出_stm32串口打印
stm32·单片机·嵌入式硬件
黑白园20 分钟前
STM32CubeIDE配置FreeRTOS及Demo验证
stm32·单片机·嵌入式硬件
iCxhust39 分钟前
8086 汇编位测试使用方法
汇编·单片机·嵌入式硬件·微机原理·8088单板机
SUNNYSPY0011 小时前
AO3404-ASEMI锂电池保护(BMS)专用AO3404
单片机
2601_958352901 小时前
双麦 DSP 音频模块实战:一文梳理 A-68 在全行业场景的声学解决方案与落地要点
前端·嵌入式硬件·音视频·语音识别·降噪消回音·音频处理模块
H__Rick2 小时前
C51学习-DAY6
单片机·嵌入式硬件·学习
西城微科方案开发2 小时前
HC89F0531-SSOP24增强型8位单片机功能特性全面解析
单片机·嵌入式硬件
崇山峻岭之间2 小时前
单片机步进电机梯形S形加减速实验
单片机·嵌入式硬件
一路往蓝-Anbo3 小时前
第四篇:PWM 输出与驱动 —— 能量控制的艺术与功率保护
stm32·单片机·嵌入式硬件·模拟电子·硬件设计
布子麟3 小时前
NodeMcu(ESP8266)之WIFI基础应用 +AT透传
单片机·嵌入式硬件