单片机实验报告六何俊儒.docx

上传人:b****1 文档编号:714282 上传时间:2023-04-29 格式:DOCX 页数:10 大小:76.59KB
下载 相关 举报
单片机实验报告六何俊儒.docx_第1页
第1页 / 共10页
单片机实验报告六何俊儒.docx_第2页
第2页 / 共10页
单片机实验报告六何俊儒.docx_第3页
第3页 / 共10页
单片机实验报告六何俊儒.docx_第4页
第4页 / 共10页
单片机实验报告六何俊儒.docx_第5页
第5页 / 共10页
单片机实验报告六何俊儒.docx_第6页
第6页 / 共10页
单片机实验报告六何俊儒.docx_第7页
第7页 / 共10页
单片机实验报告六何俊儒.docx_第8页
第8页 / 共10页
单片机实验报告六何俊儒.docx_第9页
第9页 / 共10页
单片机实验报告六何俊儒.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机实验报告六何俊儒.docx

《单片机实验报告六何俊儒.docx》由会员分享,可在线阅读,更多相关《单片机实验报告六何俊儒.docx(10页珍藏版)》请在冰点文库上搜索。

单片机实验报告六何俊儒.docx

单片机实验报告六何俊儒

一、实验目的和要求:

1、掌握单片机与可编程并行接口芯片8255的接口设计方法。

2、掌握Proteus软件与Keil软件的使用方法。

3、熟悉可编程并行接口芯片8255初始化程序的设计方法。

二、设计要求:

1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。

2、在8255PA口或PB口的某一口线上产生周期为500μS的连续方波,接示波器观察波形。

3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态。

三、电路原理图:

四、实验程序流程框图和程序清单:

程序流程图:

汇编程序:

ORG0000H

START:

LJMPMAIN

ORG000BH

LJMPTTC0

MAIN:

MOVSP,#7FH

MOVTMOD,#02H

MOVTH0,#06H

MOVTL0,#06H

LCALLDELAY

SETBEA

SETBET0

SETBTR0

MOVDPTR,#0300H;指向控制寄存器

MOVA,#81H;PA方式0输出,PB方式0输出,PC高输出,PC低输入

MOVX@DPTR,A

MOVDPTR,#0200H;指向C口

LOOP:

MOVXA,@DPTR;读C口

SWAPA

MOVX@DPTR,A;写C口

LJMPLOOP

DELAY:

MOVR7,#0A7H

DL1:

MOVR6,#0ABH

DL0:

MOVR5,#10H

DJNZR5,$

DJNZR6,DL0

DJNZR7,DL1

NOP

RET

ORG0050H

TTC0:

PUSHDPH

PUSHDPL

PUSHACC

CPLC

MOVACC.0,C

MOVDPTR,#0000H;指向A口

MOVX@DPTR,A;写A口

POPACC

POPDPL

POPDPH

RETI

END

C语言程序:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineCOM8255XBYTE[0x0300]

#definePA8255XBYTE[0x0000]

voidmain()

{ucharj;

TMOD=0x02;

TH0=0x06;

TL0=0x06;

COM8255=0x80;

TR0=1;

while

(1)

{do

{

}

while(!

TF0);

TF0=0;

PA8255=j;

j=!

j;

}

}

end;

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineCOM8255XBYTE[0x0300]

#definePC8255XBYTE[0x0200]

voidmain()

{ucharj;

COM8255=0x81;

while

(1)

{

j=PC8255;

j=j<<4;

PC8255=j;

}

}

end;

5、实验结果:

PA.0口线上产生周期500us的连续方波,其中高低电平均为25ms,有1um误差。

当按下S1时,D1亮;当按下S2时,D2亮;当按下S3时,D3亮;当按下S4时,D4亮,互不影响。

6、实验总结:

通过本次实验我掌握了8255上电复位时间较单片机长,需要进行等待。

掌握了单片机与可编程并行接口芯片8255的接口设计方法,学会了可编程并行接口芯片8255初始化程序的设计方法,对C口位置位/复位命令有了初步了解。

掌握了keil软件模拟外部中断的调试方法,掌握了protuse与keil软件的联调,熟练了单片机系统的硬件和软件设计方法。

7、思考题:

1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化。

电路图:

程序流程图:

汇编程序:

ORG0000H

START:

LJMPMAIN

MAIN:

MOVSP,#7FH

LCALLDELAY

MOVDPTR,#0300H;指向控制寄存器

MOVA,#80H;PA方式0输出,PB方式0输出,PC高输出,PC低输出

MOVX@DPTR,A

MOVDPTR,#0200H;灭灯

CLRA

MOVX@DPTR,A

LOOP:

MOVDPTR,#TABLE;指向表首地址

MOVA,R0

MOVCA,@A+DPTR

RLA

SETBACC.0

MOVDPTR,#0300H;指向控制口

MOVX@DPTR,A

INCR0

LCALLDELAY

CJNER0,#0FH,LOOP

MOVR0,#00H

LJMPLOOP

DELAY:

MOVR7,#0A7H

DL1:

MOVR6,#0ABH

DL0:

MOVR5,#10H

DJNZR5,$

DJNZR6,DL0

DJNZR7,DL1

NOP

RET

ORG0050H

TABLE:

DB00H,01H,02H,03H,04H,05H,06H,07H;十六进制表格

DB08H,09H,0AH,0BH,0CH,0DH,0EH,0FH

END

C语言程序:

#include

#include

#include

#defineucharunsignedchar

#defineCOM8255XBYTE[0x0003]

#definePC8255XBYTE[0x0002]

voiddelay1s();

voidmain()

{ucharn=8;

ucharh=0x01;

COM8255=0x80;

while

(1)

{

PC8255=h;

delay1s();

h=_crol_(h,1);

}

}

voiddelay1s(void)

{

unsignedchara,b,c;

for(c=167;c>0;c--)

for(b=171;b>0;b--)

for(a=16;a>0;a--);

_nop_();

}

end;

实验结果:

用C口位置位/复位命令实现依次循环点亮,每个灯亮一秒。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2