单片机应用与项目实践(下)_第二课:模块化文件雏形

本文介绍了8051单片机如何进行LED灯的控制,通过实验1.2展示了如何将闪烁程序模块化,提出LED_ON、LED_OFF和LED.Toggle函数的概念。接着讨论了如何根据硬件特性调整函数实现,并引出了读写端口的基础知识,包括端口的复用功能、特殊功能寄存器SFR。在实验1.3和1.4中,探讨了如何实现端口状态的读写及位操作。
摘要由CSDN通过智能技术生成

概述

实验1.2

  • 编写LED0、LED2、LED5三个灯的闪烁程序。(假设8各led和P1口相连)
#include <reg51.h>
sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
sbit LED4 = P1^4;
sbit LED5 = P1^5;
sbit LED6 = P1^6;
sbit LED7 = P1^7;

void delay(unsigned int ms) 
{
    unsigned char i;

    while (ms--)
        for(i = 1; i <= 110;i++);  
    //for循环进入、退出一次,延时约1ms,来自经验值
}

void main()
{
    while (1)
    {
        LED0 = ~LED0;       //变量可以作为左值存在
        LED2 = ~LED2;
        LED5 = ~LED5;
        delay(1000);      //延时1000ms
    }
}

是否可以将上述程序中的某些部分精炼成一个个子函数呢?比如,Led_On(LED0), Led_Off(LED0),Led_Toggle(LED0)这些呢?可是这些函数的形参怎么定义呢?
void LED_On(bit led);这样可以了吗?大家可以试试看

#include <reg51.h>
#define LED0   0x01
#define LED1   0x02
#define LED2   0x04
#define LED3   0x08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值