跑马灯实验报告.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:

班级:

跑马灯实验报告

试验目的

1.学习8031内部计数器的使用和编程方法。

2.进一步掌握中断处理程序的编程方法。

3.学习端口的输入输出操作。

实验原理

1、软件流程图:

2.程序设计内容

我们可以运用输出端口指令MOV P1,A 或MOV P1,#DATA ,只要给累加器值

或常数值,然后执行上述的指令,即可达到输出控制的动作。

3、硬件连接图:

4.软件清单

ADR EQU 8000H

ORG 0000H

LJMP START

ORG 001BH

LJMP OT1

ORG 00F0H

START:MOV TMOD,#10H

MOV TL1,#0B0H

MOV TH1,#3CH

SETB EA

SETB ET1

MOV R2,#14H

MOV R3,#00H

SETB TR1

SJMP $

OT1:CLR TR1

CLR EA

MOV TH1,#3CH

MOV TL1,#0B0H

DJNZ R2,BACK

NEXT:MOV R2,#14H

MOV DPTR,#0200h

MOV A,R3

MOVC A,@A+DPTR

MOV DPTR,#ADR

MOVX @DPTR,A

INC R3

CJNE R3,#08H,BACK

SJMP ROUND

BACK:SETB EA

SETB TR1

RETI

ROUND:MOV R3,#00H

SJMP BACK

ORG 0200H

DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H END

5.C语言源程序

#include

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

功能说明

由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮......一直循环下去。

相关文档
最新文档