輸出控制-查表

Download Report

Transcript 輸出控制-查表

單元二
基本I/O控制---查表
1
範例程式動作
P3
P1
P17 P16 P15 P14 P13 P12 P11
2
範例程式動作分解說明
顯示零時Port各接腳狀態及七段
的對應關係
a
b
f
g
e
c
d
P16 P15 P14 P13 P12 P11 P10
g
e
d
b
a
f
c
因為共陰極七段,故P1的輸出為:11000000b
P17
3
七段顯示0~3時P1的值
P17
P16
P15
P14
P13
P12
P11
P10
0
1
1
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
2
1
0
1
0
0
1
0
0
3
1
0
1
1
0
0
0
0
表格中可看到各狀態間,其0和1的變化並無
邏輯性可言;因此無法用旋轉等方法完成
4
從沒有邏輯性找邏輯
從前面的說明中,雖然七段顯示器顯示
數字時PORT中的每個bit的狀態間沒有邏
輯性,但是整體來看0~9間不斷循環
的顯示,依舊是一個重覆的狀態.
因此若能將0~9的各段變化狀態建立一個
表,顯示時只要依序去做查詢對照,依然可
以完成有邏輯性的迴圈動作。
5
動作邏輯說明...
P17
P16
P15
P14
P13
P12
P11
P10
0
1
1
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
2
1
0
1
0
0
1
0
0
3
1
0
1
1
0
0
0
0
0
.
.
1 1
0
0
0
9
1
0
6
單晶片輸出狀態控制必殺技-查表
指令格式:
MOV
DPTR,#LABEL
MOVC A,@A+DPTR
說明:
資料所在的記憶體位置(在程式記憶體中)指
定給DPTR(資料指標暫存器,16位元,因此足
以指向到64K的程式空間。
以MOVC指令告訴CPU是要到程式記憶體中提取
資料,其位置為A+DPTR,因此DPTR可視為基
底,而A代表偏移量。
7
查表實例
MOV
MOV
MOVC
TABLE:
DB 45H
DB A7H
DB 30H
DPTR,#TABLE
A,#2
A,@A+DPTR
.
.
→TABLE+0
→TABLE+1
→TABLE+2
先將資料所在
位址取出,並
將欲查資料的
存入DPTR中
索引存入A中
令CPU到程式
備用
記憶體A+DPTR
即2+TABLE的位
址取資料,然
後存入A中
因此最後A之內容為:30H
8
以七段顯示0~9
步驟一:將0~9的狀態碼先建立表格
步驟二:以迴圈的方式逐一讀取表格中資料
然後丟到P1去驅動七段顯示器
9
範例程式動作
ORG
START: MOV
DJNZ
MOV
基本設定
DPTR指向資料區
0→R0
MOV
R0→A
DPTR,#FONT
AGAIN: MOV
R0,#0
X:
A,R0
MOV
查表
MOV
A,@A+DPTR
A→P1、A→P3
MOV
MOV
P1,A
P3,A
ACALL DELAY
延遲
INC
R0=R0+1
NO
0
R0, #0H
R0,$
SP,#60H
R0=10
YES
R0
CJNE
R0,#10, X
AJMP
AGAIN
10
END
11