首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM8的GPIO输出实验-点亮LED(软件延时)

STM8的GPIO输出实验-点亮LED(软件延时)

使用ST三合一体验套件中的STM8S体验系统板。 1、让板上的三个LED点亮。
试验程序如下:
#include "STM8S105C_S.h"
void GPIO_Init(void)
{
PD_DDR|=0x0D;//PD0、PD2、PD3为输出,其余保持原功能
PD_CR1|=0x0D;//对应位设置为推挽输出
//PD_CR1&=0xF2;//对应位设置为模拟开漏输出(不是真正开漏)

}
main()
{
GPIO_Init();

while (1)
{
  PD_ODR=0x0d;//PD0、PD2、PD3为输出1,LED亮  
}
}
实验效果图如下:

如果使用开漏输出,则不能使LED点亮。
2、让三个LED闪烁,程序如下:
#include "STM8S105C_S.h"
void GPIO_Init(void)
{
PD_DDR|=0x0D;//PD0、PD2、PD3为输出,其余保持原功能
PD_CR1|=0x0D;//对应位设置为推挽输出
//PD_CR1&=0xF2;//对应位设置为模拟开漏输出(不是真正开漏)

}
void Delay(unsigned int i)
{
unsigned int j;
while(i--)
{
  //for(j=0;j<10000;j++);
}
}
main()
{
GPIO_Init();
while (1)
{
  PD_ODR=0x0d;//PD0、PD2、PD3为输出1,LED亮
  Delay(60000);
  PD_ODR=0x00;
  Delay(60000);
}
}
       上述的延时使用软件延时来实现,在STVD软件中没有找到想C51那样可以软件仿真确定延时时间的方法,有知道的告诉我一声。
3、让三个LED逐次循环点亮,实现流水灯的效果。
        在上述程序的基础上在做修改即可。具体程序如下:
#include "STM8S105C_S.h"
void GPIO_Init(void)
{
PD_DDR|=0x0D;//PD0、PD2、PD3为输出,其余保持原功能
PD_CR1|=0x0D;//对应位设置为推挽输出
//PD_CR1&=0xF2;//对应位设置为模拟开漏输出(不是真正开漏)

}
void Delay(unsigned int i)
{
unsigned int j;
while(i--)
{
  //for(j=0;j<10000;j++);
}
}
main()
{
GPIO_Init();
while (1)
{
  PD_ODR=0x08;//PD0、PD2、PD3为输出1,LED亮
  Delay(60000);
  PD_ODR=0x04;
  Delay(60000);
  PD_ODR=0x01;
  Delay(60000);
}
}

关键字:STM8  GPIO输出  点亮LED  软件延时
返回列表