矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2604|回复: 6

按钮处理函数大家能看懂不

[复制链接]
     
发表于 2021-4-9 16:12:10 | 显示全部楼层 |阅读模式
本帖最后由 njhhack 于 2021-4-9 16:42 编辑

//SB1按一次,LED1状态改变一次
//SB2按一次,LED2状态改变一次
sfr P1=0x90;
sfr P3=0xB0;
sbit sb1=P3^0;
sbit sb2=P3^1;
sbit led1=P1^0;
sbit led2=P1^1;
an()
{
        static unsigned char v;
        v<<=1;
        v|=sb1 & sb2;
        if(v!=0xf0)return;
        if(sb1==0)led1=~led1;
        if(sb2==0)led2=~led2;
}
ys(unsigned int ms)
{
        unsigned int k,d;
        for(k=0;k<ms;k++)
        {
                for(d=0;d<125;d++);
        }
}
main()
{
        for(;;)
        {
                an();
                ys(10);
        }
}
     
发表于 2021-4-9 18:26:15 | 显示全部楼层
只会点汇编
看不懂C++
回复 支持 反对

使用道具 举报

     
发表于 2021-4-11 08:31:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-4-12 07:47:01 | 显示全部楼层
看看谁能看懂,难道这是外星人程序
回复 支持 反对

使用道具 举报

     
发表于 2021-4-12 08:00:48 | 显示全部楼层
v|=sb1 & sb2;//如果按键有按下为0,弹起为1,当按下时间为40ms后,经过 v<<=1;则V会变成0xf0;这种处理确有巧秒之处,但是当两个按键都同时按下时,则会失效。
回复 支持 反对

使用道具 举报

     
发表于 2021-4-12 22:32:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2021-4-22 22:26:17 | 显示全部楼层
ucmic 发表于 2021-4-12 08:00
v|=sb1 & sb2;//如果按键有按下为0,弹起为1,当按下时间为40ms后,经过 v

还是有些不理解啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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