01.3LED-两个灯交替闪烁

文章展示了如何使用STC15系列单片机进行并口控制,包括通过sfr重定义特殊功能寄存器以及使用自定义毫秒延迟函数实现特定时序操作。在示例代码中,分别演示了位操作和整体端口操作来切换LED状态,并提供了适应不同型号单片机的延迟时间设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 

#include<stc15.h>

unsigned int i=0;

sbit LED1=P0^0;//定义特殊功能寄存器的位变量
sbit LED2=P0^1;

void main(void)
{
   P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序
    while(1)
    {
        LED1=0;LED2=1;
        for(i=0;i<65535;i++);
        LED1=1;LED2=0;
        for(i=0;i<65535;i++);
    } 
}

2.并口控制方式:使用到“sfr”重定义特殊功能寄存器

sfr LED = 0X80;

#include<stc15.h>

unsigned int i=0;
sfr LED=0X80;

void main(void)
{
	P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序
	while(1)
	{
		LED=0XFE;    //1111 1110
		for(i=0;i<65535;i++);
		LED=0XFD;    //1111 1101
		for(i=0;i<65535;i++);
	}
}

3.采用毫秒延迟函数:

void Delay_MS(unsigned int MS);

毫秒延迟子函数

void Delay_MS(unsigned int MS)   //MS为形参
{
    unsigned int i,j;
    for(i=0;i<MS;i++)
    {
        for(j=853;j>0;j--);
    }
}   

*#include<stc15.h>
/*
void IO_Init(void);//stc8H,stc32G需要用这个
*/
void Delay_MS(unsigned int MS);//函数声明
sfr LED=0X80;


void main(void)
{
    /*IO_Init(); //在主函数中执行到该语句时跳到子函数去*/
	P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序
	while(1)
	{
		LED=0XFE;
		Delay_MS(200);//运行到此条语句时,会跳到子函数,
		              //子函数执行完毕之后再进行下一条语句,此处200即为实参
		LED=0XFD;Delay_MS(200);
		
	}
}

void Delay_MS(unsigned int MS)   //MS为形参
{
	unsigned int i,j;
	for(i=0;i<MS;i++)
	{
		for(j=853;j>0;j--);//stc15设置为853,stc8H设置为1109,stc32G设置为427
	}
}      //实现200ms的延迟


/*void IO_Init(void)
{
	P0M0 = 0x00; 	P0M1 = 0x00; 			//IO初始化为准双向I/O模式,STC15F系列可以写
	P1M0 = 0x00; 	P1M1 = 0x00;			//IO初始化为准双向I/O模式,STC15F系列可不写
	P2M0 = 0x00; 	P2M1 = 0x00;			//IO初始化为准双向I/O模式,STC15F系列可不写
	P3M0 = 0x00; 	P3M1 = 0x00;			//IO初始化为准双向I/O模式,STC15F系列可不写
	P4M0 = 0x00; 	P4M1 = 0x00;			//IO初始化为准双向I/O模式,STC15F系列可不写
	P0=0XFF; P1=0XFF; P2=0XFF; P3=0XFF; P4=0XFF; P5=0XFF; //P0、P1、P2、P3、P4、P5输出为高电平	 STC15系列单片机可不写
}
*/
//stc8H,stc32G需要用这个

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值