简易数字频率计程序

上传人:第*** 文档编号:34734371 上传时间:2018-02-28 格式:DOC 页数:17 大小:198.50KB
返回 下载 相关 举报
简易数字频率计程序_第1页
第1页 / 共17页
简易数字频率计程序_第2页
第2页 / 共17页
简易数字频率计程序_第3页
第3页 / 共17页
简易数字频率计程序_第4页
第4页 / 共17页
简易数字频率计程序_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《简易数字频率计程序》由会员分享,可在线阅读,更多相关《简易数字频率计程序(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 u

2、nsigned char #define uint unsigned int extern 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; /*/* 中断程序初始化 */ /

3、*/ /*T0 的初始化,工作模式是方式 2,外部计数方式,计数个数是 250 个*/ 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;/

4、*TR2,EXEN2 没有开*/ RCAP2H=0; RCAP2L=0; /*/ /*int1 的初始化 工作于下降沿响应模式*/ 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

5、判断是否测量完成,不是继续等待*/ /*/* 中断程序 */ /*/ /*T2 的中断响应程序*/ void T2xy() interrupt 5 EXF2=0;count2=RCAP2L-count2;/*低位*/count3=RCAP2H-count3;/*高位*/flag2+=1;/*完成一次脉冲宽度的测量,如果是测占空比,可以重新再开中断,保留 count2,和 count3 的值后。*/ /*/ /*INT0 的中断响应程序*/ void int0xy() interrupt 0flag3=1; /*/ /*INT1 的中断响应程序*/ void int1xy() interrupt

6、 2count1=count1+1; /*/ /*T1 的中断响应程序*/ void t1xy() interrupt 3TR1=0;EX1=0;flag2=1;PT1=0; /*/ /*T0 的中断响应程序*/void T0xy() interrupt 1count1+=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;/* 第

7、5 路信号,不分频了*/flag2=0;TR1=1;EX1=1; break; if (flag1=0)while (flag2=0); if (count14)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%2

8、56;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=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)flag1=2;flag2=0;TR1=0;/*/if(flag2=3)flag1=3;flag2=0;TR1=0;if(flag

9、2=2)flag1=4;flag2=0;TR1=0; if(flag1=0)TR1=1; while(P1_0=1)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=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;

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

当前位置:首页 > 办公文档 > 解决方案

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