三、功能流程图
InitKeyDisplayInit8255Init82598253产生高电平触发中断LED灯按设定方式闪烁N扫描键盘判断是否有键按下Y判断是否是对8255计数值的改变NY判断是否是结束按键N查询地址表改变LED灯闪烁模式改变8253计数初值Y灯全灭 四、结果讨论
实验结果能完成实验要求的所有功能:
按下小键盘A键,12个LED灯分为12组,每组1个灯,依次循环(默认)间隔1秒点亮;
按下小键盘B键,12个LED灯分为6组,每组2个灯,依次循环(默认)间隔1秒点亮;
按下小键盘C键,12个LED灯分为4组,每组3个灯,依次循环(默认)间隔1秒点亮;
按下小键盘D键,12个LED灯分为3组,每组4个灯,依次循环(默认)间隔1秒点亮;
按下小键盘E键,LED灯间隔1秒依次循环点亮;按下小键盘F键,LED灯间隔2秒依次循环点亮;
按下小键盘2键,LED灯全灭; 实验成功。
附录:实验代码(完整的源程序)
8259A、8255A B3区:CS、A0 B3区:INT、INTA B3区:IR0 D3区:CS、A0、A1 D3区:PC0、PC1 D3区:JP23(0-7) D3区:JP20(0-7) D3区:JP24(4-7)
—— A3区:CS3、A0 —— A3区:INTR、INTA —— C4区:OUT1 —— A3区:CS1、A0、A1 —— F5区:KL1、KL2 —— F5区:A(1-8) F4区:JP18(1-8) F4区:JP19(1-4) 8253A C4区:CS、A0、A1 C4区:CLK0 C4区:OUT1 C4区:OUT0 C4区:GATE —— A3区:CS2、A0、A1 —— B2区:2M —— B3区:IR0 —— C4区:CLK1 —— C1区的VCC
;利用8255A和8253使发光二极管按一定规律轮流点亮 ;HFUT 2015.07.02 XuanCheng Campus .MODEL TINY
EXTRN InitKeyDisplay:NEAR ;初始化小键盘 IO8259_0 EQU 0250H ;8259端口号
IO8259_1 EQU 0251H
COM_ADDR EQU 0263H ;8253端口号 T0_ADDR EQU 0260H T1_ADDR EQU 0261H
COM_8255 EQU 0273H
PA_8255 EQU 0270H ;8255端口号 PB_8255 EQU 0271H PC_8255 EQU 0272H .STACK 100 .DATA
LEDLIST8 DB 01111111B ;B口LED灯序列 LEDLIST4 DB 11111111B ;C口LED灯序列 TI DB 20H ;计数器1 频率高位 ME DB 00H ;计数器1 频率高位
OP DW O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,OA,OB,OC,OD,OE,OF .CODE
START: MOV AX,@DATA MOV DS,AX MOV ES,AX NOP CLD ;0->DF, 地址自动递增 CALL InitKeyDisplay ;初始化 CALL Init8255 CALL Init8259 CALL WriIntver ;将终端向量写入内存中 MOV AL,LEDLIST8 MOV DX,PA_8255
OUT DX,AL ;初始灯显示 MOV AL,LEDLIST4 MOV DX,PC_8255
OUT DX,AL ;LED灯前两个亮
CALL Init8253_0 CALL Init8253_1
MOV AH,1 STI ;开中断
START1: CALL KEYI ;扫描键盘
AGAIN: MOV BL,AL MOV BH,0 CLI
SHL BL,1 STI
;MOV BL,2 ;CLI
分支改变地址表 ; ;PUSHF
;MUL BL ;POPF ;STI
MOV SI,BX
JMP OP[SI] ;跳转
;分支
O0: JMP START1 O1: CLI
JMP FINISH O2: JMP START1 O3: JMP START1 O4: JMP START1 O5: JMP START1 O6: JMP START1 O7: JMP START1 O8: JMP START1 O9: JMP START1
OA: MOV LEDLIST8,01111111B MOV LEDLIST4,11111111B JMP START1
OB: MOV LEDLIST8,00111111B MOV LEDLIST4,11111111B JMP START1
OC: MOV LEDLIST8,00011111B MOV LEDLIST4,11111111B JMP START1
OD: MOV LEDLIST8,00001111B MOV LEDLIST4,11111111B JMP START1
OE: CLI
MOV TI,20H
MOV ME,00H CALL Init8253_1 STI
JMP START1
OF: CLI