立即注册 登录
返回首页

uid:59980的个人空间

日志

一键多功能控制LED闪烁的汇编语言程序(绝对个人原创)

已有 3784 次阅读2014-10-14 20:24 |个人分类:键盘控制类

;;;;自己一时兴起,写的一键多功能汇编语言程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:25 2014-10-14


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  
            ; 汇编程序结束编程序结束

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

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

Powered by 单片机教程网

返回顶部