- 打卡等级:偶尔看看I
- 打卡总天数:10
- 最近打卡:2025-12-15 07:56:11
已绑定手机
中级会员
- 积分
- 347
|
就是说,延时函数的依据是必须有:
WTST = 0; //设置程序指令延时参数,
EAXFR =1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
中的第一行,否则时间就对不上
最终的代码:
//课后任务2:按一下亮一颗灯,在按一下亮两颗灯,直到全亮(变量+加法和乘法)
if( P32== 0 ) //判断P32按钮是否按下,0为按下
{
Delay20ms();//延时20毫秒消抖
if( P32== 0 ) //判断P32按钮是否确实按下
{
state = !state; //变里取反010101
//LED_rksj = _crol_(LED_rksj,1);//左移一位,循环移入每次往前点亮一位
LED_rksj = LED_rksj<<1; //左移一位,右边补0,每次往前多点亮一位
P0 = LED_rksj; //P00端口左移一位输出0V,共阳极LED点亮
num = num +1 ;
if(num>=8)
{
LED_rksj = 0XFF; //送人P0口数据
num = 0 ; //P32按键次数,
}
printf("state: num: %d %d\r\n", (int)state,num);
while(P32 == 0); //等待P32松开
}
}
if( P33== 0 ) //判断P33按钮是否按下,0为按下
{
Delay20ms();//延时20毫秒消抖
if( P33== 0 ) //判断P33按钮是否确实按下
{
state = !state; //变里取反010101
P0 = 0XFF; //P00端口输出3.3V,8位共阳极LED熄灭
printf("state: %d\r\n", (int)state);
while(P33 == 0); //等待P33松开
}
}
}
}
|
|