作者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