版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于MSP430F5438A单片机测量频率的程序实例/*程序描述:利用Timer_A捕获脉冲宽度利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量程序用到了定时器A的CCI1A端口(MSP430F14X的P1.2引脚)作捕获外部输入的脉冲电平跳变,start,end,两个个变量来计算脉冲宽度*/#include msp430x14x.h#include lcd12864.huint start,end;uint width; /=用于存放脉宽=uint period; /=用于存放周期=uint frequency; /=用于存放频率=uint fy7; /=用于存
2、放频率显示数据=uint pd7; /=用于存放周期显示数据=uint wh6; /=用于存放脉宽显示数据=const unsigned char zhouqi=周期为:(us) ; const unsigned char us=us ;const unsigned char pinlv=频率为:(Hz) ;const unsigned char hz=HZ ;void process(void); /=函数声明=void delay(); /=延时函数=void InitSys(); /=初始化时钟=/* 主函数*/int main( void ) WDTCTL = WDTPW + WDTH
3、OLD; /=关狗= InitSys(); /=初始化时钟,SMCLK,MCLK均为8M= P1DIR&=BIT2; P1SEL = BIT2; /=设置P1.2端口为功能模块使用,即:做捕获源= TACTL = TASSEL_2+ID_3+TACLR+TAIE+MC1;/=定时器A时钟信号选择SMCLK,8分频,同时设置定时器A计数模式为连续增计模式= CCTL1 = CM_1+SCS+CAP+CCIE; /=输入上升沿捕获,CCI0A为捕获信号源= _EINT(); /=开全局中断允许= Ini_Lcd(); /=初始化液晶= Clear_GDRAM(); /=清屏= Disp_HZ(0x
4、80,zhouqi,8); Disp_HZ(0x88,pinlv,8); while(1) process(); Write_Cmd(0x90);/=写地址= Write_Data(0x30+pd6); Write_Data(0x30+pd5); Write_Data(0x30+pd4); Write_Data(0x30+pd3); Write_Data(0x30+pd2); Write_Data(0x30+pd1); Write_Data(0x30+pd0); Write_Cmd(0x98);/=写地址= Write_Data(0x30+fy6); Write_Data(0x30+fy5);
5、 Write_Data(0x30+fy4); Write_Data(0x30+fy3); Write_Data(0x30+fy2); Write_Data(0x30+fy1); Write_Data(0x30+fy0); delay(); /* 初始化时钟*/void InitSys() unsigned int i; /- 使用XT2振荡器 - BCSCTL1&=XT2OFF; /=打开XT2振荡器= do IFG1 &= OFIFG; /=清除振荡器失效标志= for (i = 0xFF; i 0; i-); /=延时,等待XT2起振= while (IFG1 & OFIFG) != 0)
6、; /=判断XT2是否起振= BCSCTL2 =SELM_2+SELS; /=选择MCLK、SMCLK为XT2,8M= /* 延时函数*/void delay() unsigned int i; unsigned int j=10; for(i=10;i0;i-) while(j-); /* 数据处理 */void process(void) while(endstart); /while(endstart width = end-start; /=实际脉冲宽度的计算= period = 2* width; frequency=/period; pd6=period/; pd5=(period
7、-*pd6)/; pd4=(period-*pd6-*pd5)/10000; pd3=(period-*pd6-*pd5-10000*pd4)/1000; pd2=(period-*pd6-*pd5-10000*pd4-1000*pd3)/100; pd1=(period-*pd6-*pd5-10000*pd4-1000*pd3-100*pd2)/10; pd0=period%10; fy6=frequency/; fy5=(frequency-*fy6)/; fy4=(frequency-*fy6-*fy5)/10000; fy3=(frequency-*fy6-*fy5-10000*fy4
8、)/1000; fy2=(frequency-*fy6-*fy5-10000*fy4-1000*fy3)/100; fy1=(frequency-*fy6-*fy5-10000*fy4-1000*fy3-100*fy2)/10; fy0=frequency%10;/* 中断处理函数*/#pragma vector=TIMERA1_VECTOR /=定时器A中断处理=_interrupt void timer_a(void) switch(TAIV) /=向量查询= case 2: /=捕获中断= if(CCTL1&CM0) /=捕获到上升沿= CCTL1=(CCTL1&(CM0)|CM1; /=更变设置为下降沿触发= start=TAR; /=记录初始时间= e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年伊春市美溪区事业编单位人员招聘笔试备考题库及答案详解
- 2026年德州夏津县教育系统公开招聘备案制高中教师(20名)笔试备考试题及答案详解
- 2026湖北武汉音乐学院管理助理招聘6人笔试备考题库及答案详解
- 2026河北秦皇岛市第一医院招聘人事代理人员50人笔试参考题库及答案详解
- 2026四川省创新驱动发展中心考核招聘1人笔试备考试题及答案详解
- 2026年荆门市东宝区中小学编制教师招聘笔试模拟试题及答案详解
- 四川省长宁工业投资集团有限公司2026年面向社会公开招聘工作人员笔试参考试题及答案详解
- 2026河北唐山海运职业学院第二批公开招聘教职工48人笔试参考题库及答案详解
- 2026云南大学国际教育学院国际学生招生办公室行政助理招聘1人笔试参考试题及答案详解
- 咖啡店糖浆储存合同2026年正式版规范
- 2026海南省海洋与渔业科学院招聘事业编制人员4人(第1号)笔试参考试题及答案详解
- 2026年无菌操作技术考核试题及答案
- 2026入伍军检面试题目及答案
- 2026学年甘肃省陇南市三年级数学期末深度自测实战演练题(附答案)详细答案和解析
- 2026浙江省杭州市萧山区区长电话受理中心招聘重点基础提升(共500题)附带答案详解
- 《昆虫记》全阅读测试题及答案
- 2026年兰石化企业考核笔综合提升练习题及答案详解(考点梳理)
- 2026年人教版初一政治(道德与法治)下学期期末考试试卷及答案(共七套)
- 2024年7天连锁酒店员工手册
- 2026年湖北省黄冈市八年级地理生物会考真题试卷(+答案)
- 循环流化床锅炉(CFB炉)设计计算大纲
评论
0/150
提交评论