这是两个很适合51单片机初学者入门与学习的汇编程序,我尽量将每一句都注释下来。
1:在单片机系统的P1.0口接上一个发光二极管,实现此灯的闪烁功能。
LED EQU P1.0 ;P1.0引脚上接上一个发光二极管
ORG 0 ;程序从0地址开始
START: CLR LED ;点亮发光二极管
LCALL DELAY ;调用延时子程序(亮1秒钟)
SETB LED ;关掉发光二极管
LCALL DELAY ;调用延时子程序(关1秒钟)
LJMP START ;跳到START标号处执行
DELAY: ;1秒延时子程序(12MHz晶振)
MOV R5,#8 ;R5寄存器加载8次
D0: MOV R7,#250 ;R7寄存器加载250次数
D1: MOV R6,#250 ;R6寄存器加载250次数
D2: DJNZ R6,D2 ;D2循环执行R6次
DJNZ R7,D1 ;D1循环执行R7次
DJNZ R5,D0 ;D0循环执行R5次
RET ;返回主程序
END ;主程序结束
2:在单片机系统的P1口接上8个发光二极管,实现低位4个和高位4个的交替闪烁。
ORG 0 ;程序从0地址开始
START: MOV A,#0FH ;让ACC的内容为00001111
LOOP: MOV P1,A ;从P1输出ACC的内容
CPL A ;对ACC的内容取反码(即反相)
CALL DELAY ;调用延时子程序
LJMP LOOP ;跳到LOOP处执行
DELAY: ;0.1秒延时子程序(12MHz晶振)
MOV R7,#200 ;R7寄存器加载200次数
D0: MOV R6,#250 ;R6寄存器加载250次数
DJNZ R6,$ ;本行执行R6次
DJNZ R7,D0 ;D1循环执行R7次
RET ;返回主程序
END ; 主程序结束
原创文章如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]