STM8L流水灯间隔1S

2019-07-19 21:06发布

本帖最后由 紫气东升 于 2016-8-26 09:35 编辑

/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/

#include <stm8l052c6.h>
void delay(unsigned int time);
void main(void)
{
    unsigned char i=0;
    PD_DDR=0x02;          //设置PD1为输出模式
    PD_CR1=0x02;          //设置PD1为推挽输出
    PD_CR2=0x02;          //设置PD1输出速率为16mhz
    PB_DDR=0x1e;          //设置PB1~PB4为输出模式
    PB_CR1=0x1e;          //设置PB1~PB4为推挽输出
    PB_CR2=0x1e;          //设置PB1~PB4输出速率为16mhz
    CLK_CKDIVR=0x07;      //对HSI进行128分频,16MHZ/128=125KHZ
    while(1)
    {
        PD_ODR=0xfd;        //PD1(红)灭
        switch(i)
        {
            case 0: PD_ODR=0xff;break;          //PD1(红)亮
            case 1: PB_ODR=0x02;break;         //PB1继电器启动
            case 2: PB_ODR=0x04;break;         //PB2继电器启动
            case 3: PB_ODR=0x08;break;         //PB3继电器启动
            case 4: PB_ODR=0x10;break;         //PB4继电器启动
        }
        delay(12500);
        i++;
        if(i==5)
        {
          i=0;
        }
    }
}
void delay(unsigned int time)
{
  while(time--);
}
继电器可以换成LED灯

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
操作系统
1楼-- · 2019-07-20 00:24
建议大循环中不要使用 像这样子的占用CPU 的 DELAY 来延时.不然.做不了复杂或者难度大的工程.
中断服务程序里面也建议不要使用.尤其时间大于10毫秒的,小于10毫秒的延时,勉强可以.

一周热门 更多>