msp430程序模块
更新时间:2024-04-02 19:12:01 阅读量: 综合文库 文档下载
- MSP430端口读取程序推荐度:
- 相关推荐
1、时钟初始化
/*msp430f169时钟初始化*/ void Init_bas_clk() {unsigned int i;
BCSCTL1 &=~XT2OFF;//开高速晶振
//BCSCTL1 |= XTS; 此项不要设置,因为单片机LFXT1外接32768Hz不是高速晶振
BCSCTL2 |=SELM_2+DIVM_1+SELS+DIVS_3;//MCLK选择高速晶振,两分频,SMCLK选择高速晶振8分频
do /*起振需在寄存器设置之后*/ {
IFG1 &= ~OFIFG; // 清除振荡器失效标志 for(i = 0Xff;i > 0;i--); // 稳定时间
} while((IFG1 & OFIFG)!= 0); // 如果振荡器失效标志存在
IFG1 &=~OFIFG; // 清除振荡器失效标志 }
2、ADC12初始化
A1、/*ADC12序列通道多次转换*/
void Init_ADC12_SequenceChannelSequenceConvert(void) {
P6SEL|=0x0f;//选择通道A0~A3
ADC12CTL0 &=~ENC;//在ENC=0时修改寄存器值
ADC12CTL0 |=ADC12ON+MSC;//打开ADC12设置MSC(多次转换时必须设置)
ADC12CTL1 |=ADC12SSEL_0+CONSEQ_3+CSTARTADD_0+SHP;
ADC12MCTL0 |=SREF_0+INCH_0; // 参考电压:V+=AVcc,V-=AVss ADC通道:A0
ADC12MCTL1 |=SREF_0+INCH_1; // 参考电压:V+=AVcc,V-=AVss ADC通道:A1
ADC12MCTL2 |=SREF_0+INCH_2; // 参考电压:V+=AVcc,V-=AVss ADC通道:A2
ADC12MCTL3 |=SREF_0+INCH_3+EOS; // 参考电压:V+=AVcc,V-=AVss ADC通道:A3
ADC12IE=0x08; // 中断允许 只开最后一个通道中断 _EINT(); //开总中断
ADC12CTL0 |=ENC+ADC12SC; // 转换使能开始转换 }
A2、/*ADC12中断向量设置 */
#pragma vector = ADC_VECTOR
__interrupt void ADC12_IRQ(void) {
value0[count]=ADC12MEM0;/*数组value已经定义过*/ value1[count]=ADC12MEM1; value2[count]=ADC12MEM2; value3[count]=ADC12MEM3; count++;
if(count==10) {
flag=1; count=0;
ADC12CTL0 &=~ENC; } }
B1、// ADC12单通道多次转换
void Init_adc(void) {
P6SEL=BIT4; //通道A4 // ADC12控制寄存器设置
// 对于多次转换需要设置MSC
ADC12CTL0 = ADC12ON + SHT0_2 + MSC;
// CONSEQ_2表示当前模式为单通道多次转换, 转换地址为ADC12MCTL4 ADC12CTL1 = ADC12SSEL_0 + SHP + CONSEQ_2 + CSTARTADD_4; // 转换通道设置
ADC12MCTL4 = SREF_0 + INCH_4 + EOS; // 参考电压:V+=Vref+,V-=AVss ADC通道:A4 // 中断允许
ADC12IE = 0x0010; _EINT(); // 启动转换
ADC12CTL0 |= ENC + ADC12SC; // 转换使能开始转换 }
B2、/*单通道多次转中断设置*/
// ADC12中断向量
#pragma vector = ADC_VECTOR __interrupt void ADC12_IRQ(void) {
value[i]=ADC12MEM4; i++;
if(i==10)
{
i=0; flag=1;
for( j=0;j<=9;j++) {
temp +=value[j]; }
XV=(unsigned long)(temp/10); XV=(unsigned long)(XV*3300/4095); Disp_ShuZhi(0x94,XV); ADC12CTL0 &=~ENC; } }
C1、/*单通道单次转换*/
void Init_ADC() {
P6SEL=BIT0; //通道A0 ADC12CTL0 &=~(ENC); // ADC12控制寄存器设置
// 内核开启, 启动内部基准, 选择2.5V基准, 设置采样保持时间 ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_2;
// 时钟源为内部震荡器, 出发信号来自采样定时器, 转换地址为ADC12MCTL4
ADC12CTL1 = ADC12SSEL_0 + SHP + CSTARTADD_4;//选择时钟ADC12OSC内部时钟,若选择其他时钟则在两次转换之间需要翻转ENC
//脉冲采样模式ADC12SC自动复位
// 转换通道设置
ADC12MCTL4 = SREF_1 + INCH_0; // 参考电压:V+=Vref+,V-=AVss ADC通道:A0
// 启动转换
ADC12CTL0 |= ENC + ADC12SC; // 转换使能开始转换
while((ADC12IFG & 0x0010) == 0); // 软件查询中断标志, 等待转换结束 }
3、DAC初始化
void Init_DAC() {
ADC12CTL0=REF2_5V+REFON; //使用内部参考电压2.5V // 效验DAC
DAC12_0CTL |= DAC12CALON; // 启动效验
DAC
while((DAC12_0CTL & DAC12CALON) != 0){_NOP();} // 等待效验完成
// 控制寄存器设置
// 选择输入缓冲器中速中电流,输出缓冲器中速中电流,12位DAC,满电压输出为内基准,自动更新数据
DAC12_0CTL = DAC12AMP_5 + DAC12IR + DAC12LSEL_0; //输入缓冲器中速中电流,输出缓冲器中速中电流 DAC12的满量程为参考电压 DAC12_0CTL |= DAC12SREF_1;//参考电压选择 Vref+
DAC12_0CTL |= DAC12ENC; // 启动DAC模块(DAC12LSEL_0时此句可以省)
DAC12_0DAT = start; // 初始化电压 1V 0db }
4、键盘模块
#define Const 100
unsigned char key_Flag,key_Pressed; unsigned int key_val;
void delay_ms(int t) //延时 当tm=750,Const=198时延时1S {
//while(t) t--; int j,k;
for(j=0;j for(k=0;k void Init_Keypad(void) { P5DIR = 0xf0; //P5.0~P5.3设置为输入状态, P5.4~P5.7设置为输出状态 key_Flag = 0; key_Pressed = 0; key_val=0; } void Check_Key() { P5DIR=0xf0; unsigned int k,row,col,shuchu,jianzhi=0; k=0x08; shuchu=0x8f; for(row=0;row<=3;row++) //*********************扫描行**************** { P5OUT=~shuchu; for(col=0;col<=3;col++) //****************扫描哪一列有键按下*********** { if((P5IN&k)==0x00) //有键按下,延时、消抖 delay_ms(1); if((P5IN&k)==0x00) //再次检测,有键按下,检测键值 { key_val=jianzhi+col; return ; } k=k>>1; } shuchu=shuchu>>1; jianzhi=jianzhi+4; k=0x08; } } void Key_Event() { P5OUT=0x00; if ((key_Pressed == 0x00)&&((P5IN&0x0f) < 0x0f)) //如果有键按下 { key_Pressed = 1; // 如果有按键按下,设置key_Pressed标识 delay_ms(120); //消除抖动 Check_Key(); // 调用check_Key(),获取键值 } else if ((key_Pressed == 1)&&((P5IN & 0x0f) == 0x0f)) //如果按键已经释放 { key_Pressed = 0; // 清除key_Pressed标识 key_Flag = 1; // 设置key_Flag标识 } else { _NOP(); } } 键盘调用 Init_Keypad();//初始化 Key_Event(); //Key事件监测 Check_Key(); if(key_Flag==1) { K=key_val; }
正在阅读:
msp430程序模块04-02
有机化学课后习题答案12第十二章醛和酮核磁共振谱(第5轮)答案05-13
安徽重点项目-年产100万套汽车动力转向器(EPS)项目可行性研究报告01-08
磁控溅射镀膜的简介及其实际操作05-22
慈善救助申请书3篇02-24
幼儿园大班体育游戏教案5篇08-01
地理:第1课时05-07
托福听力黄金短语汇总08-12
重庆高院党风廉政电视讲话01-14
高等数学下册复习题模拟试卷和答案01-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序模块
- msp430
- 东莞市现代教育技术实验学校评估细则(修订)
- 第十四章节电解及库仑分析法
- 2018年赤峰市小升初数学模拟试题(共10套)详细答案
- 2017年高三二模语文汇编(古诗鉴赏)解析
- 中小学生艺术考级基础乐理试题及答案
- 深静脉置管的常见并发症的预防及护理
- 走出拜金主义和享乐主义误区
- 沈阳铁路局营业线施工及安全管理细化办法
- 汉南区国民经济和社会发展第十二个五年规划纲要 - 图文
- 18.1.2平行四边形性质教案
- MATLAB图像分割代码
- 微观经济学考试模拟题及答案 - 图文
- Unity3D数学基础知识
- 无线项目招标参数 - 图文
- 企业怎样实行全程信用管理
- 2010年珠海经济特区发展报告
- 中国五角枫短料行业市场前景分析预测报告(目录) - 图文
- 基础会计学-综合练习及答案
- 中国银监会行政处罚办法
- 10第十章 文件习题