电子技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2142|回复: 1

一键多功能控制LED闪烁的汇编语言程序

[复制链接]

624

主题

627

帖子

416

积分

专栏作家

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分
416
发表于 2015-1-22 17:04:22 | 显示全部楼层 |阅读模式
一键多功能控制LED闪烁的汇编语言程序

LED EQU 30H;  给30H储存单元起个名叫LED;
SP1 BIT P3.7; 给P3.7位起个名叫SP1;
ORG 0;         程序起始地址;

START: MOV LED,#0FEH;程序初始化;

NEXT: MOV A,LED;将初始化好的值送入ACC累加器中,设定P1.0灯闪烁;

KEY: ;;;;;;;;;;;;;;;;;;;;;;;;;;;按键判断程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

          JB SP1,MIAN;   判断按键SP1是否按下,否就去MIAN标号处执行;
LCALL DELAY10MS; 按键消抖动;
JB SP1,MIAN ;真的按下了,
RL A;        A中的数据左移一位;
JNB SP1,$;    判断按键是否松开,没松开就在此等待,松开了就顺序执行;
CJNE A,#0EFH,MIAN; 判断A是否等于立即数#0EFH;即是否到达P1.3位置了。不是返回MIAN标号处执行。
JMP START;   是,跳回程序开头,循环。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;p1口闪烁主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MIAN:
          MOV P1,A;       ;;;;;p1口的那个灯闪烁由A中的值决定。
LCALL DELAY1S;  延时1秒
MOV P1,#0FFH;   关闭P1口所有的灯。
LCALL DELAY1S;  延时1秒
JMP KEY;        跳到KEY标号处执行。

DELAY1S:
  MOV    R3,#100 ;  延时子程序(1000ms) 修改R的值可以改变闪烁灯延时时间。取值范围:0-255。
D1:    MOV    R4,#20
D2:    MOV    R5,#248
       DJNZ   R5,$
  DJNZ   R4,D2
  DJNZ   R3,D1
  RET            ;        返回主程序
DELAY10MS:                 ;延时子程序(10ms)
D3:    MOV    R4,#20
D4:    MOV    R5,#248
       DJNZ   R5,$
       DJNZ   R4,D4
       DJNZ   R3,D3
       RET            ;
       END  
            ; 汇编程序结束编程序结束

1

主题

2

帖子

11

积分

论坛学徒

Rank: 2

积分
11
发表于 2016-3-18 14:10:31 | 显示全部楼层
你好!因为我还没等级所以发不了私信给你,我有事想找你合作一下。有时间加我QQ792182225
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|电子技术论坛 ( 鄂ICP备09003585号-2 )

GMT+8, 2019-1-24 19:46 , Processed in 0.073283 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2018 Comsenz Inc.

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