发 帖  
原厂入驻New
[问答] 用stm8s005k6 来电亮几个LED,写了一直电亮不起来,想问各位程序是否有误
406 单片机编程 单片机开发
分享
#include<iostm8s005k6.h>
#include"delay.h"
#include"dht11.h"


#define uchar unsigned char
#define uint unsigned int


void Set_HSISpeed(void);


void main(void)
{
Set_HSISpeed();//时钟16MHZ

PB_DDR=0X0f;//设置PB1-4为输出模式
PB_CR1=0X0f;//推挽输出
PB_CR2=0X00;//输出速度最大为2MHZ

while (1)
{
PB_ODR|=0X00;//全部点亮
delay(1000);
PB_ODR|=0X0e;//电亮第一个灯
delay(1000);
PB_ODR|=0X0d;//电亮第二个灯
delay(1000);
PB_ODR|=0X0b;//电亮第三个灯
delay(1000);
PB_ODR|=0X07;//电亮第四个灯
delay(1000);
}
}
void Set_HSISpeed(void)
{
  //启用内部高速晶振且无分频16MHz
  CLK_ICKR|=0x01;      //开启内部HSI
  while(!(CLK_ICKR&0x02));//HSI准备就绪
  CLK_SWR=0xe1;        //HSI为主时钟源
  CLK_CKDIVR=0x00;     //HSI不分频,16MHZ
}
0
2019-11-25 09:44:31   评论 分享淘帖 邀请回答
3个回答
对应位操作清零应用按位与, 置一用按位或。
最佳答案
2019-11-25 09:44:32 评论

举报

你看看送0是全亮吗?然后你都是或的肯定就是全灭了,PB_ODR=0X00第一句直接赋0试试呢
2019-11-25 10:13:29 评论

举报


所有都可以仿真,你为什么不先看看仿真的结果呢?你会发现,第一次循环会改变数据,第二次就没有数据改变了!!!
PB_ODR|=0X00;//全部点亮
这个语句能改变io口的状态吗?

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
关闭

站长推荐 上一条 /10 下一条

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