找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8915|回复: 0
打印 上一主题 下一主题
收起左侧

让单片机P0、P1、P2和P3端口所接的灯同时全亮全灭 汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:71407 发表于 2014-12-31 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;51单片机入门程序8 ;工程名称:让单片机P0、P1、P2和P3端口所接的灯同时全亮全灭
;编写日期:2009.7.4
;编写者:蓝柳柳
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORG 0000H MAIN:
MOV P0,#00000000B
MOV P2,#00000000B
MOV P1,#00000000B
MOV P3,#00000000B
LCALL YS ;调用延时子程序
MOV P0,#11111111B
MOV P2,#11111111B
MOV P1,#11111111B
MOV P3,#11111111B
LCALL YS ;调用延时子程序
LJMP MAIN ;循环
YS: ;延时子程序YS,功能是能让LED亮起来或者灭掉一小段时间
MOV R1,#200 ;让灯亮灭时间的长短也就是延时的长短跟#号后面的数据有关
D: MOV R2,#200 ;延时长点#号后面的数据就大点,延时短点#号后面的数据
T: MOV R3,#200 ;就小点,但#号后面最大的数据是255
DJNZ R3,$ DJNZ R2,T DJNZ R1,D RET ;子程序返回指令,子程序的设计一般都是因为主程序要调用它, ;调用完是要返回到主程序继续运行下一个语句的
END

;补充说明:AJMP、SJMP、LJMP都是控制转移类指令,功能都是一样的, ; 但是当你所编写的程序比较长的时候就要用LJMP。 ; ; ACALL和LCALL都是调用指令,当程序很长的时候就用LCALL ; ; 延时子程序内部的运作比较复杂,大家只知道延时子程序的 ; 功能是能延时一小段时间。CUP那些内部部件把数码送出端口之后 ; 碰到了ACALL和LCALL这些指令后CPU就暂时不往端口送数了 ; 而是转来运行延时子程序,子程序运行过程大概是这样: ; 先把一些数分别送到一些寄存器里面去,然后进行减1判断不为0的工作 ; 就象我们我们把一些水果送到一些房间里面去,然后在里面把这些水果吃 ; 完,再去做正式的工作 ,吃水果的过程是花费时间滴,呵呵! ; 延时子程序基本上是固定不变的,只要是要延长时间都把这段子程序输进去就可以了!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表