- 第5章(1):八路彩灯控制程序
- (1)D1~D8八个彩灯按规定顺序依次点亮(间隔1秒),最后全亮;
(2)按规定顺序依次熄灭(间隔1秒),最后全灭;
(3)八个灯同时点亮,保持1秒;
(4)八个灯同时熄灭,保持0.5秒;
再将第3、4步重复4遍,最后整个程序再重复N遍
程序如下:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV R7,#7
LOOP: MOV R6,#16
MOV R5,#4
MOV DPTR,#TABLE
MOV R4,#0
LOOP1: MOV A,R4
MOVC A,@A+DPTR
MOV P1,A
INC R4
LCALL DELAY
LCALL DELAY
DJNZ R6,LOOP1
LOOP2: MOV P1,#0FFH
LCALL DELAY
LCALL DELAY
MOV P1,#00H
LCALL DELAY
DJNZ R5,LOOP2
DJNZ R7,LOOP
DELAY: MOV R1,#4
A1: MOV R2,#0FFH
A2: MOV R3,#0FFH
DJNZ R3,$
DJNZ R2,A2
DJNZ R1,A1
RET
TABLE:
DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,080H,000H ;逐个叠加
DB 080H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH ;逐个递减
SJMP $
END
-
2010/5/18
-
人气(7045)
-
星级(10)
-
评论(1)
- 第3章(8):单片机硬件系统MCS51指令系统
- 7].堆栈操作类指令(2条)
这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。
PUSH data ;(SP)+1→(SP),(data)→(SP)堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POP data ;(SP)→(data)(SP)-1→(SP),堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作
[8].交换指令(5条)
这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。
XCH A,Rn ;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCH A,@Ri ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换
XCH A,data ;(A)←→(data)累加器与直接地址单元中的内容互换
XCHD A,@Ri ;(A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAP A ;(A3-0)←→(A7-4)累加器中的内容高低半字节互换
[9]. 16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。
MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL算术运算指令共有24条,算术运算主要是执行加。减。乘。除法四则运算。另外MCS-51指令系统中有相当一部分是进行加。减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加。减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。这在使用中应特别注意。
-
2010/4/21
-
人气(7426)
-
星级(10)
-
评论(1)