实验5 定时/计数器实验
(1)实验1现象:第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,……一直循环下去。
(2)实验程序注释
ORG 4000H 设置程序起始地址
LJMP START
ORG 401BH 设置中断端口
LJMP IT11 跳转到中断程序
ORG 4100H 设置主程序起始地址
START:MOV A,#05H 将5传送到累加器A
MOV R1,#03H 将3传送到R1
MOV R0,#0AH 将10传送到R0
ANL TMOD,#0FH
ORL TMOD,#10H 设置TMOD的初值
MOV TL1,#0AFH
MOV TH1,#3CH 设置计数初值
MOV IE,#88H 设置IE的值
SETB TR1 设置TR1的初值为1,启动定时器1的运行LOOP1:CJNE R0,#00H,DISP R0不等于0时转移到DISP
MOV R0,#0AH 将10传送到R0,实现定时
INC R1 R1加1,以在后面输出不同的显示码转换LED的闪亮模式
CJNE R1,#0BH,LOOP2 R1不等于11时转移到LOOP2(设置了10种显示模式)
MOV R1,#03H 将3传送到R1,重新设定R1的初值
LOOP2:MOV A,R1 将R1的值传送到累加器A
MOVC A,@A+PC 将(A+PC)单元的值传送到A,即将显示码传送到A
LJMP DISP 转移到DISP
DB 0FAH,0F5H,0AFH,5FH,0AAH,55H,00H,0FFH 显示码
DISP:MOV P1,A将A的值传送到P1口,即将显示码传送到P1口JMP LOOP1 转移到LOOP1,继续循环
IT11:CLR TR1 以下是中断程序,本行命令是将TR1设置为0,即关闭定时器R1 DEC R0 R0减1,实现定时
MOV TL1,#0AFH
MOV TH1,#3CH 设置计数器的初始值,以实现定时时间
SETB TR1 将TR1设置为1,即启动定时器R1
RETI 跳转回主程序
END
1、实验2
ORG 4000H
LJMP START
ORG 401BH
LJMP IT11
PORT EQU 0CFA8H
ORG 4100H
START:MOV TMOD,#60H
MOV TL1,#0FAH
MOV TH1,#0FAH
ORL IE,#88H
SETB TR1
MOV P1,#0FFH
LP:MOV P1,#10H
ACALL DEL1
CPL A
MOV DPTR,#PORT
MOVX @DPTR,A
AJMP LP
IT11:MOV A,#0FFH
MOV DPTR,#PORT
MOVX @DPTR,A
MOV R1,#50H
ACALL DEL1
MOV A,#00H
MOV DPTR,#PORT
MOVX @DPTR,A
RETI
DEL1:MOV R2,#200
DEL2:MOV R3,#126
DEL3:DJNZ R3,DEL3
DJNZ R2,DEL2
DJNZ R1,DEL1
MOV R1,#10
RET
现象:L5、L6不亮,持续5秒钟。
5秒后L5、L6又继续闪亮。
2、实验3程序
ORG 4000H
LJMP START
ORG 401BH
LJMP IT11
ORG 4100H
START:ANL TMOD,#0FH
ORL TMOD,#10H
MOV TL1,0AFH
MOV TH1,#3CH
MOV IE,#88H
SETB TR1
MOV A,#00H
MOV P1,A
MOV R1,#14H LOOP:CJNE R1,#00H,LOOP CPL A
MOV P1,A
MOV R1,#14H
LJMP LOOP
IT11:CLR TR1
DEC R1
MOV TL1,#0AFH
MOV TH1,#03CH
SETB TR1
RETI
END。