简易数字频率计程序.doc

上传人:灯火****19 文档编号:138056323 上传时间:2020-07-13 格式:DOC 页数:17 大小:178KB
返回 下载 相关 举报
简易数字频率计程序.doc_第1页
第1页 / 共17页
简易数字频率计程序.doc_第2页
第2页 / 共17页
简易数字频率计程序.doc_第3页
第3页 / 共17页
简易数字频率计程序.doc_第4页
第4页 / 共17页
简易数字频率计程序.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《简易数字频率计程序.doc》由会员分享,可在线阅读,更多相关《简易数字频率计程序.doc(17页珍藏版)》请在金锄头文库上搜索。

1、#include #include #include sbit Pa=P12;sbit Pb=P13;sbit Pc=P14;sbit P1_0=P10;sbit P1_1=P11;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;sbit P2_3=P23;sbit P2_4=P24;sbit P2_5=P25;sbit P2_6=P26;sbit P2_7=P27;sbit P3_1=P31;sbit P3_5=P35;sbit RS=P20;sbit RW=P21;sbit EN=P22;#define uchar unsigned char#defin

2、e uint unsigned intextern uchar m9=0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe;extern uchar flag1=0;uint flag2=0;uchar flag3=0;uchar count2=0;uint count3=0; /*flag1记录频段划分,flag2用来标识测量是否完成 */uchar count1=0;/*count1 用于记录T0里的脉冲个数*/unsigned long count4=0;/*/ /* 中断程序初始化 */*/*T0的初始化,工作模式是方式2,外部计数方式,计数个数是2

3、50个*/void t0init() TMOD=0x06; TH0=6; TL0=6; ET0=1; EA=1;/*TR0没有开*/ /*/ /*T1的初始化 工作于定时模式*/void t1init()TMOD=0x10; ET1=1; TH1=63436/256;/*定时时间是2.1ms*/ TL1=63436%256; EA=1;/*TR1没有开*/ count1=0;/*/ /*T2的初始化 工作于捕获模式*/void t2init()T2CON=0x01;ET2=1;EA=1;TH2=0;TL2=0;/*TR2,EXEN2 没有开*/RCAP2H=0;RCAP2L=0;/*/*int

4、1的初始化 工作于下降沿响应模式*/void int1init()EX1=1;EA=1;IT1=1;/*/*int0的初始化 工作于下降沿响应模式*/void int0init()/EX0=1;/EA=1;/IT0=1;/PT0=1;/*/*T2工作于频段2和3,测周,测频,测占空比*/*只是求得测量值*/void t2cx() flag2=0; while (P1_1=1); EXEN2=1; while (P1_1=0); TR2=1; /*flag2 判断是否测量完成,不是继续等待*/*/ /* 中断程序 */*/*T2的中断响应程序*/void T2xy() interrupt 5 E

5、XF2=0; count2=RCAP2L-count2;/*低位*/ count3=RCAP2H-count3;/*高位*/ flag2+=1;/*完成一次脉冲宽度的测量,如果是测占空比,可以重新再开中断,保留count2,和count3的值后。*/ /*/*INT0的中断响应程序*/ void int0xy() interrupt 0 flag3=1;/*/*INT1的中断响应程序*/ void int1xy() interrupt 2 count1=count1+1; /*/*T1的中断响应程序*/ void t1xy() interrupt 3 TR1=0; EX1=0; flag2=1

6、; PT1=0; /*/*T0的中断响应程序*/void T0xy() interrupt 1 count1+=1; count4+=1; /*/*/void Delayms(uint ms) uchar i;while(ms-) for(i=0;i2) flag1=1; flag2=0; count1=0;/*flag1=1,=10khz*/ while(flag1=0) count1=0; t1init(); Pb=0;/*第5路信号,不分频了*/ flag2=0; TR1=1; EX1=1; break; if (flag1=0)while (flag2=0); if (count14)

7、flag1=2;flag2=0;count1=0;/*flag1=2,1khz10khz*/ /*如果第一次就测出来,flag1就不为0,然后往下运行*/ while (flag1=0) t1init(); count1=0; TH1=55536/256; TL1=55536%256; flag2=0; if (P1_0=0)TR1=1; while(P1_0=0)if(flag2=1) TH1=35536/256; TL1=35536%256;flag2=3;TR1=1;i+=1; if(i=5) continue; flag2=2;i=0;TR1=0;break; if(flag2=0) TH1=35536/256; TL1=35536%256;TR1=1; while(P1_0=1)if(flag2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号