跑马灯实验报告.

合集下载
  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 <AT89X51.H>
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<<i;
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亮......一直循环下去。

相关文档
最新文档