亮灯数据表用伪指令中的字节定义指令DB定义,标号TAB表示数据表的首地址,数据表可以分行写,但每行均必须用DB指令开始。每个数据之间必须用逗号分隔,如是字母开头的数据,则要在前面加0。以第一个亮灯状态为例,说明亮灯情况与P2口输出值的对应关系。按照上述对应关系,得到如图4所示的P2口输出亮灯数据表。
序号1234567891011121314151617181920212223灯亮0灯灭1LED8LED7LED6LED5LED4LED3LED2LED1P2口值E7HC3H81H00HFFH7FH3FH1FH0FH07H03H01H00HFFH55HAAH55HAAHFFH00HFFH00HFFH 图4 P2口输出亮灯数据表
(1) 初始化 (2) 查表
(3) 循环结束判断 (4) 亮灯延时 (5) 数据表
根据以上任务分析和任务实施过程编写的源程序如下: ORG 0000H
MOV R1,#00H ;将数据表索引值寄存器清0
MOV DPTR,#TAB ;将数据表首址赋给基址寄存器DPTR START:MOV A,R1 ;索引值送A
MOVC A,@A+DPTR ;利用查表指令取出亮灯数据
CJNE A,#0D3H,DISP ;判断是否为亮灯结束码,若是则将索引值清0,进行下
13
一次亮灯循环;若不是则输出
MOV R1,#00H
SJMP START
DISP:MOV P2,A ;将亮灯数据通过P2口输出 INC R1 ;索引值加1 LCALL DELAY ;调用1S延时程序 SJMP START ;转取下一个亮灯数据 DELAY:MOV R5, #02 ;1S延时子程序 K1: MOV R6, #250 K2: MOV R7, #250 K3: NOP NOP DJNZ R7, K3 DJNZ R6, K2 DJNZ R5, K1 RET
TAB:DB 0E7H,0C3H,81H,00H,0FFH ;亮灯数据表 DB 7FH,3FH,1FH,0FH,07H,03H,01H,00H,0FFH
DB 55H,0AAH,55H,0AAH,0FFH,00H,0FFH,00H,0FFH,0D3H
14
实验四 外部中断的应用
一、实验目的
1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。
二、实验设备
51-综合实验板、IBM兼容型计算机、Keil软件、连接导线等
三、实验内容
了解AT89S52外部中断的物理接口位置,了解外部中断的处理方法。利用硬件产生外中断0及外中断1,并利用单片机P0产生相区别的电平状态,用于观察外中断的响应情况。
四、实验原理
外部中断的实验原理硬件图,如下图所示。 P3.2—INT0 P3.3—INT1
按下S4或S5,INT1或INT0将得到下降沿及低电平,在中断开放的情况下,可触发外部中断。
本实验可以设计程序,实现在外中断0发生时,点亮高4位发光管,而外中断1发生时,点亮低4位发光管,用于观察中断响应的情况。
15
五、实验程序
org 0000h jmp main org 0003h jmp ita0 org 0013h jmp ita1 org 40h main: setb ea setb ex0 setb ex1 setb px1 jmp $ ita0:
mov p2,#0f0h reti ita1:
mov p2,#0fh reti end
请仔细观察程序结构,伪指令的使用方法,中断入口的进入方法及返回的方法。
请正确连接硬件后,下载该程序到目标板进行实验。
16

