编辑: 枪械砖家 | 2019-05-06 |
5 流程图 流程图 流程图 流程图 程序开始 CP0C=08H CP1C=08H ACERL=0 SCOMEN=0 TMPC0=0F0H TM1C0=03H TM1C1=40H TM1C2=40H 清零TM1AL,TM1AH TM1BL,TM1BH MF1E=1 T1PE=1 T1AE=1 T1ON=1 ETM_END=1? ETM_END=0 TM1C0=07H TM1C1=0C0H TM0CCRA=初值 EMT中断服务子程序 T1PF=0 P_COUNT+1 中断返回 Y N STM_END=1? N Y STM_END=0 N T1PF=1? Y ETM_A=1 N T1AF=0 N TM1C1=50H ETM_A=1 中断返回 ETM_A=0? 保存TM1CCRA的 值作为初值 Y T1ON=0 ETM_END=1 TM1C1=40H 中断返回 ETPU_A=0 保存TM1CCRA 的值作为终值 N Y 如何使用 如何使用 如何使用 如何使用 HT66F40 ETM HT66F40 ETM HT66F40 ETM HT66F40 ETM I I I Input nput nput nput C C C Capture apture apture apture 功能 功能 功能 功能
6 SMT中断服务子程序 T0PF=0 T0AF=0 P_COUNT-1 T0AE=1 中断返回 T0PF=1? PCOUNT=0? N T0AF=0 N 中断返回 STM_A=1 STM_A=0 STM_END=1 T0ON=0 T1ON=1 PA.4=0 STM_A=1 PA.4=1 N Y T0AE=1 中断返回 PCOUNT=0? Y TM0CCRA=终值 T0AE=0 N 程序说明 程序说明 程序说明 程序说明 本范例是使用 ETM 的输入捕捉功能抓取高电平的程序,然后通过 CTM 的定时模式再通过 翻转 I/O 的方式将高电平输出,以达到输入高电平和输出高电平比较,说明抓取的高电平 准确性. 主程序流程介绍:程序首先所使用到的数据储存器清除为零初始化.对CP0C、CP1C 赋值 08H,关闭比较器功能.对ACERL 和SCOMEN 清除为零,关闭仿真量输入功能和 LCD 功能.TMPC0 设定为 0F0H,即相应使能了 TP1A、TP1B_
0、TP1B_
1、TP1B_2 功能. TM1C0 设定为 00000111B,即T1PAU=0,取消了计数器暂停功能.T1CK[2:0]=000B,选 择了 ETM 的时钟源为系统频率的
4 除频.T1ON=0,关闭了 ETM.T1RP[2:0]=111B,为CCRP 设定的比较基准值为 111B,即7*128 个ETM 的时钟周期. TM1C1 设定为 01000000B,即T1AM[1:0]=01,选择了输入捕捉模式.T1AIO[1:0]=00,选 择捕捉 TP1A 的上升沿,其它位无作用. TM1C2 设定为 01000000B.对于输入捕捉模式,TM1C2 寄存器无作用了.接着 T1ON 设定1, 开始 ETM. MF1E 设定 1, 允许 ETM 中断. T1PE 设定 1, 允许 CCRP 匹配中断. T1AE 设定 1,允许 CCRA 中断.EMI 设定 1,允许总中断. 如何使用 如何使用 如何使用 如何使用 HT66F40 ETM HT66F40 ETM HT66F40 ETM HT66F40 ETM I I I Input nput nput nput C C C Capture apture apture apture 功能 功能 功能 功能
7 通过判断 ETM_END,判断高电平是否已经捕捉完毕.捕捉完毕,通过 CTM 的定时模式翻 转I/O 输出.再判断 CTM_END,判断高电平是否已经输出完毕,输出完毕,清标志位 CTM_END,再次捕捉. ETM 中断服务程序:在ETM 的中断服务程序中,首先根据中断标志 T1PF 是否为 1,来判 断是 CCRA 中断还是 CCRP 匹配中断.当T1PF 为1时,表明为 CCRP 匹配中断.清中断 标志 T1PF,根据标志 ETM_A 判断是否已经检测到上升沿.若有,则对 P_COUNT 加1, 无,则返回.当T1PF 为0时,则为 CCRA 中断 (因为程序只允许 CCRA 中断和 CCRP 匹 配中断),清除 CCRA 中断标志 T1AF,根据 ETM_A 判断程序是捕捉到第一个边沿,还是 第二个边沿.当ETM_A 为0,为捕捉到第一个边沿,于是,设定 ETM_A 为1,保存 CCRA 为初值, 对TM1C1 赋值 50H, 即T1AIO[1:0]=01, 选择捕捉 TP1A 的下降沿, 返回. 若ETM_A 为1,为捕捉到第二个边沿,于是,清除为零 ETM_A,保存 CCRA 为终值,对TM1C1 赋值40H,即T1AIO[1:0]=00,选择捕捉 TP1A 的上升沿,关闭 ETM,返回. 程序范例 程序范例 程序范例 程序范例 (范例 范例 范例 范例 1) configuration option: High Freq.OSC: XTAL Low Freq.OSC: LIRC Fsubclock source: LIRC WDT clock source fs: fsub HIRC frequency selection: 4MHz PTC clocksource fptc: LIRC WDT: Disable I/Oor RESB Function: IO ;