51单片机汇编语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机汇编语言
a)单个与多个LED灯,位操作与字节操作—输出
ORG 0000H
START:
CLR C
MOV P0.0,C
MOV P1.1,C
MOV P2.2,C
MOV P3.3,C
CLR ACPL A
MOV P0,A
MOV P1,A
MOV P2,A
MOV P3,A
END
程序说明:
可以用7段数码管来代替各端口的8个LED灯,硬件的这种显示方式使得数字表达成为实用。数字显示由数码管的硬件结构与工作原理(7个LED灯的几何变形组合)和数字表达的数据格式确定。
如:
共阳极数码管显示数字3,则有P1口送数据#4FH;MOVP1, #0B0H
共阴极数码管显示数字8,则有P1口送数据#80H;MOVP1, #7F H
用数据表表示则有:
TABshuziyang: //阳极管(共阴极管取反即可)
DB(数字0~F)
C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H,C 6H,A1H,86H,8EH
TABshuziyin: //阴极管(共阳极管取反即可)
DB(数字0~F)
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,3 9H,5EH,79H,71H
b)单个与多个LED灯闪烁—延时子程序—注意定时器
前边已经看到,通过改变位或字节的赋值,可以使得LED 灯亮或灭,以此形成闪烁效果。但是硬件的响应时间太短,使得效果不佳。虽然可以通过改变单片机的时钟设置来改变效果。但时钟的改变极其不方便,因此需要利用延时指令(注意定时器功能)获得理想的效果。延时效果是利用单片机空转来实现的。
ACALLDELAY;调延时子程序
************************************************* ************************
DELAY:;延时子程序—这是一个非常有用、而且常见的一个子程序
MOV R5,#04H;将16进制数04H传递给寄存器R5
F3:
MOV R6,#0FFH;将16进制数0FFH传递给寄存器R6
F2:
MOV R7,#0FFH;将16进制数0FFH传递给寄存器R7
F1:
DJNZR7, F1;寄存器R7减1非0跳转到F1,直到减为0顺序执行下一指令
DJNZR6, F2;寄存器R6减1非0跳转到F2,直到减为0顺序执行下一指令
DJNZR5, F3;寄存器R5减1非0跳转到F3,直到减为0顺序执行下一指令
RET;子程序结束,返回子程序入口处ACALLDELAY;调延时子程序
************************************************* **************************
应用实例
MAIN:
CLR C
MOV P0.0,C
MOV P1.1,C
MOV P2.2,CMOV P3.3,C
ACALLDELAY;调延时子程序
;CLR A
CPL A
MOV P0,A
MOV P1,A
MOV P2,A
MOV P3,A
ACALL DELAY;调延时子程序
SJMP MAIN ;相对转移时间短,用AJMP绝对转移时间长,RET是用于子程序的返回
DELAY:;延时子程序-这是一个非常有用、而且常见的一个子程序
MOV R5,#04H;将16进制数04H传递给寄存器R5
F3:
MOV R6,#0FFH;将16进制数0FFH传递给寄存器R6
F2:
MOV R7,#0FFH;将16进制数0FFH传递给寄存器R7
F1:
DJNZR7, F1 ;寄存器R7减1非0跳转到F1,直到减为0顺序执行下一指令
DJNZR6, F2 ;寄存器R6减1非0跳转到F2,直到减为0顺序执行下一指令
DJNZR5, F3 ;寄存器R5减1非0跳转到F3,直到减为0顺序执行下一指令
RET;子程序结束,返回子程序入口处ACALLDELAY;调延时子程序
END
程序说明:
注意延时子程序中的DJNZR7, F1;DJNZR6, F2;DJNZR5, F3;通过增加或减少循环数目控制或改变延时时间
c)单个与多个LED灯流动—位循环、字节循环与延
时子程序
ORG 0000H
MAIN:
;****************位循环—扫描—流水灯—逐级增加灯的数目*******************
CLR C
MOV P0.0,C
ACALLDELAY;调延时子程序
MOV P0.1,CACALLDELAY MOV P0.2,C
ACALLDELAY MOV P0.3,C
ACALLDELAY
MOV P0.4,C
ACALLDELAY
MOV P0.5,C
ACALLDELAY
MOV P0.6,C
ACALLDELAY MOV P0.7,C
ACALLDELAY;注意前面各位状态一直持续。P0口各位电平保持不变
;****************位循环—流水灯—逐个改变灯亮与灭*******************
CLR C
MOV P0.0,C
ACALLDELAY;调延时子程序
CPL C
MOV P0.0,CACALLDELAY
CLR C