?? pcf8574led.#3
字號:
;實驗程序A:PCF8574LED。ASM PCF8574控制6位數(shù)碼顯示
;顯示子程序 : 在六個數(shù)碼管上顯示數(shù)據(jù)。數(shù)值在71H ~ 76H之中。不用鍵盤。
SLA1W EQU 70H ;PCF8574 A片寫的節(jié)點地址 (可選地址開關(guān):000H)
SLA1R EQU 71H ;PCF8574 A片讀的節(jié)點地址
SLA2W EQU 72H ;PCF8574 B片寫的節(jié)點地址 (可選地址開關(guān):001H )
SLA2R EQU 73H ;PCF8574 B片讀的節(jié)點地址
SLA3W EQU 76H ;PCF8574 C片寫的節(jié)點地址 (可選地址開關(guān):011H)
SLA3R EQU 77H ;PCF8574 C片讀的節(jié)點地址
SLA EQU 60H
SLAW EQU 62H
SLAR EQU 63H
NUMBYT EQU 61H ;被傳送的字節(jié)數(shù)存放單元
MTD EQU 20H ;發(fā)送數(shù)據(jù)緩沖區(qū)首地址
MRD EQU 30H ;接收字節(jié)緩沖區(qū)首地址
VSCL EQU P0.1 ;模擬I2C總線時鐘線
VSDA EQU P0.0 ;模擬I2C總線數(shù)據(jù)線
ORG 00H
AJMP START
ORG 0030H
START: MOV SP,#7H ;堆棧地址
MOV WDTCN,#0DEH ;禁止看門狗定時器
MOV WDTCN,#0ADH;
MOV XBR2,#40H ;C8051F交叉開關(guān)使能
ACALL SEND ;傳送子程序,在RAM71H-76H中分別存入1,2,3,4,5,6
DD: ACALL DISP ; 顯示六位數(shù)字:'1', '2', '3', '4,' '5', '6'
AJMP DD
;顯示子程序:顯示固定存儲區(qū)(即CPU RAM 71H~76H)中存放的數(shù)值
DISP: MOV R2,#01H ; 字位碼在R2中,(R2)= #1,#2,#4,#8
MOV R5,#6 ;顯示6個數(shù)。
MOV R0,#71H ;71H為數(shù)據(jù)區(qū)首地址
DSP1: MOV A,R2
ACALL WRITEB ;B口輸出作為六位數(shù)碼管的位選
MOV A,@R0 ;將要顯示的數(shù)值送入A中
DSP2: MOV DPTR,#BCD ;查表
MOVC A,@A+DPTR ;查表,查出要顯示的數(shù)值的字形碼
ACALL WRITEC ;C口輸出字形碼
ACALL DEL0 ;延時
MOV A,R2
RL A
MOV R2,A ; 字位碼指向下一位
INC R0 ;準(zhǔn)備顯示下一位
DJNZ 次 R5, DSP1
RET
BCD: DB 3FH,06H,5BH,4FH ;顯示數(shù)值0,1,2,3
DB 66H,6DH,7DH,07H ;4,5,6,7
DB 7FH,6FH,77H,7CH ;8,9,A,B
DB 39H,5EH,79H,71H ;C,D,E,F(xiàn)
DB 73H,3EH,31H,6EH ;P,U,Z,Y
DB 40H,00H ;- ,滅
DEL0: MOV R6,#00H ;延時子程序
TM: MOV R7,#01
DJNZ R7,$
DJNZ R6,TM
RET
;傳送子程序, 在RAM 71H-76H中分別存入六位數(shù)字:'1', '2', '3', '4,' '5', '6'
SEND: MOV R7,#6
MOV R0, #71H
MOV A,#1
SS: MOV @R0,A
INC A
INC R0
DJNZ R7,SS
RET
WRITEB: MOV SLAW,#SLA2W ;將數(shù)據(jù)送器件B
MOV SLAR,#SLA2R
ACALL WRBC
RET
WRITEC: MOV SLAW,#SLA3W ;將數(shù)據(jù)送器件C
MOV SLAR,#SLA3R
ACALL WRBC
RET
WRBC: MOV MTD,A
MOV SLA,SLAW
MOV NUMBYT,#1
LCALL WRNBYT
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -