单m片微型计算机c第11讲(机械).pptVIP

  • 6
  • 0
  • 约7.69千字
  • 约 42页
  • 2016-11-29 发布于湖南
  • 举报
单m片微型计算机c第11讲(机械)

应用举例——定时应用 【例】利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为12 MHz。 计算初值 计数值=10ms/1us=10000 =4*2500=16*625=16*(512+127-8-4-2) 1001110001B 10011100010000B 求补 1101100011110000B=D8F0H 应用举例——定时应用 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0100H MAIN:MOV TMOD,#01H ;置T0方式1 MOV TH0,#0D8H;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $ ;等待中断 DVT0:CPL P1.0 MOV TH0,#0D8H MOV TL0,#0F0H RETI END 中断服务程序 应用举例——定时应用 【例】利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为12 MHz。 此题若不采用中断方式,采用程序查询方式如何实现? 7 6 5 4 TCON 88H TF1 TR1 TF0 TR0 开始 设置计数初值 启动计数器 设置TMOD P1.0取反 清除TF0 TF0=1 N Y 应用举例——定时应用 ORG 0000H LJMP MAIN ;跳转到主程序 ORG 0100H ;主程序 MAIN:MOV TMOD,#01H ;置T0工作于方式1 LOOP:MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H SETB TR0 ;启动定时器T0 JNB TF0,$ ;TF0=0,查询等待 CLR TF0 ;清TF0 CPL P1.0 ;P1.0取反输出 SJMP LOOP END 应用举例——定时应用 定时时间较大 (大于65ms)时,有两种方法解决 一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数; 二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。 应用举例——较长时间定时应用 编写程序,实现用定时/计数器T0定时,使P1.7引脚输出周期为2s的方波。设系统的晶振频率为12MHz。 分析: Tcy=1us,计数周期为2S,现有条件下计数值为2s/1us=2只能采用多次计数的方式进行。 可取20ms*50,即定时20ms,重复50次。 中断服务程序中,首先对次数进行判断,若不为0,则重启计数;否则将P1.7取反,重装计数值,启动计数器 返回后重复上述步骤。 应用举例——较长时间定时应用 编写程序,实现用定时/计数器T0定时,使P1.7引脚输出周期为2s的方波。设系统的晶振频率为12MHz 确定TMOD 与上题一致,应为01H 计算初值 计数值=20ms/1us=20000 装入初值为:1011000111100000B=0B1E0H 应用举例——较长时间定时应用 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0030H MAIN:MOV TMOD,#01H;置T0方式1 MOV TH0,#B1H ;装入计数初值 MOV TL0,#E0H ;首次计数

文档评论(0)

1亿VIP精品文档

相关文档