P1口亮灯实验

    选择打赏方式

一、实验目的

        1、熟悉编程和程序调试

2、学习P1口的使用方法

3、学习延时子程序的编写

 

二、实验内容

P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮,修改程序,改变延时常数,使发光二极管闪亮时间改变,并使发光二极管闪亮移位方向改变。

 

三、程序框图

        2018-08-29.png

    

四、实验步骤

1、用8芯线将P1.0~P1.7连至L1~L8

2、运行程序HW01.asm,观察发光二极管闪亮移位情况。

 

五、实验结果

    程序源代码

        ORG 0000H

        LJMP SE18

        ORG 0080H

SE18:   MOV P1,#0FFH    ;送P1口

LO34:   MOV A,#0FEH     ;L1发光二极管点亮

LO33:   MOV P1,A

        LCALL SE19      ;延时

        RL A            ;左移位

        SJMP LO33       ;循环

 

SE19:   MOV R6,#0A0H    ;延时子程序

LO36: MOV R7,#0FFH

LO35: DJNZ R7,LO35

DJNZ R6,LO36

       RET

       END


    2018-08-29(1).png


改变延时常数,使发光二极管闪亮时间改变,并使发光二极管闪亮移位方向改变

源代码

       ORG 0000H

       LJMP SE18

       ORG 0080H

    SE18:     MOV P1,#0FFH    ;送P1口

    LO34:    MOV A,#0FEH     ;L1发光二极管点亮

    LO33:    MOV P1,A

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

    LCALL SE19      ;延时

 

       RR   A          ;右移位

       SJMP LO33       ;循环

 

SE19:   MOV R6,#0A0H    ;延时子程序

LO36:    MOV R7,#0FFH

LO35:    DJNZ R7,LO35

       DJNZ R6,LO36

        RET

        END

 

七、实验结论、实验体会

     此次实验是单片机上机操作的第一次实验,由于此前已经在软件实验中接触过所需的Keil软件,遂在软件安装等方面没有花费太多时间;实验前半部分是将既定程序通过软件连接至机箱执行,其实验结果为LED灯从左到右依次点亮,在第二个灯点亮时前一个灯熄灭,形成流水灯效果,此部分没有遇到太大的困难;更改延时程序部分,经过查询,由于Keil该软件不支持传送立即数数据首位为子母位以及一些未知问题、且经过测试更改R6为#0A00H或者#0A000H均无法实现相应延时效果,其结果不是不能运行,即是程序报错,我们遂采取下策,将原程序的延时子程序多次调用以实现LED灯亮灭间隔达到1S的效果;另外把左移指令RL改为右移指令RR,则可以使发光二极管闪亮方向改变。



版权声明:若无特殊注明,本文为《Chin》原创,转载请保留文章出处。
本文链接:https://www.qinor.cn/post-15.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!