c)实验程序——循环点亮发光二极管(T3_1_P1.ASM)
ORG 0000H
START: MOV R2,#8
MOV A,#01H ; 先让第一个发光二极管点亮 LOOP: MOV P1,A ; 从P1口输出到发光二极管 LCALL DELAY
RL A ; 循环左移
DJNZ R2,LOOP ; 判断移动是否超过8 位,未超过继续循环
LJMP START ;
DELAY: MOV R5, #5 DEL1: MOV R6, #200 DEL2: MOV R7, #126 DEL3: DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 RET END
d)程序流程图 开始 R2=8,A=1 P1=A 延时0.2S A左移一次R2=R2-1 是 R2=0? 否
重做 ; 延时0.5秒子程序 35
2)(选作)P1口做输入/输出口。
a)PROTEUS 仿真电路
b)EL-Ⅱ型通用接口板连线
P1.0~P1.3平推开关K1~K4,P1.4~P1.7经过74LS04反相器接接发光二极管L1~L4。
36
c)实验程序 (T3_2_P1.ASM) ORG 0000H
STAR2: MOV A, #0FFH ;将P1口置成全1 MOV P1, A MOV A, P1 ;读开关状态 SWAP A ;将输入数据换到高位 MOV P1, A ;驱动相应灯泡发亮 LCALL DELAY ;延时 0.5秒 LJMP STAR2 ;重做 DELAY: MOV R5, #5 ;延时0.5秒子程序 DEL1: MOV R6, #200 DEL2: MOV R7, #126 DEL3: DJNZ R7, DEL3 DJNZ R6, DEL2 DJNZ R5, DEL1 RET END
七、实验要求
1、基本内容:按照实验要求连接系统、编写程序、编译运行,并解释实验现象。 2、拓展内容:
1)通过修改程序,改变发光二极管的循环方向和循环速度。 2)修改线路,在P0口上实现本实验 3)(选作)第二个实验时,先按要求编好程序并调试成功后,将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
37
实验3 定时器实验———循环彩灯
一、实验目的
1. 学习8031内部计数器的使用和编程方法。 2. 进一步掌握中断处理程序的编写方法。
二、实验设备
PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。
三、实验内容
由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、?L8依次点亮;②L1、L2、?L8依次熄灭;③L1、L2、?L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。
四、实验原理
1. 定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。
时间常数可按下述方法确定:
机器周期=12÷晶振频率=12/(6×10?)=2us
设计数初值为X,则(2e+16-X)×2×10=0.1,可求得X=15535
化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH 2. 初始化程序
包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行 正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。
3. 设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。
-6
五、实验方法
1、运用PROTUES软件进行虚拟仿真实验。按照实验要求用PROTUES软件绘制电路,编制程序,并通过调试。
2、运用星研仿真系统进行实际系统仿真实验。将星研仿真器与微机和目标板相互连接构成完整的硬件仿真系统,按照实验要求在通用实验板上进行硬件系统连接,并用星研仿真器进行系统仿真运行调试。
38

