[51单片机] 点阵原理大致已经弄明白了,但是有三行代码不明白

[复制链接]
3581|29
 楼主| dlmuzjq 发表于 2014-3-17 13:16 | 显示全部楼层 |阅读模式
        PT=digittab[cntb][cnta];
        PA=0;
        for(i=0;i<7;i++)
        {
                PT>>=1;
                PA = PA|CY;
                PA<<=1;       
        }
        P2=PA;
ayb_ice 发表于 2014-3-17 13:18 | 显示全部楼层
倒序嘛
86hupeng 发表于 2014-3-17 14:14 | 显示全部楼层
嗯,就是把第12345678位变成第87654321位,
比如 11110000变成00001111

评分

参与人数 1威望 +1 收起 理由
dlmuzjq + 1 很给力!

查看全部评分

 楼主| dlmuzjq 发表于 2014-3-17 15:00 | 显示全部楼层
86hupeng 发表于 2014-3-17 14:14
嗯,就是把第12345678位变成第87654321位,
比如 11110000变成00001111

麻烦能详细点吗,那个CY里面是什么?
huangruiz 发表于 2014-3-17 15:02 | 显示全部楼层
CY时PSW里面的一位  ,进位标志
huangruiz 发表于 2014-3-17 15:06 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| dlmuzjq 发表于 2014-3-17 15:06 | 显示全部楼层
huangruiz 发表于 2014-3-17 15:02
CY时PSW里面的一位  ,进位标志

PT=0x21  0010 0001
PT>>=1就是 0001 0000
那么PA=PA|CY该是多少?
麻烦了 详细点
 楼主| dlmuzjq 发表于 2014-3-17 15:08 | 显示全部楼层
huangruiz 发表于 2014-3-17 15:06

我太笨了
huangruiz 发表于 2014-3-17 15:12 | 显示全部楼层
PT=0x21  0010 0001
PT>>=1就是 0001 0000
移没了的一位就是CY的值
 楼主| dlmuzjq 发表于 2014-3-17 15:18 | 显示全部楼层
huangruiz 发表于 2014-3-17 15:12
PT=0x21  0010 0001
PT>>=1就是 0001 0000
移没了的一位就是CY的值

然后呢???
下面的几步怎么做
 楼主| dlmuzjq 发表于 2014-3-17 15:40 来自手机 | 显示全部楼层
huangruiz 发表于 2014-3-17 15:12
PT=0x21  0010 0001
PT>>=1就是 0001 0000
移没了的一位就是CY的值

PT右移动之后,就没他的事了啊,PA是0,它和CY按位或之后是什么
huangruiz 发表于 2014-3-17 16:02 | 显示全部楼层
饿   
比如啊   PT=1001 1110    PA就是0
一步一步来  左边是PT  中间是CY   右边是PA
10011110       0        0
01001111       0        0
00100111       1        01
00010011       1        011
00001001       1        0111
00000100       1        01111
00000010       0        011110
00000001       0        0111100
00000000       1        01111001
 楼主| dlmuzjq 发表于 2014-3-17 16:09 来自手机 | 显示全部楼层
huangruiz 发表于 2014-3-17 16:02
饿   
比如啊   PT=1001 1110    PA就是0
一步一步来  左边是PT  中间是CY   右边是PA

瞬间我就懂了,万分感谢
cm398515912 发表于 2014-3-17 16:46 | 显示全部楼层
huangruiz 发表于 2014-3-17 15:06

左移有进位  右移也有效吗 哪来的借位
通宵敲代码 发表于 2014-3-17 19:24 | 显示全部楼层
dlmuzjq 发表于 2014-3-17 15:08
我太笨了

别灰心,刚开始都一样的。
 楼主| dlmuzjq 发表于 2014-3-17 22:15 | 显示全部楼层
通宵敲代码 发表于 2014-3-17 19:24
别灰心,刚开始都一样的。

我现在研一了都,大学时候没好好学,现在天天恶补,天天累的跟狗似的。。
我现在才开始学习单片机,同时也看看ARM资料,导师说毕业论文必须用aRM做。
我现在也很苦恼,不知道自己这么走对不对!我尽力了
lkl0305 发表于 2014-3-18 08:22 | 显示全部楼层
因为在KEIL下面”PT>>=1;“被翻译成汇编语言的"RRC    A"(带CY的循环右移运算),所以,执行右移1位后,PT最低位被移到CY中,然后”PA = PA|CY;“就把CY的内容存放打PA变量的最低位。举例可见12楼
qinqiabc 发表于 2014-3-18 08:40 来自手机 | 显示全部楼层
PA = PA|CY;
PA<<=1;
这两句是不是颠倒了,把移位放在最后,PA最低位不就空了吗
sxhhhjicbb 发表于 2014-3-18 08:42 | 显示全部楼层
用汇编和c的混和编程,效率更高。
通宵敲代码 发表于 2014-3-18 08:44 | 显示全部楼层
dlmuzjq 发表于 2014-3-17 22:15
我现在研一了都,大学时候没好好学,现在天天恶补,天天累的跟狗似的。。
我现在才开始学习单片机,同时 ...

ARM分高低档次的。

Cortex=M系列也属于ARM,这种就是个单片机,跟51比难不了多少。

高通的晓龙号也属于ARM,要重者芯片做出个像样的东西,每个团队恐怖是不行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

36

帖子

0

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