请问这段控制单元板的函数什么意思?

2020-01-30 14:17发布

红 {MOD}为我标注的问题



unsigned char PLAYBUF[64];


void point(unsigned char x,unsigned char y,bit c)
{
        unsigned char i;

        if(x>=32) return; //这两行是干什么的?怕画点画出点阵的范围吗?
        if(y>=16) return; //这两行是干什么的?怕画点画出点阵的范围吗?
        i=0x80; //这个变量准备干啥?
        i>>=x-((x>>3)<<3); //这是干什么的?为什么先向右移,又向左移?不是等于没移?

        if(c)
                PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] |= i;  //这句彻底看不懂...
        else
                PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] &= ~i;
}




问题挺多的,请各位高人赐教!给08口的规范更好,先谢谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
logsoft
1楼-- · 2020-01-31 21:06
i>>=x-((x>>3)<<3); //这是干什么的?为什么先向右移,又向左移?不是等于没移?
//x-((x>>3)<<3)可以看成x%8,x>>3 即x/8求商,商<<3即 商*8,即x在最后一个字节中的位置,现在明白了吧?
PLAYBUF[(y<<1)+((x>>4)<<5)+((x>>3)&0x01)] |= i;  //这句彻底看不懂...
//(y<<1)+((x>>4)<<5)+((x>>3)&0x01)计算x,y对应的位置在playbuf中的字节数。
if这两句,一句是点亮,一句是清除。

一周热门 更多>