单片机---P1口实验一.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:4 大小:95KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

单片机---P1口实验一.doc

单片机---P1口实验一.doc

预览

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

16 金币

下载此文档

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

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

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

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

实验一P1口实验一一、实验目的:学习P1口的使用方法。学习延时子程序的编写和使用。二、实验设备:EL-8051-III型单片机实验箱三、实验内容:P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。四、实验原理:P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。可以用第二个实验做一下实验。先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。现要写一个延时0.1s的程序,可大致写出如下:MOVR7,#X(1)DEL1:MOVR6,#200(2)DEL2:DJNZR6,DEL2(3)DJNZR7,DEL1(4)上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10⁶指令(1)指令(2)指令(3)指令(4)所需时间所需时间所需时间所需时间X=(0.1××10⁶-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH经计算得X=127。代入上式可知实际延时时间约为0.100215s,已经很精确了。五、实验原理图:P1口输出实验P1口输入实验六、实验步骤:执行程序1(T1_1.ASM)时:CPU板上的P1.0~P1.7接试验箱的发光二极管L1~L8;试验箱上电,打开软件,设置好端口和波特率,然后加载实验程序,依次点击汇编(F3),调试(F5),运行(F9),观察实验结果,八个LED等循环点亮。执行程序2(T1_1.ASM)时:CPU板上的P1.0~P1.7接试验箱的平推开关K1~K8;试验箱74LS273的O0~O7接试验箱发光二极管L1~L8;试验箱上74LS273的片选端CS273接试验箱上CPLDENCODERUNIT的CS0(由程序所选择的入口地址而定,与CSO~CS7相应的片选地址请查看第一部分系统资源,以后不赘述);试验箱上电,加载实验程序,依次点击汇编,调试,运行,观察实验结果,可用开关来控制LED灯的亮灭。七、程序框图:循环点亮发光二极管通过发光二极管将P1口的状态显示八、参考程序:1、循环点亮发光二极管(T1_1.ASM)NAMET1_1;P1口输实验CSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVA,#0FEHLOOP:RLA;左移一位,点亮下一个发光二极管MOVP1,ALCALLDELAY;延时0.1秒JMPLOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY:MOVR1,#127;延时0.1秒DEL1:MOVR2,#200DEL2:DJNZR2,DEL2DJNZR1,DEL1RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;END2、通过发光二极管将P1口的状态显示(T1_2.ASM)NAMET1_2;P1口输入实验OUT_PORTEQU0CFA0HCSEGAT0000HLJMPSTARTCSEGAT4100HSTART:MOVP1,#0FFH;复位P1口为输入状态MOVA,P1;读P1口的状态值入累加器AMOVDPTR,#OUT_PORT;将输出口地址赋给地址指针DPTRMOVX@DPTR,A;将累加器A的值赋给DPTR指向的地址JMPSTART;继续循环监测端口P1的状态END