利用51单片机控制LED灯(格式规范)

当管脚P1为低电平时,LED灯亮

#include "reg52.h"
void main(){
    P1 = 0xFE;//只有最低位亮
    TMOD = 0x01;//高四位为定时器中断1(为0表示没用),低四位为定时器中断0(1:方式1)
    TH0 = (65536-5000)/256;//5000以us为单位,此处为5ms;60536依次加一,直到65535时再加一则溢出,执行中断
    TL0 = (65536-5000)%256;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
    
    while(1);//c51语言中不可用true,只可用1
}
//中断函数无需在前面声明,也不用在主函数中调用它
unsigned char i = 0;//变量定义一般写在外面
void LED_Light() interrupt 1{//1:定时器中断1;0:外部中断1;2:外部中断2;3:定时器中断2;4:串行口中断
    i++;
    TH0 = (65536-5000)/256;//重新赋初值
    TL0 = (65536-5000)%256;
    if(i==100){//5ms中断一次,当中断100次时,使流水灯发生变化
            P1 = ~P1;
            P1 = P1<<1;//左移一位
            P1 = ~P1;
            i = 0;//LED灯每变化一次,使i重新从0开始计数,每中断100次改变一次
    }

}

注释:51单片机

   2个8位计数器(16位)方式1(最常用);方式3:常用来产生波形(波特率),用于蓝牙配对

方式1:

    16位:高八位TH,低八位TL,由于晶振11.0592MHz,大约为12MHz。

    由于12个时钟震荡周期=1个机器周期,故一个机器周期1us


程序设计完成后写到存储器中,在单片机运行时程序只需从存储器中读取出来运行。用来存放程序的存储器,我们称之为程序存储器(只读存储器),简称ROM。而在单片机运行时,数据将随着程序的运行发生变化,我们将存放数据的存储器称为数据存储器(随机存储器),简称RAM。   单片机的存储器又可分为片内和片外存储器。片内存储器是在单片机内部的存储器,通常容量有限。当单片机程序很大,同时单片机运行时的数据较大,片内存储器容量不够,就需要对单片机扩展外部存储器,这就是片外存储器。   综上所述,51单片机有两种存储器:程序存储器和数据存储器。51单片机同时拥有4个存储空间(物理结构上):片内ROM、片外ROM、片内RAM和片外RAM。图2-1所示为51单片机存储器地址空间,其中使用最频繁的是片内数据存储器,应重点掌握。   程序存储器 程序存储器用于存放用户程序、数据和表格等信息,其存储单元只能读不能写。51单片机程序存储器有16位地址,可寻址的范围为64KB,因此片外程序存储器最大容量为64KB,而片内程序存储器容量为4KB。程序存储器在物理结构上分为片内程序存储器和片外程序存储器两个部分,在逻辑结构上(即用户使用角度)为一个部分,采用同一指令(MOVC指令)进行数据读取,用外部引脚进行区分4KB空间使用的是片内程序存储器还是片外程序存储器。   对于8031单片机来说,它的内部没有ROM,因此,在实际使用时,必须对它扩展外部程序存储器,最大可扩展空间地址为64KB,此时8031单片机的端必须接地,强制CPU从外部程序存储器读取程序。对于内部有ROM的8051,8751,89C51,89S51等单片机,正常运行时,则需接电平,使CPU先读内部程序存储器中的程序,当PC值超过内部ROM的容量时,才会转而读外部程序存储器中的程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值