[STC单片机] keil中sbit数组的问题

[复制链接]
1788|5
 楼主| Aorey 发表于 2019-8-8 10:17 | 显示全部楼层 |阅读模式
我想使用sbit数组,通过循环赋值,但是keil中好像不支持这样么做,有没有其他办法解决这个问题,写成宏或者挨个判断后期代码量太大
gx_huang 发表于 2019-8-8 10:21 | 显示全部楼层
给你一个思路
//按键bdata,加快处理速度
uchar bdata KEY0 _at_ 0x21;
uchar bdata KEY1 _at_ 0x22;

sbit run_key=KEY0^0;
sbit stop_key=KEY0^1;
sbit tea_out_key=KEY0^2;
sbit tea_oil_key=KEY0^3;
sbit pause_key=KEY0^4;
sbit heat_key=KEY0^5;
sbit speed_inc_key=KEY0^6;
sbit speed_dec_key=KEY0^7;
sbit temp_inc_key=KEY1^0;
sbit temp_dec_key=KEY1^1;
sbit weight_inc_key=KEY1^2;
sbit weight_dec_key=KEY1^3;
sbit turns_inc_key=KEY1^4;
sbit turns_dec_key=KEY1^5;
sbit presure_inc_key=KEY1^6;
sbit presure_dec_key=KEY1^7;
ayb_ice 发表于 2019-8-8 10:23 | 显示全部楼层
可以使用虚拟数组,用字节表示bit
gx_huang 发表于 2019-8-8 10:24 | 显示全部楼层
//任意按键计数及蜂鸣处理
                        if(KEY0!=0x00 || KEY1!=0x00)
                        {
                                if(key_cnt<10000) key_cnt++;
                                if(!last_key && key_buzzer_enable)
                                {
                                        buz_cnt=20;
                                        last_key=1;
                                }
                        }
                        else
                        {
                                last_key=0;
                                key_cnt=0;
                        }
这样,判断任一个按键按下,速度就快了
 楼主| Aorey 发表于 2019-8-8 10:37 | 显示全部楼层
gx_huang 发表于 2019-8-8 10:24
//任意按键计数及蜂鸣处理
                        if(KEY0!=0x00 || KEY1!=0x00)
                        {

uchar bdata KEY0 _at_ 0x21;
uchar bdata KEY1 _at_ 0x22;

这种写法我试下,先谢谢你了。
airwill 发表于 2019-8-10 20:41 | 显示全部楼层
关于 sbit 的数组问题, 我想不是编译器不能支持,  是因为 MCU 不能支持位地址的间接寻址
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部