SETB EA SJMP $
ONE: PUSH PSW PUSH ACC MOV TL0,#0B0H MOV TH0,#3CH CPL P1.1 POP ACC POP PSW RETI
COU: PUSH PSW PUSH ACC CPL P1.0 POP ACC POP PSW RETI END
66、用一个定时/计数器加软件计数器的方式,实现一秒的时钟基准信号,试写出程序并加以说明。(设晶振频率为12MHz,由P1.0口输出秒信号。) (本程序使用定时器T0,工作模式1。由于晶振频率为12MHz,因此利用定时器T0计时50ms,其初值为3CB0H。利用工作寄存器R7作软件计数器,计数20次。每计时满一秒,就将P1.0口输出信号取反,以输出秒信号。) ORG 0000H LJMP MAIN ORG 000BH LJMP ONE ORG 0030H
MAIN: MOV P1,#0FFH MOV SP,#60H
MOV R7,#0 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 SETB ET0 CLR SETB LJMP ONE: PUSH INC CJNE MOV CPL LOOP: MOV MOV POP POP RETI END
PT0 EA $
PUSH ACC R7 R7,#20,LOOP R7,#0 P1.0
TL0,#0B0H PSW TH0, #3CH ACC PSW 110、将以表格形式存放在从table 开始的内部单元中的8 个单字节正数求平均值。
MOV R0,#TABLE MOV R2,#8 MOV R4,#0 LOOP1:MOV A,@R0 _ADDC A,R4_____ MOV R4,A INC R0 DJNZ R2,LOOP1 MOV B,#8 _DIV AB_____ RET
控制交通灯 ORG 0000H SJMP MAIN ORG 0000BH SJMP TDV MAIN:
MOV R7,#04H
MOV R6,#0B0H
MOV P1,#0A5H
MOV TMOD,#01H MOV TH0,#0B1H MOV TL0,#0E0H SETB ET0 SETB EA SETB TR0 SJMP $
TDV: MOV TH0,#0B1H
MOV TL0,#0E0H
DJNZ R6,LOOP1
DJNZ R7,LOOP1
MOV R7,#05H
MOV R6,#0C8H
CPL P1.0
CPL P1.1 CPL P1.2 CPL P1.3 CPL P1.4 CPL P1.5
CPL P1.6
CPL P1.7
RETI
LOOP1:
END
A/D转换实验:
ORG 0000H LJMP SE11 ORG 0590H
MOV SP,#53H
SE11:
MOV p2,#0ffh MOV A,#81H MOV DPTR,#0FF23H MOVX @DPTR,A MOV 7EH,#00H MOV 7DH,#08H MOV 7CH,#00H
MOV 7BH,#09H MOV 7AH,#10H
MOV 79H,#10H;显示缓冲区初值
LCALL SSEE;显示
LO18:
MOV A,#01H MOV DPTR,#0FF80H
MOVX @DPTR,A;0809的1道采样 MOV R7,#0FFH;时
DJNZ R7,LO17
LO17:
MOVX A,@DPTR;出采样值 MOV R0,#79H LCALL PTDS
SJMP LO18;样值送显示缓冲区 ORG 05D0H
MOV R1,A;送显示缓冲区
PTDS:
ACALL PTDS1 MOV A,R1 SWAP A
ANL A,#0FH
PTDS1:
MOV @R0,A INC R0 RET ORG 0D50H
SETB RS1;工作区
SSEE:
MOV R5,#05H
MOV 30H,#20H
SSE2:
MOV 31H,#7EH MOV R7,#06H
MOV R1,#20H
SSE1: