实验七 P1口实验
实验学时:2
实验类型:设计/研究 实验要求:必修
一、实验说明
1、学习P1 口的使用方法。 2、学习延时子程序的编写和使用。
3、学习用‘与’‘或’运算对MCS96系列 CPU的变量进行位操作。
二、实验目的
1、P1 口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2、P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意 P1.0,P1.1作为输入口时应先置 1,才能正确读入值。
三、实验电路及连线
四、实验说明
1、P1 口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用为输入口时,必须先对它置“1” 。若不先对它置“1” ,读入的数据是不正确的。
2、由于80C196系列CPU没有位操作,所以要对P1.0,P1.1进行与运算,以判断该 位为高还是为低,然后再用‘与’和‘或’运算将 P1.2,P1.3的相应位置高或
19
低。 这与80C51系列CPU不同。80C51可以将位变量通过 C标志位赋值给其它位。 3、8051延时子程序的延时计算问题,对于程序
Delay:
MOV R6,#0H MOV R7, #0H DelayLoop:
DJNZ R6,DelayLoop DJNZ R7,DelayLoop RET
查指令表可知MOV,DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以该段程序执行时间为:
(256×255+2)×2×12÷6 ≈ 261ms
五、实验框图
20
六、参考程序 程序一: Loop:
mov a, #01h
mov r2, #8 ;设移位次数 Output:
mov P1, a
rl a ;左移一位 call Delay
djnz r2, Output ljmp Loop
Delay:
mov r6,#0 mov r7, #0 DelayLoop:
djnz r6,Delayloop djnz r7, DelayLoop ret
end
程序二:
KeyLeft equ P1.0 KeyRight equ P1.1 LedLeft equ P1.2 LedRight equ P1.3
SETB KeyLeft SETB KeyRight Loop:
MOV C,KeyLeft MOV LedLeft,C MOV C,KeyRight MOV Ledright,C LJMP Loop
END
21