视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验一-P1口实验
2025-09-30 22:50:17 责编:小OO
文档
实验一   P1口实验一

一、实验题目

1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2.P1口做输出口,接八个按钮开关,以实验台上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。

二、实验目的

1.学习P1口的使用方法。

2.学习延时子程序的编写和使用。

三、有关说明

P1口为准双向口,P1口的每一位都能地定义为输入位或输出位。作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。

可以用第二个实验做一下实验。先按要求编号程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。

再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。

本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。现要写一个延时0.1s的程序,可大致写出如下:

MOV  R7,  #200         (1)

DEL1:  MOV  R6,  #X           (2)

DEL2:  DJNZ  R6,  DEL2        (3)

       DJNZ  R7,  DEL1        (4)

上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X值:  

1÷0.256+(1÷0.256+X×1÷0.256+1÷0.256)×200=0.1×106

指令(1) 指令(2)  指令(3) 指令(4)

所需时间  所需时间  所需时间  所需时间

 经计算得X=126。代入上式可知实际延时时间约为0.100004s,已经很精确了。

四、连线方法

执行程序1时:P1.0~P1.7接发光二极管L1~L8。

执行程序2时:P1.0~P1.7接按钮开关K1~K8;74LS273的S00~S07接发光二极管L1~L8;74LS273的片选端CSU8\接CS0

五、程序1

CSEG     AT 0000H

        LJMP START

CSEG     AT 4100H

START:  MOV A,#0FEH

LOOP:   RR  A           

        MOV P1,A

        LCALL DELAY        

        JMP   LOOP

 

DELAY:  MOV R1,#127     

DEL1:   MOV R2,#200

DEL2:   DJNZ  R2,DEL2

        DJNZ  R1,DEL1

        RET

    

        END

机器码与源程序对比

LOC  OBJ            LINE     SOURCE

                       1     NAME    T1_1

                       2     CSEG    AT 0000H

0000 024100            3             LJMP START

                       4     CSEG    AT 4100H

4100 74FE              5     START:  MOV A,#0FEH

4102 03                6     LOOP:   RR  A           

4103 F590              7             MOV P1,A

4105 12410A            8             LCALL DELAY             

4108 80F8              9             JMP   LOOP

                      10      

410A 797F             11     DELAY:  MOV R1,#127     

410C 7AC8             12     DEL1:   MOV R2,#200

410E DAFE             13     DEL2:   DJNZ  R2,DEL2

4110 D9FA             14             DJNZ  R1,DEL1

4112 22               15             RET

                      16         

                      17             END

                             

六、程序2

NAME    T1_2                ;P1口输入实验

OUT_PORT    EQU        0CFA0H

CSEG AT 0000H

        LJMP START

CSEG AT 4100H

START:  MOV P1,#0FFH         ;复位P1口为输入状态

        MOV A,P1             ;读P1口的状态值入累加器A

        MOV DPTR,#OUT_PORT   ;将输出口地址赋给地址指针DPTR

        MOVX @DPTR,A         ;将累加器A的值赋给DPTR指向的地址

        JMP   START          ;继续循环监测端口P1的状态

        END下载本文

显示全文
专题