?? 7_164165.asm
字號:
;//*******************************************************************
;//*文件名:串轉并,并轉串實驗程序 FOR 8088
;功能:把開關量通過74**165串行輸入到內存,并通過74**164串行輸出到數碼
; 管上顯示。
;接線:對應連接八位邏輯電平輸出模塊的QH165、CLK165、SH/LD到8255模塊的
; PC0、PC4、PC5。
; 對應連接靜態數碼管顯示模塊的DIN、CLK到8255模塊的PC6、PC7。
; 對應連接8255模塊的CS_8255到CPU模塊的200H。
; 用8位數據線連接8255模塊的JD4C(PB口)到八位邏輯電平顯示模塊的JD4B。
;//********************************************************************
;PC6——DIN
;PC7——CLK
;PC4——CLK165
;PC5——SH/LD
;PC0——QH165
;CS_8255——200H
PA8255 EQU 200H ;8255PA口地址
PB8255 EQU 201H ;8255PB口地址
PC8255 EQU 202H ;8255PC口地址
PCTL8255 EQU 203H ;8255控制口地址
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START:
PUSH CS
POP DS
MOV DX,PCTL8255
MOV AL,81H ;設置8255,PA、PC4~7出,PC0入
OUT DX,AL
BEGIN:
MOV DX,PCTL8255
MOV AL,09H ;PC4: CLK165 置“1”
OUT DX,AL
MOV AL,0AH ;PC5: SH/LD置“0”
OUT DX,AL
MOV AL,0BH ;PC5: SH/LD置“1”
OUT DX,AL
MOV AL,0
MOV CL,8H ;分八次讀一個字節
INPUT: PUSH AX
MOV DX,PC8255 ;
IN AL,DX
RCR AL,1
POP AX
RCL AL,1
CALL CLK165
DEC CL
CMP CL,0
JNZ INPUT
MOV DX,PB8255 ;B口可觀察輸入值
OUT DX,AL
CALL DELAY
CALL OUTPUT ;調串行輸出
JMP BEGIN ;重復
CLK165: PUSH AX
PUSH DX
MOV DX,PCTL8255
MOV AL,08H ;PC4: CLK165置“0”
OUT DX,AL
MOV AL,09H ;PC4: CLK165置“1”
OUT DX,AL
POP DX
POP AX
RET
OUTPUT: ;串行輸出
MOV ah,AL
MOV CL,8H ;分八位寫一個LED
WRITE1:
RCL AL,1
PUSH AX
JNC OUTDATA1
MOV DX,PCTL8255
MOV AL,0DH ;PC6:DIN 置“1”
OUT DX,AL
JMP NEXT1
OUTDATA1:
MOV DX,PCTL8255
MOV AL,0CH ;PC6:DIN 置“0”
OUT DX,AL
NEXT1:
MOV DX,PCTL8255;利用8255PC5口控制DCLK,使DCLK產生一低電平到高電平的跳變
MOV AL,0EH ;PC7:CLK 置“0”
OUT DX,AL
MOV AL,0FH ;PC7:CLK 置“1”
OUT DX,AL
POP AX
DEC CL
CMP CL,0
JNZ WRITE1
RET
delay proc near
push cx
mov cx,1000h
loop $
pop cx
ret
delay endp
LED: DB 3FH,06H,5BH,4FH,66H,6DH ;012345
DB 7DH,07H,7FH,6FH,77H,7CH ;6789AB
DB 39H,5EH,79H,71H,00H,40H ;CDEF -
CODE ENDS
END START
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -