当前位置:首页 > 单片机 > 单片机
[导读] 1 #include "msp430g2553.h" 2 3 typedef unsigned char uchar; 4 typedef unsigned int uint; 5 6 #define LED BIT0 7 #define TXD BIT1 // TXD on P1.1 8 #define RXD BIT2 // R

1 #include "msp430g2553.h"

2

3 typedef unsigned char uchar;

4 typedef unsigned int uint;

5

6 #define LED BIT0

7 #define TXD BIT1 // TXD on P1.1

8 #define RXD BIT2 // RXD on P1.2

9 #define POUT P1OUT

10

11 #define BITTIME_1b 13*4 //1bit宽度

12 #define BITTIME_1b5 13*6 //1.5bit宽度

13

14 uchar bitcnt;

15 uint uart_buf;

16 int Send_flag;

17

18 uchar *str=" Hello EEWorld! r";

19

20 void FaultRoutine(void)

21 {

22 while(1); // 异常挂起

23 }

24

25 void ConfigClocks(void)

26 {

27 if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

28 FaultRoutine(); // If calibration data is erased

29 // run FaultRoutine()

30 BCSCTL1 = CALBC1_1MHZ; // Set range

31 DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation

32 BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO

33 IFG1 &= ~OFIFG; // Clear OSCFault flag

34 BCSCTL2 = 0; // MCLK = DCO = SMCLK

35 }

36

37 void ConfigPins(void)

38 {

39 P1DIR |= TXD+LED;

40 P1DIR &= ~RXD; // P1.3 input, other outputs

41 P1OUT |= TXD; // clear output pins

42

43 }

44

45

46 //发送一个字节

47 void send_char(uchar tchar)

48 {

49 TACTL = TACLR + TASSEL_2 + ID_3; //选择SMCLK时钟;清TAR

50 CCR0 = BITTIME_1b5; //crr0定时间隔为1bit时间宽度

51 CCTL0 |= CCIE; //打开CCR0中断

52 bitcnt = 10; //待发送的位数

53 uart_buf = 0x0100; //8+N+1

54 uart_buf |= tchar; //stop bit and start bit;

55 uart_buf <<=1;

56 Send_flag = 0;

57 TACTL |= MC_1; //Start TA, UP mode.

58 _BIS_SR(GIE);

59 while(!Send_flag); //wait until send complete

60 Send_flag = 1;

61 }

62

63 //发送一个字符串

64 void send_String(uchar *tstr)

65 {

66 while(*tstr)

67 send_char(*tstr++);

68 }

69

70

71 void send_IRQ(void)

72 {

73 if(bitcnt>0)

74 {

75 if(uart_buf & 0x01)

76 POUT |= TXD;

77 else

78 POUT &= ~TXD;

79 uart_buf >>= 1;

80 bitcnt--;

81 }

82 else

83 {

84 TACTL &= ~MC_3; //Close the TA when a Byte send over. ??

85 CCTL0 &= ~CCIE; //关闭CCR0中断

86 Send_flag = 1;

87 }

88

89 }

90

91

92

93 void main( void )

94 {

95 // Stop watchdog timer to prevent time out reset

96 uint i;

97

98

99

100 WDTCTL = WDTPW + WDTHOLD;

101 ConfigClocks();

102 ConfigPins();

103

104

105 while(1)

106 {

107 send_String(str);

108

109 for(i=50000;i>0;i--);

110 for(i=50000;i>0;i--);

111 for(i=50000;i>0;i--);

112 for(i=50000;i>0;i--);

113 POUT ^= LED; // 翻转LED

114 }

115 }

116

117 // Timer A0 interrupt service routine

118 #pragma vector=TIMER0_A0_VECTOR

119 __interrupt void Timer_A (void)

120 {

121

122

123 send_IRQ();

124 }


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭