|
|
前往: |
| DS1302读数据问题 |
| 发表人 | 内容 | |
|---|---|---|
| 2012/02/11 00:44 |
|
|
|
[楼主位] llwwzz2007
等级:
注册时间:![]() 2011/11/10 23:39 文章: 20 离线 |
以下读1302数据程序可正常运行,读出数据。请注意红色部分注解 // ACC0=DS_IO; zhi=(zhi/16*10)+zhi%16; //两位BCD码转换为十进制 |
|
|
||
| 2012/02/11 01:20 |
|
|
|
[1楼] 正点原子
等级:
注册时间:![]() 2010/12/02 10:41 文章: 8097 来自: 湖南 离线 |
51的,都忘记了...
|
|
|
我的淘宝小店:http://shop62103354.taobao.com |
||
|
||
| 2012/02/11 02:44 |
|
|
|
[2楼] lrain
等级:
注册时间:![]() 2012/02/11 02:31 文章: 3 来自: 深圳 离线 |
ACC移位前的内容是什么呢?如果不确定肯定不对。
由于ACC会经常使用,如中断、子程序调用后内容会变化,不建议用ACC,要用必须用独占方式,还是用一变量安全。 |
|
|
||
| 2012/02/11 13:39 |
|
|
|
[3楼] llwwzz2007
等级:
注册时间:![]() 2011/11/10 23:39 文章: 20 离线 |
嗯,但一般的变量可以进行位赋值吗?如ACC0=DS_IO这样。不确定ACC的值那上面的语句改为这样是否就可以了:
ACC=0; ACC0=DS_IO; zhi=zhi|(ACC<<i); ACC=0; > |
|
|
||
| 2012/02/12 07:21 |
|
|
|
[4楼] lrain
等级:
注册时间:![]() 2012/02/11 02:31 文章: 3 来自: 深圳 离线 |
只要处理好我说的问题,ACC也是可以用的,只是如果遇到中断之类,还要进行堆栈处理,这样就没有什么优势了。
位运算在特定情况下有优势,但在通用性来说不是很好,Keil C中处理这种情况就是用“按位或”,即: var = 0; var |= 1<<n; 其中n为要赋值的bit。> |
|
|
||
| 2012/02/13 23:41 |
|
|
|
[5楼] llwwzz2007
等级:
注册时间:![]() 2011/11/10 23:39 文章: 20 离线 |
嗯,多谢哈。
|
|
|
||
|
|
||
|
| 前往: |