中科因仑“3+1”工程特种兵精英论坛

标题: 一键多功能控制LED闪烁的汇编语言程序 [打印本页]

作者: XJzy    时间: 2015-9-29 16:59
标题: 一键多功能控制LED闪烁的汇编语言程序
一键多功能控制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  
            ; 汇编程序结束编程序结束




欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4