作者mosquito520 (卖频宽控制分享器)
看板Electronics
标题Re: [问题] 我想用C51模拟串列式输出
时间Fri Dec 8 11:15:42 2006
※ 引述《icetofux (豆腐)》之铭言:
: 重复8次相同动作就可以把8-BIT的数值转换成1-BIT数值依序输出了。
: 读入数值并且存入暂存器中书上有很详尽的说明,所以我就省略了,假设读入的8-BIT数值
: 我存放在暂存器R1,我的推测的写法是:
: MOV R0,#8 ;R0为右旋8次用的计数暂存器
: MOV A,R1 ;R1是从PORT1读入的数值
: LOOP: MOV R2,A ;将目前右旋结束後的值(8-BIT)保留於R2
这里是不是写反了?
: ANL A,#00000001 ;把A中的值与00000001做AND并丢回A
: MOV PORT2.1,A ;把仅存的1BIT数值丢入PORT2.0输出
这样写应该不行吧...不是很确定...
不过你也可以换个方式...直接把右旋之後的值送到P2就OK了...
例如....
01010101→P2...P2.0为1...
00101010→P2...P2.0为0...
00010101→P2...P2.0为1...
类似这样的动作...就不用作AND运算了...
如果要使用位元定址的方式直接设定P2.0为0或为1...
那应该是用判断式....然後SETB或CLR P2.0...
: MOV A,R2 ;将刚刚右旋结束的值(8-BIT)读回A
: RR A ;右旋A中的值
: DJNZ R0,LOOP ;计数暂存器R0的值-1如果不是0(还没转8次)回到LOOP
: 但是有个地方我有点疑问,就是书上有介绍把8-BIT的数值丢入PORT2可以让8个LED依照数
: 值发光或不发光,但是像我这样把1-BIT的数值指定丢到PORT2中的2.1会被接受吗?另外
: 对晶片而言0000 0001或是0000 0000这两种资料,究竟是8-BIT还是1-BIT呢?
: -
很久没写组语了...也没翻书...
有错的话还请指正...
: 文有点长,谢谢你耐心的看完,仔细想想还真讽刺,以前专科上实习课总认为一辈子不会
: 用到这东西所以用得过且过的心态在上课,没想到事隔多年忽然需要用到,不但掏钱买了
: 本书,还只花了一周就把一学期的实习内容给硬看完,人生真是难以预料XD
凡走过就会留下痕迹...我老师常说这句话...
学过多少东西...肚子里面就有多少料...
即使过了几年...碰到问题还有一点印象在...
翻书查资料就可以解决的话...
那我想...应该也不算愧对老师了吧...
--
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
国 立 联 合 大 学
(理工/电资/管理/技术/客家)院所 招生中
National United University
───────────────────────────────────
首页
http://www.nuu.edu.tw BBS telnet://uun.twbbs.org
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.140.180
1F:→ icetofux:因为PORT2.0及PORT2.2~2.7有其他用途,所我才需要另外 12/08 12:32
2F:→ icetofux:朝着从8-BIT转1-BIT的方式下手。 12/08 12:33