微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机汇编语言(四)

51单片机汇编语言(四)

时间:11-24 来源:互联网 点击:

25: RL A ; 左移一位

26: DJNZ R0, LOOP2 ; 判断移动位数

27: MOV R0,#07 ; 设置右移位数

28: LOOP3:RR A ; 右移一位

29: MOV P1, A ; 输出至P1

30: LCALL DELAY ; 调延时子程序

31: DJNZ R0, LOOP3 ; 右移7 位? 左右

32: DJNZ R3,LOOP1 ; 左右移3次?

33: POP PSW ; 从堆栈取回PSW值 恢复 EXT0

34: POP ACC ; 从堆栈取回值 A值 现场 中断子

35: RETI ; 返回主程序 程序

36: EXT1: PUSH ACC ; 将A值压入堆栈

37: PUSH PSW ; 将 PSW值压入堆栈

38: SETB RS1 ; 设工作组2 ,RS1=1 保护

39: CLR RS0 ; RS0=0 现场

40: MOV R3,#04 ;左右移4次

41: LOOP4:MOV R0, #06 ; 设置左移位数

42: MOV A ,#0FCH ; 设置左移初值

43: LOOP5:MOV P1, A ; 输出至P1

44: ACALL DELAY ; 调延时子程序

45: RL A ; 左移一位

46: DJNZ R0, LOOP5 ; 判断移动位数

47: MOV R0,#06 ; 设置右移位数

48: LOOP6:RR A ; 右移一位

49: MOV P1, A ; 输出至P1

50: LCALL DELAY ; 调延时子程序

51: DJNZ R0, LOOP6 ; 判断 左右

52: DJNZ R3,LOOP4 ; 左右移4次?

53: POP PSW ; 从堆栈取回PSW值 恢复 EXT1

54: POP ACC ; 从堆栈取回值 A值 现场 中断子

55: RETI ; 返回主程序 程序

56: DELAY:MOV R5, #20 ; 延时0.2秒子程序

57: DLY1: MOV R6, #20 ;

58: DLY2: MOV R7, #248 ;

59: DJNZ R7, $ ;

60: DJNZ R6, DLY2 ;

61: DJNZ R5, DLY ; 延时子

62: RET ; 程序

63: END ; 程序结束

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top