编辑: xiong447385 | 2019-07-11 |
f=100kHz,T=10us,定时时间为5us 用定时器T0,工作在模式2,设计数初值为X,则(-X)*12/(12*)=5*s X=251=0FBH 查询方式的程序如下: MAIN:MOV TMOD,#02H MOV TH0,#FBH MOV TL0,#FBH SETB TR0 SETB P1.0 HERE: JBC TF0,OK SJMP HERE OK: CPL P1.0 SJMP HERE 中断方式的程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP SERVE ORG 0030H MAIN: MOV TMOD,#02H MOV TH0,#FBH MOV TL0,#FBH SETB TR0 SETB P1.0 SETB ET0 SETB EA SJMP $ SERVE:CPL P1.0 RETI 注意:采用定时器T1或其他工作模式,只要修改相应参数,也可以实现题目的要求. 9. 当一个定时器定时溢出时,设置另一个定时器的初值为0开始定时. 13. 工作在模式2,设计数初值分别为X1和X2,则(-X1)*12/(6*)=50*s X1=231=E7H (-X1)*12/(6*)=300*s X2=106=6AH 采用查询方式: MAIN:MOV TMOD,#02H MOV TH0,#231 MOV TL0,#231 SETB TR0 SETB P1.0 LOP1:JBC TF0,NEXT1 SJMP LOP1 NEXT1:CLR TR0 MOV TH0,#106 MOV TL0,#106 SETB TR0 CPL P1.0 LOP2: JBC TF0,NEXT2 SJMP LOP2 NEXT2:CLR TR0 SJMP MAIN 注意:采用定时器T1或其他工作模式,只要修改相应参数,也可以实现题目的要求. 也可以采用中断方式. 18. 解:定时为200us,所以计数初值为38H 方波周期为2ms,所以N=1000/200=5 源程序如下: MOV TMOD, #02H MOV TH0, #38H MOV TL0, #38H SETB P1.0 MOV R0, #5 LOOP2: SETB TR0 LOOP1: JBC TF0, NEXT SJMP LOOP1 NEXT: CLR TR0 DJNZ R0, LOOP2 CPL P1.0 MOV R0, #5 SJMP LOOP2 19. 1)用T0定时器,以工作模式1进行100ms得定时,设计数初值为X,则(-X)*12/(6*)=100*s X=3CB0H;
2)采用中断方式进行溢出次数的累计,计满10次得到1s的定时. 3)从秒到分的计时是通过累加和数值比较实现的. 参考程序: ORG 0000H AJMP MAIN ORG 000BH AJMP SERVE MAIN: MOV TMOD,#01H MOV R1,#0AH MOV R2,#60 CLR P1.0 CLR P1.1 SETB ET0 SETB EA MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SJMP $ SERVE:PUSH PSW PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H DJNZ R1,RETN MOV R1,#0AH SETB P1.0 CLR P1.0 DJNZ R2,RETN MOV R2,#3CH SETB P1.1 CLR P1.1 RETN: POP ACC POP PSW RETI END