痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 5862|回復: 5

[問題求助] 請各先進幫忙指點 93c46 如何改讀寫 8 位元

[複製鏈接]
發表於 2014-9-18 20:14:51 | 顯示全部樓層 |閱讀模式
如標題如何改讀寫 8 位元,目前是讀寫 16 位元
;;;93C46 TEST
;;8051 PORT A / C

                clr        ck                ;               
                clr        sk                ;
                clr        di                ;
                clr        do                ;
                call        ewen                ;

                mov        temp,#00h        ;
                mov        data0,#27h        ;
                mov        data1,#38h        ;
                call        write                ;

                call        delay                ;


                mov        temp,#00h        ;
                call        read                ;
                mov        a,rdata0        ;
                mov        a,rdata1        ;
                nop                        ;


                call        ewds                ;


;;---------------------------------------
ewen:                                        ;
                call        comm                ;
                mov        a,#00h                ;
                call        opcode                ;
                mov        a,#0c0h                ;
                call        wybyte                ;
                clr        ck                ;
                clr        sk                ;
                clr        di                ;
                ret                        ;
;;---------------------------------------
ewds:                                        ;
                call        comm                ;
                mov        a,#00h                ;
                call        opcode                ;
                mov        a,#00h                ;
                call        wybyte                ;
                clr        ck                ;
                clr        sk                ;
                clr        di                ;
                ret                        ;
;;---------------------------------------
comm:                                        ;START BIT ENTER
                setb        ck                ;
                setb        sk                ;
                clr        di                ;
                nop                        ;
                clr        sk                ;
                setb        di                ;
                nop                        ;
                setb        sk                ;
                ret                        ;       
;;---------------------------------------
opcode:                                        ;
                mov        r5,#02h                ;
op1:                                        ;
                clr        sk                ;
                rlc        a                ;
                mov        di,c                ;
                nop                        ;
                setb        sk                ;
                djnz        r5,op1                ;
                ret                        ;
;;---------------------------------------
wybyte:                                        ;
                mov        r5,#08h                ;
wb1:                                        ;
                clr        sk                ;
                rlc        a                ;
                mov        di,c                ;
                nop                        ;
                setb        sk                ;
                nop                        ;
                djnz        r5,wb1                ;
                rlc        a                ;
                ret                        ;

;;---------------------------------------
delay:                                        ;
                push        psw                ;
                clr        psw.3                ;
                clr        psw.4                ;
                mov        r6,#0a0h        ;
del1:                                        ;
                mov        r7,#00h                ;
                djnz        r7,$                ;
                djnz        r6,del1                ;
                pop        psw                ;
                ret                        ;
;;---------------------------------------
write:                                        ;
                call        comm                ;
                mov        a,temp                ;
                orl        a,#40h                ;
                call        wybyte                ;
                mov        a,data0                ;
                call        wybyte                ;
                mov        a,data1                ;
                call        wybyte                ;
                clr        ck                ;
                clr        di                ;
                setb        ck                ;
                setb        do                ;
                call        delay                ;
                clr        ck                ;
                ret                        ;
;;---------------------------------------
read:                                        ;
                call        comm                ;
                mov        a,temp                ;
                orl        a,#80h                ;
                call        wybyte                ;
                clr        di                ;
                call        rebyte                ;
                mov        rdata0,a        ;
                call        rebyte                ;
                mov        rdata1,a        ;
                clr        ck                ;
                ret                        ;       
;;---------------------------------------
rebyte:                                        ;
                setb        do                ;
                rlc        a                ;
                mov        r5,#08h                ;
re1:                                        ;
                clr        sk                ;
                nop                        ;
                setb        sk                ;
                nop                        ;
                mov        c,do                ;
                rlc        a                ;
                djnz        r5,re1                ;
                ret                        ;
;;---------------------------------------
                end                        ;
;;---------------------------------------
發表於 2014-9-18 22:07:04 | 顯示全部樓層
93C46能不能8位元讀寫關鍵在於硬體,有些型號可以透過接腳選擇8/16位元讀寫,有些則只能16位元讀寫,所以硬體要先有8位元模式再來處理軟體部分。

軟體部分跟16位元讀寫差不多,可選擇位址多了一倍,每次讀寫只有8位元,將16位元呼叫兩次讀寫改成一次就可以了。
 樓主| 發表於 2014-9-18 22:44:23 | 顯示全部樓層
ysc 發表於 2014-9-18 10:07 PM static/image/common/back.gif
93C46能不能8位元讀寫關鍵在於硬體,有些型號可以透過接腳選擇8/16位元讀寫,有些則只能16位元讀寫,所以硬 ...

ysc大,小弟不解是指令位址不是只到    01   01a5,a4,a3,a2,a1,a0 那如何定義到 a6 ?

               mov        a,temp                ;
                 orl        a,#40h                ;
                 call        wybyte                ;
發表於 2014-9-18 23:13:30 | 顯示全部樓層
lotor 發表於 2014-9-18 10:44 PM static/image/common/back.gif
ysc大,小弟不解是指令位址不是只到    01   01a5,a4,a3,a2,a1,a0 那如何定義到 a6 ?

               m ...

93C46 8 BIT 模式時,指令多一個BIT,
16 BIT模式時含 START BIT 共 9 BIT,
8 BIT 模式時含 START BIT 共 10 BIT。

93C46.jpg
 樓主| 發表於 2014-9-18 23:28:28 | 顯示全部樓層
ysc 發表於 2014-9-18 11:13 PM static/image/common/back.gif
93C46 8 BIT 模式時,指令多一個BIT,
16 BIT模式時含 START BIT 共 9 BIT,
8 BIT 模式時含 START BIT  ...

ysc大  終於點醒夢中人 感溫啊!
發表於 2014-9-19 00:35:19 | 顯示全部樓層
lotor 發表於 2014-9-18 11:28 PM static/image/common/back.gif
ysc大  終於點醒夢中人 感溫啊!

其實我沒用過 8 BIT 模式,因為早期不同廠牌不一定有 8 BIT 模式,
為了備料相容性,所以都用 16 BIT模式來寫程式。

8 BIT 模式位址有 7 BIT, 加上 2 BIT 指令共 9 BIT,
不像 16 BIT 模式總共只有 8 BIT,可以容納在 1 個 BYTE 內,
程式比較難寫一點。

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-12-4 01:47 AM , Processed in 0.162747 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.