标题:
使用ch552芯片一个按键控制不同模式LED,为什么不能实现,求解
[打印本页]
作者:
qwettyuio
时间:
2021-8-19 11:20
标题:
使用ch552芯片一个按键控制不同模式LED,为什么不能实现,求解
#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;
}
}
}
作者:
51hei团团
时间:
2021-8-19 16:28
原理图呢?是不是电路有问题? 现在什么现象?
作者:
lkc8210
时间:
2021-8-19 19:45
没冇运行KEY()函数
作者:
黄youhui
时间:
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函数
作者:
188610329
时间:
2021-8-29 23:49
switch 里面的case都不需要{} 最后加一个 default: break; 看看是不是K值超出了 0-3 的范围的关系。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1