MOV A,#0FFH ;关显示 MOVX @R1,A CLR RS1 POP DPL POP DPH RET
LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;012345 DB 82H,0F8H,80H,90H,88H,83H,0C6H ;6789Abc DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;dEF灭PH.-
TINT: CLR P1.0 ;中断服务程序 LCALL DELY
SETB P1.0
RETI
DELY: MOV R7,#10 ;延时程序 DEL0: MOV R6,#200 DEL1: MOV R5,#250
DEL2: DJNZ R5,DEL2 ;250×2us =500us DJNZ R6,DEL1 ;200×500us=100ms DJNZ R7,DEL0 ;10×100ms=1s RET END
六、实验步骤
1.执行程序,按动单脉冲产生按钮(AN0),观察数码管上的计数值是在按钮按下时加“1”还是在按钮松开时计数数值加“1”。
2.观察发光二极管L1在单脉冲产生按钮(AN0)按动多少次时发生变化。
七、思考
1.计数器是在外部输入脉冲的上升沿还是下降沿加“1” 计数的。 2.外部输入的计数脉冲的频率最高不得超过单片机振荡频率的多少倍?
16
实验三 可编程I/O接口芯片8255实验
一、实验目的
1.掌握单片机系统中扩展可编程I/O接口芯片8255的方法; 2.掌握可编程I/O接口芯片8255的初始化编程方法。
二、实验内容
将8255 PA口设置为输入,接一组拨动开关。将PB口设置为输出,接一组发光二极管。将PC口设置为输出,PC0接一蜂鸣器。编程将PA口所接拨动开关的状态在PB口所接的发光二极管上显示出来。当PA口的值为FFH和00H时,蜂鸣器响,当PA口的值为其他值时,蜂鸣器关闭。
三、实验程序框图
17
8255 PC0与蜂鸣器的接口电路
8051与8255的接口电路
18
四、实验接线图
8255PA口与拨动开关的接口电路
8255PB口与发光二极管的接口电路
19
五、程序清单 文件名: DPJ03.ASM
MAIN: LOOP:
ORG LJMP ORG MOV MOV MOVX MOV MOVX INC
MOVX
CJNE SJMP
LOFF: CJNE L034: MOV
MOV MOVX SJMP
LOOW: MOV MOV
MOVX
SJMP END
0000H MAIN 0100H
DPTR,#0FF2BH A,#90H @DPTR,A DPTR,#0FF28H A,@DPTR DPTR @DPTR,A A,#00H,LOFF L034
A,#0FFH,LOOW DPTR, #0FF2BH A,#00H @DPTR,A LOOP
DPTR,#0FF2BH A,#01H @DPTR,A LOOP
;FF2BH为8255控制口地址 ;90H为控制字
;PA口方式0输入、PB、PC方式0输出 ;FF28H为8255 PA口地址 ;读拨动开关状态
;FF29H为8255 PB口地址 ;显示拨动开关状态 ;与设定状态00H比较
;与设定状态FFH比较
;开关的状态为00H或FFH时开蜂鸣器 ;01H为PC0置位控制字 ;开蜂鸣器
;开关的状态非00H或FFH时关蜂鸣器 ;00H为PC0复位控制字
六、实验步骤
8255 PA口接K1~K8,PB口接L1~L8运行程序,PC0接蜂鸣器输入端SP。运行程序,拨动K1~K8,观察L1~L8发光二极管是否对应点亮,蜂鸣器在PA口的值为FFH和00H时,是否会响。
七、思考
修改程序,8255 PB口接K1~K8,PA口接L1~L8运行程序,PC6接蜂鸣器输入端SP。运行程序,拨动K1~K8,观察L1~L8发光二极管是否对应点亮,蜂鸣器在PA口的值为FFH和00H时,是否会响。
20