单片机原理,接口及应用---第5章 单片机的定时计数器与串行接口.ppt
文本预览下载声明
单片机原理、接口及应用---嵌入式系统技术基础 第5章 单片机的定时/计数器与串行接口 例1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。 (1)计算初值X 设初值为X,则有:机器周期为 12/(6×106)=2×10-6 (216-X)×2×10-6=1×10-3 216-X=500 X=65036 X化为16进制,即X=FE0CH=1111111000001100B。 所以,T0的初值为: TH0=0FEH TL0=0CH (2)初始化程序设计 对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。 (3)程序设计 中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。 参考程序: ORG 0000H RESET: AJMP MAIN ;转主程序 ORG 000BH ;T0的中断入口 AJMP IT0P ;转T0中断处理程序IT0P ORG 0100H MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;设置T0为方式1 ACALL PT0M0 ;调用初始化子程序PT0M0 HERE: AJMP HERE ;自身跳转 PT0M0: MOV TL0,#0CH ;T0中断服务程序,T0重新置初值 MOV TH0,#0FEH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 RET ITOP: MOV TL0,#0CH ;T0中断服务子程序,T0置初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的状态取反 RETI 查询方式的参考程序: MOV TMOD,#01H ;设置T0为方式1 SETB TR0 ;接通T0 LOOP: MOV TH0,#0FEH ;T0置初值 MOV TL0,# 0CH LOOP1:JNB TF0,LOOP1 ;查询TF0标志 CLR TR0 ;T0溢出,关闭T0 CPL P1.0 ;P1.0的状态求反 SJMP LOOP 例2 假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。 (1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512?s。 选方式1,每隔100ms中断一次,中断10次为1s。 (2)计算计数初值 因为:(216-X)×2×10-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H (3)10次计数的实现 采用循环程序法。 (4)程序设计 参考程序 : ORG 0000H RESET: LJMP MAIN ;上电,转主程序入口MAIN ORG 000BH ;T0的中断入口 LJMP IT0P ;转T0中断处理程序IT0P ORG 1000H MAIN: MOV SP,#60H ;设堆栈指针 MOV B,#0AH ;设循环次数10次 MOV TMOD,#01H ;设T0工作在方式1 MOV TL0,#0B0H ;给T0设初值 MOV TH0,#3CH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开放中断 HERE: SJMP HERE ;等待中断 ITOP: MOV TL0,#0B0H ;T0中断子程序,重装初值 MOV TH0,#3CH ; DJNZ B,LOOP
显示全部