本設計使用8086主控模塊、8253定時/計數模塊、8位LED循環模塊實現了流水燈功能。
硬件設計:
1.8086主控模塊:
包括一片8086,三片74ls273和一片74154。在例程的基礎上增加了74154譯碼電路作為I/O輸出
2.8253定時/計數模塊:
去掉了例程中的喇叭等元器件,改成利用定時/計數器0將輸入時鐘的100khz分頻成1khz,并作為定時/計數器2的時鐘,使定時/計數器2每隔1s產生一個中斷。
3.8位LED循環模塊:
用一片74ls273輸出接口控制8只LED燈,實現每隔一秒循環點亮功能。
4.去掉了例程中的74LS238和或門電路
軟件設計:
軟件分為三個模塊:NMI中斷向量初始化模塊、可編程定時/計數器8253初始化模塊以及中斷服務子程序。與例程相比增加了中斷向量和中斷子程序兩個模塊。
代碼:
.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
;NMI中斷向量初始化
NMI_INIT:PUSH ES
XOR AX,AX
MOV ES,AX
MOV AL,02H
XOR AH,AH
SHL AX,1
SHL AX,1
MOV SI,AX
MOV AX,OFFSET NMI_SERVICE
MOV ES:[SI],AX
INC SI
INC SI
MOV BX,CS
MOV ES:[SI],BX
POP ES
;可編程定時/計數器8253初始化
MOV AL,00110111B ;T0 16位 方式3
MOV DX,0406H ;控制口地址
OUT DX,AL
MOV DX,0400H ;T0地址
MOV AX,0100H ;將100khz分頻成1khz
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV AL,10110001B ;T2 16位 方式3
MOV DX,0406H
OUT DX,AL
MOV DX,0404H
MOV AX,1000H ;將1khz分頻成1hz
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV BL,0FEH ;LED初始狀態
MOV DX,0200H ;8位LED模塊74ls273地址
MOV AL,BL
OUT DX,AL
JMP $
;中斷服務子程序
NMI_SERVICE: ROL BL,1 ;循環左移
MOV AL,BL
MOV DX,0200H ;74ls273地址
OUT DX,AL
MOV DX,0404H
MOV AX,1000H ;將1khz分頻成1hz
OUT DX,AL ;重新裝入初值
MOV AL,AH
OUT DX,AL
EXIT: IRET
.DATA
END
|