预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验二I/O口输入、输出实验 一、实验目的 1.学习I/O口的使用方法。 2.学习延时子程序、查表程序的编写和使用。 二、参考程序框图 开始 读入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; L1:MOVR1,P1;//消除按键抖动 MOVA,R1; CJNEA,#0FFH,LL1; AJMPSTART; LL1:CJNEA,#0FEH,LL2;//是否按键1输入 MOVP2,#06H;//是则P2输出相应的按键号码 CPLA;//A取反 MOVP0,A;//输出到P0口 LCALLDELAY;//延迟 AJMPLP;//跳转到LP LL2:CJNEA,#0FDH,LL3;//是否按键2输入 MOVP2,#5BH;//以下同上 CPLA; MOVP0,A; LCALLDELAY; AJMPLP; LL3:CJNEA,#0FBH,LL4;//判断按键3是否按下 MOVP2,#4FH; CPLA; MOVP0,A; LCALLDELAY; AJMPLP; LL4:CJNEA,#0F7H,LL5;//判断按键4是否按下 MOVP2,#66H; CPLA; MOVP0,A; LCALLDELAY; AJMPLP; LL5:CJNEA,#0EFH,LL6;//判断按键5是否按下 MOVP2,#6DH; CPLA; MOVP0,A; LCALLDELAY; AJMPLP; LL6:CJNEA,#0DFH,LL7;//判断按键6是否按下 MOVP2,#7DH; CPLA; MOVP0,A; LCALLDELAY; AJMPLP; LL7:CJNEA,#0BFH,LL8;//判断按键7是否按下 MOVP2,#07H; CPLA; MOVP0,A; LCALLDELAY; AJMPLP; LL8:CJNEA,#7FH,LP;//判断按键8是否按下 MOVP2,#7FH; CPLA; MOVP0