




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于基于 MSP430F5438AMSP430F5438A 单片机测量频率的程序实例单片机测量频率的程序实例 /*/* 程序描述程序描述: :利用利用 Timer_ATimer_A 捕获脉冲宽度捕获脉冲宽度 利用利用 MSP430MSP430 单片机定时器单片机定时器 A A 和捕获和捕获/ /比较功能模块结合使用,比较功能模块结合使用, 实现脉冲宽度的测量实现脉冲宽度的测量 程序用到了定时器程序用到了定时器 A A 的的 CCI1ACCI1A 端口(端口(MSP430F14XMSP430F14X 的的 P1.2P1.2 引脚)引脚) 作捕获外部输入作捕获外部输入 的脉冲电平跳变,的脉冲电平跳变,start,end,start,end,两个个变量来计算脉冲宽度两个个变量来计算脉冲宽度 */*/ #include “msp430x14x.h“ #include “lcd12864.h“ uint start,end; uint width; /=用于存放脉宽= uint period; /=用于存放周期= uint frequency; /=用于存放频率= uint fy7; /=用于存放频率显示数据= 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 + WDTHOLD; /=关狗= InitSys(); /=初始化时钟,SMCLK,MCLK 均为8M= P1DIR 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(0x80,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); 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 /=打开 XT2 振荡器= do IFG1 /=清除振荡器失效标志= for (i = 0xFF; i 0; i-); /=延时,等待 XT2 起振= while (IFG1 /=判断 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 width = end-start; /=实际脉冲宽度的计算= period = 2* width; frequency=1000000/period; pd6=period/1000000; pd5=(period-1000000*pd6)/100000; pd4=(period-1000000*pd6-100000*pd5)/10000; pd3=(period-1000000*pd6-100000*pd5- 10000*pd4)/1000; pd2=(period-1000000*pd6-100000*pd5- 10000*pd4-1000*pd3)/100; pd1=(period-1000000*pd6-100000*pd5- 10000*pd4-1000*pd3-100*pd2)/10; pd0=period%10; fy6=frequency/1000000; fy5=(frequency-1000000*fy6)/100000; fy4=(frequency-1000000*fy6-100000*fy5)/10000; fy3=(frequency-1000000*fy6-100000*fy5- 10000*fy4)/1000; fy2=(frequency-1000000*fy6-100000*fy5- 10000*fy4-1000*fy3)/100; fy1=(frequency-1000000*fy6-100000*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: /=捕
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院医疗应急组织与体系
- 2025年乡镇财政所资金监管员招聘面试模拟题及答案
- 快递安全培训课件
- 2024年中国科学院大学校长开学讲话稿5000字
- 开业大吉安全培训课件
- 2025年甘肃省酒泉市辅警人员招聘考试题库及答案
- 企业文化价值观落地实施计划表
- 员工培训计划与评估结果反馈表
- 廉洁纪检监察培训课件
- 国际贸易学说课课件教学
- 中医砭石疗法课件
- 肿瘤血液科化疗药物使用专题方案
- T/CECS 10128-2021不锈钢二次供水水箱
- 区县应急广播管理制度
- 心肺复苏应急试题及答案
- 露营股份合作协议书
- 订购白酒居间合同协议
- 教师培训系列讲座:人工智能赋能教育教学
- 四川产业振兴基金投资集团有限公司招聘笔试题库2025
- 光伏备案合同协议
- 法考历年真题答案2024
评论
0/150
提交评论