单片机实验IO口的输入输出实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二
I/O 口输入、输出实验
一、实验目的
1. 学习I/O 口的使用方法。
2. 学习延时子程序、查表程序的编写和使用。
二、参考程序框图
三、程序设计
1、P0口循环点亮程序 ORG 0030H
START : MOV P2,#00H; O 口初始化
MOV P1,#0FFH; //P1口赋FFH 初值 MOV P0,#00H; 开始
延时
设置初始值
数据输出
左移一位
开始 读入P1口值
置计数初值=0
P1口置1
将读入的值输出到P0
P1=0FFH?
Y
N
输入值右移1位到Cy Cy=0?
N
计数值+1
Y
以计数值查段码表
段码输出到P2
START : MOV P2,#00H; //P2清0;
MOV P0,#00H; //P0清0;
MOV R1 ,P1;
MOV A,R1; //读P1口
CJNE A,#0FFH,L1; //是否有数据输入
AJMP START; //无输入则跳转,继续查询
LCALL DELAY;
L1 : MOV R1,P1; //消除按键抖动
MOV A,R1;
CJNE A, #0FFH,LL1;
AJMP START;
LL1 : CJNE A,#0FEH,LL2; //是否按键1输入
MOV P2,#06H; //是则P2输出相应的按键号码
CPL A; //A取反
MOV P0,A; //输出到P0口
LCALL DELAY; //延迟
AJMP LP; //跳转到LP
LL2 : CJNE A,#0FDH,LL3; //是否按键2输入
MOV P2,#5BH; //以下同上
CPL A;
MOV P0,A;
LCALL DELAY;
AJMP LP;
LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下
MOV P2,#4FH;
CPL A;
MOV P0,A;
LCALL DELAY;
AJMP LP;
LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下
MOV P2,#66H;
CPL A;
MOV P0,A;
LCALL DELAY;
AJMP LP;
LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下
MOV P2,#6DH;
CPL A;
MOV P0,A;
LCALL DELAY;
AJMP LP;
LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下
MOV P2,#7DH;
CPL A;
MOV P0,A;
LCALL DELAY;
AJMP LP;
LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下
MOV P2,#07H;
CPL A;
MOV P0,A;
LCALL DELAY;
AJMP LP;
LL8 : CJNE A,#7FH,LP; //判断按键8是否按下
MOV P2,#7FH;
CPL A;
MOV P0,A;
LCALL DELAY;
LP : AJMP START; //跳转回程序开头
DELAY : MOV R7,#01H; //延时程序
DE1 : MOV R6,#28H;
DE2 : MOV R5,#5AH;
DJNZ R5,$;
DJNZ R6,DE2;
DJNZ R7,DE1;
RET
END
四、思考题
1、LED循环方向更改:RL A; 改成RR A;
1S的延时程序: DELAY : MOV R7,#20; //延时程序
DE1 : MOV R6,#200;
DE2 : MOV R5,#123;
DJNZ R5,$;
DJNZ R6,DE2;
DJNZ R7,DE1;
RET
2、提高电阻阻值
3、一般为5V或者。
单片机上电时I/O口出于高电平,则I/O口的输出电压要经过PNP三极管放大,再对继电器控制。