找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1744|回复: 0
收起左侧

STC89C51单片机实验记录心得 小小记录,点滴进步

[复制链接]
ID:712544 发表于 2021-2-6 11:12 | 显示全部楼层 |阅读模式
汇编学习单片机,小小记录,点滴进步
实验目的:一个LED闪烁的简单实验
实验代码:
    ORG 0000H      
    LJMP MAIN      
    ORG 0030H      
MAIN:   
    CLR  P1.0      
    LCALL DELAY     
    SETB P1.0      
    LCALL DELAY
    LJMP MAIN        
DELAY:  MOV R5,#04H   
F3: MOV R6,#0FFH
F2: MOV R7,#0FFH
F1: DJNZ R7,F1         ;若为0程序向下执行,若不为0程序跳转到
    DJNZ R6,F2
    DJNZ R5,F3
    RET
    END
代码解析:
ORG后面跟一个地址,是指该语句后的指令会放到这个地址里,一直顺序存放,直到END
ORG 0000H:程序从此地址开始运行
ORG 030H :在0000H到0030H之间,很多地址都是留给中断或者DOS保留的使用的,所以一般是从
0030H以后的地址开始,加一条跳转指令,跳转到 MAIN 程序处
LED原理图
51hei.png

现在要D8灯亮,则P1.0需要是低电平,CLR p1.0这条语句是将P1.0中的内容清零,高电平取反为低电平,这时候LED就亮,接着调用延时子程序,即将立即数传给寄存器R5,实现延时SETB p1.0是用来把其后面的寄存器的位置1,即将其变为高电平,这时候LED就不亮,紧接着继续调用延时程序
DJNZ指令的具体功能是使操作数的内容减1,并判断操作数是否等于0,如果不等于0,则跳转至标号处,如果等于0,则顺序往下执行。
#0FFH是单片机汇编语bai言程序中一个8位二进du制数的16进制表示方法,#表示这是一zhi个数字,0是汇编语言的规定,即当16进制数dao的高位数大于9时,前面要加0,FF是这个16进制数的数值,即255,H是16进制数的尾缀。

子程序F3来实现某个灯的熄灭和点亮,0FFH即11111111B,最后一个等D8点亮

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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