实验二 I/O 口输入、输出实验一、实验目得1、 学习 I/O 口得使用方法。2、 学习延时子程序、查表程序得编写与使用。二、参考程序框图三、程序设计1、P0 口循环点亮程序 ORG 0030HSTART : MOV P2,#00H; //消影 MOV A ,#01H; //LOOP : MOV P2 ,A; //点亮一个 led 灯 ACALL DELAY; //延时 500ms RL A; //左移一位 AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RET END 2、I/O 口输入输出(方法一) ORG 0000H;START : MOV P2,#00H; //初始化 MOV P0,#00H; MOV P1,#0FFH; //p1 口初始化给 ffh 值 MOV DPTR,#TABLE; //表地址存入 DPTR MOV 50H,#0FEH; //比较初值载入地址 50hL0 :MOV A,P1; //按键消抖 CJNE A,#0FFH,L1; AJMP L0;L1 :MOV A,P1; CJNE A,#0FFH,LL1; AJMP L0;LL1 :CJNE A,50H,LL2; //就是否与地址 50h 中数据相等 MOV P0,A; //相等 输出对应 led 灯 MOV A,#00H; MOVC A,A+DPTR; MOV P2,A; //输出表格数据到数码管 LCALL DELAY; //延时 LJMP START; //返回程序开头开始延时设置初始值数据输出左移一位开始读入 P1 口值置计数初值 =0P1 口置 1将读入得值输出到 P0P1=0FFH?YN输入值右移 1 位到 CyCy=0?N计数值 +1Y以计数值查段码表段码输出到 P2LL2 :XCH A,50H; //交换数据 RL A; //左移 XCH A,50H; //再次交换,此时地址 50h 中数据左移一位 INC DPTR; //表格数据地址加一 LJMP LL1; //返回 继续比较DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H; DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据 END 程序二(方法二)ORG 0000H MOV P2,#00H; //I、/O 口初始化 MOV P1,#0FFH; //P1 口赋 FFH 初值 MOV P0,#00H;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...