湖南附录
文理学院芙蓉学院课程设计报告
附 录(源程序)
C8255 EQU 203H D8255C EQU 202H
C8253 EQU 213H D82530 EQU 210H D82531 EQU 211H D82532 EQU 212H
C82590 EQU 220H C82591 EQU 221H
C8279 EQU 232H D8279 EQU 230H
time0 EQU 1000 time1 EQU 307
CODE SEGMENT ASSUME CS:CODE START: JMP Y
timer0 DB 2,0,1,3,5,9 timer1 DB 7 DUP(0) pad DB 0
tab DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0~9 Y: ;初始化各芯片 MOV AX,8100H MOV DS,AX CLI CALL i8279 CALL i8259 CALL i8253 CALL i8255 STI
big_lp: MOV DX,202H ;读8255 C口 IN AL,DX CMP AL,01H ;判断是什么模式 JE mode1 CALL display0 ;时间模式,显示时间 JMP big_lp mode1: CALL display1 ;秒表模式,显示秒表 JMP big_lp
14
湖南附录
文理学院芙蓉学院课程设计报告
i8253: ;210,211,212,213分别为:计数器0/计数器1/计数器2/控制端口 ;CPU时钟频率为307200HZ ;初始化计数器1,先送低八位,后送高八位,工作方式3,二进制计数 MOV DX,C8253 MOV AL,76H OUT DX,AL ;使OUT1产生周期为1ms的方波 MOV DX,D82531 MOV AX,time1 OUT DX,AL MOV AL,AH OUT DX,AL ;初始化计数器0,,先送低八位,后送高八位,工作方式3,二进制计数 MOV DX,C8253 MOV AL,36H OUT DX,AL ;CLK0接OUT1,OUT0产生周期为1s的方波 MOV DX,D82530 MOV AX,time0 OUT DX,AL MOV AL,AH OUT DX,AL POP BX POP CX POP DX POP AX RET
i8259: ;端口地址为220H和221H ;ICW1,上升沿触发,单片,写ICW4 PUSH AX PUSH DX PUSH CX PUSH BX MOV DX,C82590 MOV AL,13H; (00010011) OUT DX,AL ;ICW2,中断类型号为30H,31H,32H MOV DX,C82591 MOV AL,30H OUT DX,AL ;ICW4,正常EOI,8086/8088系统 MOV AL,01H
15
湖南附录
文理学院芙蓉学院课程设计报告
OUT DX,AL
PUSH DS MOV AX,0 MOV DS,AX MOV BX,30H*4 MOV AX,OFFSET int_timer0 MOV DS:[BX],AX MOV AX,CS MOV BX,30H*4+2 MOV DS:[BX],AX MOV BX,31H*4 MOV AX,OFFSET int_timer1 MOV DS:[BX],AX MOV AX,CS MOV BX,31H*4+2 MOV DS:[BX],AX MOV BX,32H*4 MOV AX,OFFSET int_pad MOV DS:[BX],AX MOV AX,CS MOV BX,32H*4+2 MOV DS:[BX],AX POP DS POP BX POP CX POP DX POP AX RET
i8279: ;数据端口230H,控制端口232H ;清除显示和显示寄存器 MOV DX,C8279 MOV AL,0D2H OUT DX,AL ;键盘显示命令,八个字符显示,左端输入方式 MOV AL,0 OUT DX,AL RET
i8255: ;200,201,202,203分别为:A口/B口/C口/控制端口
16
湖南附录
文理学院芙蓉学院课程设计报告
;只用到PC0,输入 MOV DX,C8255 MOV AL,9BH OUT DX,AL RET
int_timer0 PROC ;1秒产生一次中断,每次中断时间加1秒 PUSH AX PUSH DX PUSH CX PUSH BX PUSH DI LEA DI,timer0 MOV BL,BYTE PTR[DI+5] CMP BL,9 JE c0; 有进位 INC BL; 1s位加1 MOV BYTE PTR[DI+5],BL JMP addend0
c0: MOV BYTE PTR[DI+5],0 MOV BL,BYTE PTR[DI+4]; 处理下一位 CMP BL,5 JE c1; 有进位 INC BL; 10s位加1 MOV BYTE PTR[DI+4],BL JMP addend0
c1: MOV BYTE PTR[DI+4],0 MOV BL,BYTE PTR[DI+3]; 处理下一位 CMP BL,9 JE c2; 有进位 INC BL; 1min位加1 MOV BYTE PTR[DI+3],BL JMP addend0
c2: MOV BYTE PTR[DI+3],0 MOV BL,BYTE PTR[DI+2]; 处理下一位 CMP BL,5 JE c3; 有进位 INC BL; 10min位加1 MOV BYTE PTR[DI+2],BL JMP addend0
c3: MOV BYTE PTR[DI+2],0 MOV BL,BYTE PTR[DI+1] MOV BH,BYTE PTR[DI];
17
湖南文理学院芙蓉学院课程设计报告
附录
CMP BH,2 JNE c4 CMP BL,3 JE c5; 23h的情况 INC BL; 21h位加1 MOV BYTE PTR[DI+1],BL JMP addend0
c5: MOV BYTE PTR[DI],0; 新的一天 MOV BYTE PTR[DI+1],0 JMP addend0 c4: CMP BL,9 JE c6; 有进位 INC BL; 01h位加1 MOV BYTE PTR[DI+1],BL JMP addend0 c6: INC BH MOV BYTE PTR[DI],BH; 10h位加1 JMP addend0
addend0:MOV AL,20H MOV DX,C82590 OUT DX,AL POP DI POP BX POP CX POP DX POP AX IRET
int_timer0 ENDP
display0: ;显示时间 PUSH DI LEA BX,tab MOV AL,90H MOV DX,232H OUT DX,AL MOV DX,D8279 LEA DI,timer0 MOV AL,BYTE PTR[DI+5] XLAT OUT DX,AL MOV AL,BYTE PTR[DI+4] XLAT
18