用按键控制LED灯的亮灭_第1页
用按键控制LED灯的亮灭_第2页
用按键控制LED灯的亮灭_第3页
用按键控制LED灯的亮灭_第4页
用按键控制LED灯的亮灭_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用按键控制用按键控制 LEDLED 灯的亮灭 当按键按下时 灯的亮灭 当按键按下时 LEDLED 灯亮 当按键松开时 灯亮 当按键松开时 LEDLED 灯灭 灯灭 include msp430f6638 h unsigned char flag void main void WDTCTL WDTPW WDTHOLD Stop WDT P4DIR P4DIR BIT4 BIT5 BIT6 P4 4 P4 5 P4 6 set as output P4OUT set led off P2IE BIT6 enable P2 6 interrupt P2IFG clean interrupt flag enable interrupt enable interrupt while 1 if P4IN else P2IFG PORT2 interrupt service routine pragma vector PORT2 VECTOR interrupt void port 2 void P4OUT BIT4 BIT5 BIT6 set led on P2IFG clean interrupt flag 用按键控制用按键控制 LEDLED 灯的亮灭 当按键按下时 灯的亮灭 当按键按下时 LEDLED 灯亮 当按键松开时 灯亮 当按键松开时 LEDLED 灯灭 灯灭 查询查询 include msp430f6638 h void main void WDTCTL WDTPW WDTHOLD Stop WDT setting direction P4DIR setting IO for input P4DIR BIT4 BIT5 BIT6 P4 4 P4 5 P4 6 set as output while 1 if P4IN led on else P4OUT led off 将将 ACLKACLK 配置为配置为 VLOCLK VLOCLK 约为约为 10K 10K 并将 并将 ACLKACLK 通过通过 P1 0P1 0 口输出口输出 include void main void WDTCTL WDTPW WDTHOLD 关看门狗 UCSCTL4 SELA 1 将 ACLK 时钟源配置为 VLO P1DIR BIT0 P1SEL BIT0 将 ACLK 通过 P1 0 输出 bis SR register LPM3 bits 进入 LPM3 SMCLK 和 MCLK 停止 ACLK 活动 设设 ACLKACLK XT1XT1 32768Hz32768Hz 并通过 并通过 P1 0P1 0 输出输出 include void main void WDTCTL WDTPW WDTHOLD Stop watchdog timer P1DIR BIT0 ACLK set out to pin P1SEL BIT0 P5SEL BIT4 BIT5 Select XT1 while BAKCTL UCSCTL6 XT1 On UCSCTL6 XCAP 3 Internal load cap Loop until XT1 fault flag is cleared do UCSCTL7 SFRIFG1 Clear fault flags while SFRIFG1 Test oscillator fault flag UCSCTL6 reduce drive strength UCSCTL4 SELA 0 ACLK LFTX1 by default bis SR register LPM3 bits Enter LPM3 设设 ACLKACLK XT1XT1 32768Hz32768Hz 令 令 SMCLKSMCLK XT2CLKXT2CLK MCLKMCLK DCO DCO 默认默认 3232 x x ACLKACLK 1048576Hz1048576Hz ACLKACLK 和和 SMCLKSMCLK 分别通过分别通过 P1 0P1 0 和和 P3 4P3 4 输出 输出 include void main void WDTCTL WDTPW WDTHOLD Stop WDT P1DIR BIT0 ACLK set out to pins P1SEL BIT0 P3DIR BIT4 SMCLK set out to pins P3SEL BIT4 while BAKCTL P7SEL BIT2 BIT3 Port select XT2 UCSCTL6 Set XT2 On UCSCTL6 XT1 On UCSCTL6 XCAP 3 Internal load cap do UCSCTL7 SFRIFG1 Clear fault flags while SFRIFG1 Test oscillator fault flag UCSCTL6 Decrease XT2 Drive according to expected frequency UCSCTL4 SELA 0 SELS 5 Select SMCLK ACLK source andDCO source while 1 Loop in place 设设 ACLKACLK TACLKTACLK LFXT1LFXT1 32768 32768 MCLKMCLK SMCLKSMCLK DCOCLKDCOCLK 32 ACLK32 ACLK 1 048576Mhz1 048576Mhz 利用 利用 Timer ATimer A 输出周期为输出周期为 512512 32768 32768 15 625ms15 625ms 占空比分别为 占空比分别为 75 75 和和 25 25 的的 PWMPWM 矩形波 矩形波 include void main void WDTCTL WDTPW WDTHOLD Stop WDT while BAKCTL Unlock XT1 pins for operation UCSCTL6 XT1 On UCSCTL6 XCAP 3 Internal load cap Loop until XT1 fault flag is cleared do UCSCTL7 SFRIFG1 Clear fault flags while SFRIFG1 Test oscillator fault flag P1DIR BIT2 BIT3 P1 2 and P1 3 output P1SEL BIT2 BIT3 P1 2 and P1 3 options select TA0CCR0 512 1 PWM Period TA0CCTL1 OUTMOD 7 CCR1 reset set TA0CCR1 384 CCR1 PWM duty cycle TA0CCTL2 OUTMOD 7 CCR2 reset set TA0CCR2 128 CCR2 PWM duty cycle TA0CTL TASSEL 1 MC 1 TACLR ACLK up mode clear TAR bis SR register LPM3 bits Enter LPM3 no operation For debugger 由程序知 P1 2 TA0CCR1 75 PWM P1 3 TA0CCR2 25 PWM 周期 15 625ms 利用定时器实现开发板上的利用定时器实现开发板上的 LEDLED 灯以灯以 1Hz1Hz 的频率闪烁的频率闪烁 include void main void WDTCTL WDTPW WDTHOLD 关闭看门狗 P4DIR BIT4 BIT5 BIT6 P4 4 P4 5 P4 6 设为输出 TA0CCTL0 CCIE CCR0 中断使能 TA0CCR0 16384 TA0CTL TASSEL 1 MC 1 TACLR ACLK 增计数模式 清除 TAR 计数器 bis SR register LPM0 bits GIE 进入 LPM0 使能中断 TA0 中断服务程序 pragma vector TIMER0 A0 VECTOR interrupt void TIMER0 A0 ISR void P4OUT BIT4 BIT5 BIT6 LED 灯取反 pragma vector TIMER0 A1 VECTOR interrupt void TIMER0 A1 ISR void switch even in range TA0IV 14 case 0 break No interrupt case 2 break CCR1 中断 case 4 break CCR2 中断 case 6 break CCR3 中断 case 8 break CCR4 中断 case 10 break reserved case 12 break reserved case 14 溢出中断 P4OUT BIT4 break default break 将长字将长字 0 x123456780 x12345678 写入写入 InfoDInfoD 中 地址为中 地址为 0 x18000 x1800 当写完后 当写完后 P4 5P4 5 绿色指示灯闪烁 绿色指示灯闪烁 include include stdint h uint32 t FLASH ptrD uint32 t 0 x1800 初始化 FLASH 信息段 D Info D 指针 指向 Info D 首地址 void main void uint32 t value 0 x12345678 WDTCTL WDTPW WDTHOLD 关闭看门狗定时器 P4DIR BIT5 disable interrupt 擦除前 关闭全局中断 while FCTL3 判断是否处于忙碌状态 FCTL3 FWKEY 清除 LOCK 标志 FCTL1 FWKEY ERASE 置位 ERASE 位 选择段擦除 FLASH ptrD 0 空写操作 地址可以为段范围任意值 FCTL1 FWKEY BLKWRT 写允许 写长字 FLASH ptrD value 写 FLASH while FCTL3 判断是否处于忙碌状态 enable interrupt FCTL1 FWKEY 清除 WRT 位 FCTL3 FWKEY LOCK 置位 LOCK 标志 no operation 此处设置断点 便于调试 while 1 P4OUT BIT5 烧写完毕 闪烁指示灯 delay cycles 1000000 将将 InfoCInfoC 中的数据拷贝至中的数据拷贝至 InfoDInfoD 中 当拷贝完成后中 当拷贝完成后 P4 5P4 5 绿色指示灯闪烁绿色指示灯闪烁 include include stdint h void copy C2D void void main void WDTCTL WDTPW WDTHOLD 关闭看门狗定时器 P4DIR BIT5 copy C2D while 1 P4OUT BIT5 烧写完毕 闪烁指示灯 delay cycles 1000000 void copy C2D void unsigned int i char Flash ptrC char Flash ptrD Flash ptrC char 0 x1880 初始化信息段 C 指针 Flash ptrD char 0 x1800 初始化信息段 D 指针 FCTL3 FWKEY 清除锁定控制位 FCTL1 FWKEY ERASE 段擦除 disable interrupt Flash 操作期间不允许中断 否则将导致不可预计的错误 Flash ptrD 0 空写 启动擦除 while FCTL3 等待擦除操作完成 FCTL1 FWKEY WRT 采用字节 字写入模式 for i 0 i 128 i Flash ptrD Flash ptrC 将信息段 C 的内容复制到信息段 D 内 while FCTL3 等待写除操作完成 enable interrupt 启动全局中断 FCTL1 FWKEY Flash 退出写模式 FCTL3 FWKEY LOCK 恢复 Flash 锁定位 保护数据 往往 RAMRAM 中写入递增的数据 首地址为中写入递增的数据 首地址为 0 x44000 x4400 然后关闭开关控制位 使之失效 然后关闭开关控制位 使之失效 include include stdint h define NumToWrite 8 volatile int i void main void unsigned long value NumToWrite unsigned char RAM ptr uint8 t 0 x4400 WDTCTL WDTPW WDTHOLD P4DIR BIT5 地址自动加 1 向指针指向的 RAM 单元写入递增的 i 数值 观察 Memory Browser for i 0 i NumToWrite i RAM ptr i RAM ptr unsigned char 0 x4400 地址自动加 1 读出 RAM 中之前写入的递增数值 观察 Memory Browser for i 0 i 0 i RAM ptr i no operation 此处用来测试 while 1 P4OUT BIT5 烧写完毕 闪烁指示灯 delay cycles 1000000 数码管动态显示数字数码管动态显示数字 0 0 5 5 void Init lcd void LCDBCTL0 LCDDIV0 LCDPRE0 LCD4MUX 1 分频 时钟源 ACLK 4MUX 驱 动 LCDBPCTL0 LCDS0 LCDS1 LCDS2 LCDS3 LCDS4 LCDS5 LCDS6 LCDS7 LCDS8 LCDS9 LCDS10 LCDS11 P5SEL BIT3 BIT4 BIT5 void Backlight Enable void P8DIR BIT0 P8OUT BIT0 void LCD Clear void 清屏 unsigned char index for index 0 index 12 index LCDMEM index 0 void LcdGo unsigned char Dot if Dot 1 LCDBCTL0 LCDON else if Dot 0 关闭液晶显示 LCDBCTL0 void main void Init lcd LCD 初始化 Backlight Enable 打开背光 LcdGo 1 打开液晶模块 LCD Clear 清屏 while 1 for i 0 i 6 i Display 012345 for j 0 j 6 j LCDMEM j char gen i delay ms 1000 比较器输入通道比较器输入通道 CB6CB6 接外部模拟信号 并引至比较器接外部模拟信号 并引至比较器 输入端 内部参考电压发生器输入端 内部参考电压发生器 利用共享电压源产生利用共享电压源产生 1 5V1 5V 参考电压 并引至比较器参考电压 并引至比较器 输入端 利用比较器中断 当输入端 利用比较器中断 当 CB6CB6 输入模拟信号电压高于输入模拟信号电压高于 1 5V1 5V 时 拉高时 拉高 P4 4P4 4 引脚 当引脚 当 CB6CB6 输入模拟信号电压低于输入模拟信号电压低于 1 5V1 5V 时 拉低时 拉低 P4 4P4 4 引脚 调节电位器引脚 调节电位器 RP1RP1 观察 观察 L6L6 灯的状态变化灯的状态变化 include void main void WDTCTL WDTPW WDTHOLD 关闭看门狗 P4DIR BIT4 将 P4 4 设为输出 CBCTL0 CBIPEN CBIPSEL 0 启用 CB0 并将其引至正输入端 CBCTL1 CBPWRMD 1 正常电源模式 CBCTL2 CBRSEL 内部参考电压 VREF 引至负输入端 CBCTL2 CBRS 3 CBREFL 1 梯形电阻电路禁用 产生 1 5V 内部共享电压 CBCTL3 BIT6 启用 P6 6 CB6 比较器功能 delay cycles 75 延迟以待参考电压稳定 CBINT 清除比较器中断标志位 CBINT CBIE 使能比较器 CBIFG 上升沿中断 CBIES 0 CBCTL1 CBON 打开比较器 B bis SR register LPM4 bits GIE 进入 LPM4 Comp B 中断服务程序 反转 P4 4 口状态 pragma vector COMP B VECTOR interrupt void Comp B ISR void CBCTL1 CBIES 切换中断触发方式 CBINT 清除中断标志位 P4OUT BIT4 反转 P4 4 口状态 调节电位器 观察实验板上的调节电位器 观察实验板上的 TFTTFT LCDLCD 显示 随着电位器的转动 显示 随着电位器的转动 LCDLCD 显示输入模拟电压显示输入模拟电压 的最转换结果的最转换结果 NADCNADC 也随着相应的改变 输入模拟电压的最转换结果满足公式 也随着相应的改变 输入模拟电压的最转换结果满足公式 NADC 4096 VinNADC 4096 Vin VR VR VR VR VR VR void main void WDTCTL WDTPW WDTHOLD Stop watchdog timer Init TS3A5017DR Configure TS3A5017DR IN1 and IN2 Init lcd lcd初始化 LcdGo 1 打开液晶模块 LCD Clear 清屏 Backlight Enable P6SEL BIT6 Enable A D channel ADC12CTL0 ADC12ON ADC12SHT0 15 ADC12MSC ADC12CTL1 ADC12SHP ADC12CONSEQ 2 ADC12SSEL 1 ADC12MCTL0 ADC12INCH 6 change ADC12IE ADC12IE0 Enable ADC12IFG 0 ADC12CTL0 ADC12ENC Enable conversions ADC12CTL0 ADC12SC Start conversion EINT Enable all interrupt BIS SR LPM4 bits GIE Enter LPM4 Enable interrupts no operation For debugger pragma vector ADC12 VECTOR interrupt void ADC12ISR void results index ADC12MEM0 Move results if index NumOfResult uint16 t i average 0 for i 0 i 3 除以8 Conversion average 10 con Trans val average 10 trans v index 0 LCDMEM 5 char gen con 3 48 LCDMEM 4 char gen con 2 48 LCDMEM 3 char gen con 1 48 LCDMEM 2 char gen con 0 48 for i 0 i NumOfResult i con i 0 trans v i 0 用用 DAC12DAC12 输出输出 1V1V 模拟电压模拟电压 include void main void WDTCTL WDTPW WDTHOLD DAC12 1CTL0 DAC12IR DAC12SREF 1 DAC12AMP 5 DAC12CALON DAC12OPS DAC12ENC 满程输出电压是参考电压的 1 倍 参考电压选择 VCC 输入输 出中速度 电流 进行校验 输出选择 P7 7 开始转换 DAC12 1DAT 0X4D9 4096 3 3 1241 0X4D9 bis SR register LPM4 bits 用用 DAC12DAC12 输出正弦波信号输出正弦波信号 include

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论