完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
#include "msp430x44x.h"
unsigned int T_DATA=0x00; //发送缓冲器 unsigned int R_DATA=0x00; //接收缓冲器 void Delay_bit (unsigned char n); void txd (unsigned char byte); void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= XCAP14PF; // 匹配14pf电容 SCFI0 |= FN_2; SCFQCTL = 121; // SMCLK=(121+1) x 32768 = 3.998 MHz __delay_cycles(20000); //延时20ms,等待晶振起振稳定 do { IFG1 &= ~OFIFG; for(unsigned int i=5000;i>0;i--); } while(IFG1&OFIFG); TACTL |= TASSEL_2 + TACLR; P2DIR |= BIT4; P2OUT |= BIT4; P2IES |= BIT5; //下降沿捕获 P2IE |= BIT5; //开启P2.5中断功能 P2IFG = 0; _EINT(); while(1) { //LPM3; } } void Delay_bit (unsigned char n) //发送1.5字节时间 { TACTL |= TACLR + MC_2; switch(n) { case 0: { while(TAR<1665); } break; case 1: { while(TAR<2498); } break ; } TACTL |= TACLR; } void txd (unsigned char byte) //发送一字节数据 { T_DATA=byte; T_DATA=T_DATA<<1; //将字节数据向左移一位,构造最低位为起始位。 T_DATA=T_DATA|0x0200; //将字的第10位设为1,以作停止位使用。 for(unsigned char i=0;i<10;i++) { if(T_DATA&0x0001) { P2OUT |= BIT4; } else { P2OUT &= ~BIT4; } T_DATA >>= 1; Delay_bit(0); } P2OUT |= BIT4; } #pragma vector=PORT2_VECTOR __interrupt void P2_Interrupt(void) { if(P2IFG&BIT5) { while(P2IN&BIT5); Delay_bit(1); for(unsigned char i=0;i<8;i++) { R_DATA >>= 1; if(P2IN&BIT5) { R_DATA |= 0x80; } else { R_DATA |= 0x00; } Delay_bit(0); } } txd(R_DATA); P2IFG=0; } |
|
|
|
只有小组成员才能发言,加入小组>>
3039个成员聚集在这个小组
加入小组2938 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3615 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2350 浏览 1 评论
4813 浏览 1 评论
2579 浏览 1 评论
1335浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3616浏览 2评论
2938浏览 1评论
1524浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 00:27 , Processed in 1.399448 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号