找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1475|回复: 4
收起左侧

使用ch552芯片一个按键控制不同模式LED,为什么不能实现,求解

[复制链接]
ID:858009 发表于 2021-8-19 11:20 | 显示全部楼层 |阅读模式
#include "CH552.h"
#include "GPIO.h"

sbit LED1=P1^3;
sbit LED2=P3^4;

sbit KEY1=P1^5;
sbit KEY2=P1^6;

unsigned int k;

void KEY()
{
       
        if(KEY1==0)
        {
                k++;
                if(k>3)
                        k=0;
        }
}
void delay(unsigned int a)
{
  unsigned int i,j,k;
  for(i=0;i<a;i++)
    for(j=0;j<200;j++)
      for(k=0;k<200;k++)
        ;
}
void main(void)
{
  P1_OUT(PIN3+PIN5+PIN6);  //控制 LEDs 亮
  P3_OUT(PIN4);   //按键 KEYs
        k=0;
  while(1)
    {
                switch(k)
                {
                        case 0:
                {
                    LED1=1;
                        LED2=1;
                }break;
                        case 1:
                {
                        LED1=0;
                        LED2=1;
                }break;
                        case 2:
                {
                        LED1=1;
                        LED2=0;
                }break;
                        case 3:
                {
                        LED1=0;
                        LED2=0;
                }break;
    }
}
}


回复

使用道具 举报

ID:328014 发表于 2021-8-19 16:28 | 显示全部楼层
原理图呢?是不是电路有问题?  现在什么现象?
回复

使用道具 举报

ID:161164 发表于 2021-8-19 19:45 来自手机 | 显示全部楼层
没冇运行KEY()函数
回复

使用道具 举报

ID:592807 发表于 2021-8-20 11:51 | 显示全部楼层
我之前用CH423S拓展IO口做按键矩阵时,将其中两个OC口用于控制LED灯,其中有两个问题需要解决,都是CH开头的,希望对你有用吧。
1 就是拓展IO口时,需要确保对用的IO口已经被初始化成对应的模式  例如in  out  oc模式
2 控制IO口时千万要注意别将其他IO口的参数改变,
例如指令 0X4F00 | 0X0001是IO口1输出1  
例如指令 0X4F00 | 0X0002是IO口2输出1  
。。。
例如指令 0X4F00 | 0X0080是IO口8输出1  
当你要IO口8输出1时,就必须注意其他IO口会不会被强制归0
还有就是2楼说的,有没有可能是你没周期调用key函数

回复

使用道具 举报

ID:624769 发表于 2021-8-29 23:49 | 显示全部楼层
switch 里面的case都不需要{}  最后加一个 default: break; 看看是不是K值超出了 0-3 的范围的关系。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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