[ZLG-MCU] LPC935的CCU定时重装值问题

[复制链接]
2263|3
 楼主| linhai1986 发表于 2009-5-9 23:33 | 显示全部楼层 |阅读模式
LPC935的两个计时器用完了,还要一个定时1S想用CCU来做,可是不管怎么改动TOR2H,TOR2L的值,定时的时间感觉没有变化,但如果改动TPCR2的分频却可以变动定时的时间,不知哪出问题了,请高手赐教.<br /><br />&nbsp;<br /><br />下面程序50分频的时候约1秒3,<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0000H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AJMP&nbsp;&nbsp;&nbsp;&nbsp;INIT<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;005BH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CCU<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0100H<br />INIT:&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1m1,#01h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1m2,#01h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;56H,#0f5h;0eah;R0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;57H,#1fh;60h;R7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOR2H,56H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TOR2L,57H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TPCR2H,#00<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TPCR2L,#10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;50分频<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCR20,#00000001B&nbsp;;CCU倒计定时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TICR2,#80H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;CCU定时中断使能<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;&nbsp;&nbsp;&nbsp;ECCU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;开CCU总中断使能<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;&nbsp;&nbsp;&nbsp;EA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;开总中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />CCU:&nbsp;&nbsp;&nbsp;&nbsp;PUSH&nbsp;&nbsp;&nbsp;&nbsp;PSW<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSH&nbsp;&nbsp;&nbsp;&nbsp;ACC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1.0&nbsp;&nbsp;&nbsp;&nbsp;;实验小灯<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFR2,#00H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;清除中断标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCR20,#00000000B&nbsp;;关CCU倒计定时<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCR20,#00000001B&nbsp;;CCU倒计定时<br /><br /><br />ccuex:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PSW<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETI<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />
liqindz 发表于 2009-5-11 23:13 | 显示全部楼层

你去仔细看看人家操作定时器的例程在写程序也不迟

  
xiaoxin1986 发表于 2009-5-13 00:55 | 显示全部楼层

re

使用CCU定时器进行定时,要自动重装初值,注意TCR21中的TCOU2要置1<br /><br />;&nbsp;File:CCUTEST1.ASM<br />;&nbsp;功能:使用CCU定时器进行定时,并控制LED闪动。<br />;&nbsp;说明:将跳线器J27短接到OCA端,以控制D6;<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过跳线器J8、J9选择高频晶振6MHz。<br /><br />$NOMOD51<br />$INCLUDE&nbsp;(REG932.INC)<br /><br />T2_CNT&nbsp;&nbsp;DATA&nbsp;30H&nbsp;&nbsp;;&nbsp;定义一变量,用于软件定时<br />LEDCON&nbsp;&nbsp;BIT&nbsp;P2.6&nbsp;&nbsp;;&nbsp;LED控制口线,为0时点亮<br /><br />&nbsp;&nbsp;ORG&nbsp;0000H<br />&nbsp;&nbsp;AJMP&nbsp;MAIN<br /><br />&nbsp;&nbsp;ORG&nbsp;005BH&nbsp;<br />&nbsp;&nbsp;AJMP&nbsp;INTS_CCU&nbsp;;&nbsp;CCU中断入口<br /><br />&nbsp;&nbsp;ORG&nbsp;0100H<br />MAIN:&nbsp;&nbsp;MOV&nbsp;P2M1,#0C0H&nbsp;;&nbsp;设置IO口工作模式<br />&nbsp;&nbsp;MOV&nbsp;P2M2,#0C0H<br /><br />&nbsp;&nbsp;CPL&nbsp;&nbsp;LEDCON<br />&nbsp;&nbsp;MOV&nbsp;T2_CNT,#0<br />&nbsp;&nbsp;ACALL&nbsp;INI_CCU&nbsp;&nbsp;;&nbsp;初始化CCU并设置中断<br />&nbsp;&nbsp;SJMP&nbsp;$&nbsp;&nbsp;;&nbsp;等待定时器中断<br /><br />;&nbsp;初始化CCU<br />;&nbsp;设置定时器重装值(205mS时),时钟源设置,并打开中断设置等。<br />INI_CCU:<br />&nbsp;&nbsp;MOV&nbsp;TOR2H,#0F0H&nbsp;;&nbsp;设置CCU定时器重装值<br />&nbsp;&nbsp;MOV&nbsp;TOR2L,#000H&nbsp;;&nbsp;TH2,TL2可先不设置<br /><br />&nbsp;&nbsp;MOV&nbsp;TPCR2H,#00&nbsp;;&nbsp;使用PCLK时钟源,并进行10分频<br />&nbsp;&nbsp;MOV&nbsp;TPCR2L,#10&nbsp;<br /><br />&nbsp;&nbsp;MOV&nbsp;TCR20,#00000001B;&nbsp;设置基本定时器,递增计数<br /><br />&nbsp;&nbsp;MOV&nbsp;TCR21,#80H&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;MOV&nbsp;TICR2,#80H&nbsp;;&nbsp;设置CCU中断使能寄存器<br />&nbsp;&nbsp;SETB&nbsp;ECCU&nbsp;&nbsp;;&nbsp;打开CCU中断<br />&nbsp;&nbsp;SETB&nbsp;EA&nbsp;&nbsp;<br />&nbsp;&nbsp;RET<br /><br /><br />;&nbsp;CCU定时器中断处理&nbsp;<br />;&nbsp;注:定时器值会自动重装,TH2,TL2<br />INTS_CCU:&nbsp;<br />&nbsp;&nbsp;MOV&nbsp;A,TISE2<br />&nbsp;&nbsp;ANL&nbsp;A,#07H<br />&nbsp;&nbsp;CJNE&nbsp;A,#07H,INTS_CEXT&nbsp;;判断中断源,若不为CCU定时器中断,退出<br /><br />&nbsp;&nbsp;INC&nbsp;T2_CNT&nbsp;&nbsp;<br />&nbsp;&nbsp;MOV&nbsp;A,T2_CNT<br />&nbsp;&nbsp;CJNE&nbsp;A,#10,INTS_CEXT<br />&nbsp;&nbsp;MOV&nbsp;T2_CNT,#0<br />&nbsp;&nbsp;CPL&nbsp;LEDCON<br />INTS_CEXT:&nbsp;MOV&nbsp;TIFR2,#00H&nbsp;&nbsp;;清除中断标志<br />&nbsp;&nbsp;RETI<br /><br /><br />&nbsp;&nbsp;END<br /><br />
 楼主| linhai1986 发表于 2009-5-13 01:18 | 显示全部楼层

谢谢3楼的

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

172

主题

1451

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部