文档详情

单片机实验 IO口的输入输出实验.docx

发布:2025-04-24约3.82千字共4页下载文档
文本预览下载声明

实验二I/O口输入、输出实验

一、实验目得

1、学习I/O口得使用方法。

2、学习延时子程序、查表程序得编写和使用。

二、参考程序框图

开始读入P1口值

开始

读入P1口值

置计数初值=0

P1口置1

将读入得值输出到P0

P1=0FFH?

Y

N

输入值右移1位到Cy

Cy=0?

N

计数值+1

Y

以计数值查段码表

段码输出到P2

开始

延时

设置初始值

数据输出

左移一位

三、程序设计

1、P0口循环点亮程序

ORG0030H

START:MOVP2,#00H;//消影

MOVA,#01H;//

LOOP:MOVP2,A;//点亮一个led灯

ACALLDELAY;//延时500ms

RLA;//左移一位

AJMPLOOP;//跳转循环

DELAY:MOVR7,#10;//延时程序

DE1:MOVR6,#200;

DE2:MOVR5,#123;

DJNZR5,$;

DJNZR6,DE2;

DJNZR7,DE1;

RET

END

2、I/O口输入输出(方法一)

ORG0000H;

START:MOVP2,#00H;//初始化

MOVP0,#00H;

MOVP1,#0FFH;//p1口初始化给ffh值

MOVDPTR,#TABLE;//表地址存入DPTR

MOV50H,#0FEH;//比较初值载入地址50h

L0:MOVA,P1;//按键消抖

CJNEA,#0FFH,L1;

AJMPL0;

L1:MOVA,P1;

CJNEA,#0FFH,LL1;

AJMPL0;

LL1:CJNEA,50H,LL2;//就就是否与地址50h中数据相等

MOVP0,A;//相等输出对应led灯

MOVA,#00H;

MOVCA,A+DPTR;

MOVP2,A;//输出表格数据到数码管

LCALLDELAY;//延时

LJMPSTART;//返回程序开头

LL2:XCHA,50H;//交换数据

RLA;//左移

XCHA,50H;//再次交换,此时地址50h中数据左移一位

INCDPTR;//表格数据地址加一

LJMPLL1;//返回继续比较

DELAY:MOVR7,#01H;//延时程序

DE1:MOVR6,#28H;

DE2:MOVR5,#5AH;

DJNZR5,$;

DJNZR6,DE2;

DJNZR7,DE1;

RET

TABLE:;//DB0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;

DB06H,5BH,4FH,66H,6DH,7DH,07H,7FH;//表格数据

END

程序二(方法二)

ORG0000H

MOVP2,#00H;//I、/O口初始化

MOVP1,#0FFH;//P1口赋FFH初值

MOVP0,#00H;

START:MOVP2,#00H;//P2清0;

MOVP0,#00H;//P0清0;

MOVR1,P1;

MOVA,R1;//读P1口

CJNEA,#0FFH,L1;//就就是否有数据输入

AJMPSTART;//无输入则跳转,继续查询

LCALLDELAY;

显示全部
相似文档