×
嵌入式 > 技术百科 > 详情

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

发布时间:2020-06-20 发布时间:
|
使用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);
 }


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
SN74LVC04AD的技术参数