一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2328|回复: 3
收起左侧

请求帮翻译一下此段文字

[复制链接]
发表于 2009-9-3 14:40 | 显示全部楼层 |阅读模式
#define POA0H asm("sbi $1b,7")
#define POA1H asm("sbi $1b,6")
#define POA2H asm("sbi $1b,5")
#define POA0L asm("cbi $1b,7")
#define POA1L asm("cbi $1b,6")
#define POA2L asm("cbi $1b,5")
#define DDA0H asm("sbi $1a,7")
#define DDA1H asm("sbi $1a,6")
#define DDA2H asm("sbi $1a,5")
#define DDA0L asm("cbi $1a,7")
#define DDA1L asm("cbi $1a,6")
#define DDA2L asm("cbi $1a,5")
#define HHH DDA0L;DDA1L;DDA2L;POA0H;POA1H;POA2H
#define HHL POA0L;DDA1L;DDA2L;DDA0H;POA1H;POA2H
#define HLH DDA0L;POA1L;DDA2L;POA0H;DDA1H;POA2H
#define LHH DDA0L;DDA1L;POA2L;POA0H;POA1H;DDA2H
#define A0TO asm("lsl %temp\n sbis $19,7\n inc %temp\n")
#define A1TO asm("lsl %temp\n sbis $19,6\n inc %temp\n")
#define A2TO asm("lsl %temp\n sbis $19,5\n inc %temp\n")

unsigned char ScanKey(void)
{
register unsigned char temp=0;
HHH;
A0TO;A1TO;A2TO;
if(temp)
    {
    return temp+15;
    }
else
    {
    LHH;A0TO;A1TO;
    HLH;A0TO;A2TO;
    HHL;A1TO;A2TO;
    HHH;
    switch (temp)
      { case 16 : temp=6;return temp;
        case 18 : temp=7;return temp;
        case 20 : temp=9;return temp;
        case 32 : temp=11;return temp;
        case 33 : temp=13;return temp;
        case 40 : temp=14;return temp;
        case 48 : temp=15;return temp;
        default : return temp;
      }
    }
}
 楼主| 发表于 2009-9-3 14:42 | 显示全部楼层
mega16的一个三io接22个键的代码,主要就是那些汇编不懂,请求大师帮翻译成白话的c语言,伪代码也成
发表于 2009-9-3 16:31 | 显示全部楼层
#define POA0H asm("sbi $1b,7") SBI=置1,CBI=置0,懂的只有这么多。不要BS我的啊。哈哈
#define POA1H asm("sbi $1b,6")
#define POA2H asm("sbi $1b,5")
#define POA0L asm("cbi $1b,7")
#define POA1L asm("cbi $1b,6")
#define POA2L asm("cbi $1b,5")
#define DDA0H asm("sbi $1a,7")
#define DDA1H asm("sbi $1a,6")
#define DDA2H asm("sbi $1a,5")
#define DDA0L asm("cbi $1a,7")
#define DDA1L asm("cbi $1a,6")
#define DDA2L asm("cbi $1a,5")
#define HHH DDA0L;DDA1L;DDA2L;POA0H;POA1H;POA2H
#define HHL POA0L;DDA1L;DDA2L;DDA0H;POA1H;POA2H
#define HLH DDA0L;POA1L;DDA2L;POA0H;DDA1H;POA2H
#define LHH DDA0L;DDA1L;POA2L;POA0H;POA1H;DDA2H
#define A0TO asm("lsl %temp\n sbis $19,7\n inc %temp\n")
#define A1TO asm("lsl %temp\n sbis $19,6\n inc %temp\n")
#define A2TO asm("lsl %temp\n sbis $19,5\n inc %temp\n")

unsigned char ScanKey(void)
{
register unsigned char temp=0;
HHH;
A0TO;A1TO;A2TO;
if(temp)
    {
    return temp+15;
    }
else
    {
    LHH;A0TO;A1TO;
    HLH;A0TO;A2TO;
    HHL;A1TO;A2TO;
    HHH;
    switch (temp)
      { case 16 : temp=6;return temp;
        case 18 : temp=7;return temp;
        case 20 : temp=9;return temp;
        case 32 : temp=11;return temp;
        case 33 : temp=13;return temp;
        case 40 : temp=14;return temp;
        case 48 : temp=15;return temp;
        default : return temp;
      }
    }
}
 楼主| 发表于 2009-9-3 21:56 | 显示全部楼层
查了下,$1b是PORTA,$1a是DDRA,$19是PINA
大致明白了,不懂再请教

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-20 11:14 , Processed in 0.060235 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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