OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2447|回复: 1

STM8L流水灯间隔1S

[复制链接]

53

主题

167

帖子

0

精华

高级会员

Rank: 4

积分
839
金钱
839
注册时间
2016-8-23
在线时间
116 小时
发表于 2016-8-26 09:15:00 | 显示全部楼层 |阅读模式
本帖最后由 紫气东升 于 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灯

天道酬勤
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6639
金钱
6639
注册时间
2016-5-29
在线时间
907 小时
发表于 2016-8-26 13:46:50 | 显示全部楼层
建议大循环中不要使用 像这样子的占用CPU 的 DELAY 来延时.不然.做不了复杂或者难度大的工程.
中断服务程序里面也建议不要使用.尤其时间大于10毫秒的,小于10毫秒的延时,勉强可以.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-29 05:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表