×
单片机 > 单片机程序设计 > 详情

T0定时、T1计数,协作定时

发布时间:2020-08-26 发布时间:
|

MCS—51单片机定时/计数器实验 编程 求程序
编程要求:
1.在P1.0引脚接一个发光二极管LED,点亮两秒,熄灭一秒,周而复始。
2.用T0作为定时器,T1作为T0溢出的计数器,完成延时2秒和1秒的任务。



;---------------------------------
最佳答案:
按照图示,应该用P1.7向T1送入计数脉冲。
先用T0定时250us,到时即输出一个脉冲,送到T1。
T1应使用计数方式1工作,收到4000个,即达到了1s。

下列程序,在PROTEUS中仿真通过

      ORG 0000H
      JMP START
      ORG 000BH
      JMP T0_INT
      ORG 001BH
      JMP T1_INT
      ORG 0030H
START:MOV SP,#60H
      MOV TMOD,#52H             ;T1计数方式1; T0定时方式2
      MOV TH0, #(256-250)       ;T0定时
      MOV TL0, #(256-250)       ;
      SETB TR0;
      MOV TH1, #(65536-4000) / 256   ;T1计数4000
      MOV TL1, #(65536-4000) MOD 256 ;即1s
      SETB TR1;
      SETB ET0;
      SETB ET1;
      SETB EA;
      MOV R2, #3
WAIT: SJMP WAIT                  ;等待中断
;----------------------------------
T0_INT:          ;T0定时250us,方式2,故不用重送初值
      CLR P1.7                  ;向T1送计数脉冲
      NOP
      SETB P1.7
      RETI
;----------------------------------
T1_INT:          ;每当收到4000个脉冲(即1s)中断一次
      MOV TL1, #(65536-4000) MOD 256 ;重新送入初始值
      MOV TH1, #(65536-4000)/256 ;T1计数4000
      CLR P1.0
      DJNZ R2, T1_END
      SETB P1.0
      MOV R2, #3
T1_END:
      RETI
;----------------------------------
      END





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会