今天翻出来了十年前的MSP430G2开发板,写一个专业的点灯

[复制链接]
 楼主| gaoyang9992006 发表于 2025-1-6 20:13 | 显示全部楼层 |阅读模式
该开发板为G2LaughPad V1.5
按钮为P1.3
LED为P1.0和P1.6
好久没用MSP430了,写代码要专业一点,不能学参考代码之间就对寄存器操作
  1. #include "intrinsics.h"
  2. #include "msp430g2553.h"

  3. #include <msp430.h>

  4. void led_init(void)
  5. {
  6.   P1DIR |= BIT0|BIT6;       //LED1和LED2所在引脚设置为输出模式
  7.   P1OUT &= ~(BIT0|BIT6);    //LED1和LED2所在引脚设置为初始化输出低电平
  8. }

  9. void button_init(void)
  10. {
  11.   P1DIR &=~BIT3;            //S2引脚在P1.3,设置为输入模式,配置为上拉电阻
  12.   P1REN |= BIT3;
  13.   P1OUT  = BIT3;
  14. }
  15. void led1_on(void)
  16. {
  17.   P1OUT |=BIT0;
  18. }
  19. void led2_on(void)
  20. {
  21.   P1OUT |=BIT6;
  22. }
  23. void led1_off(void)
  24. {
  25.   P1OUT &=~BIT0;
  26. }
  27. void led2_off(void)
  28. {
  29.   P1OUT &=~BIT6;
  30. }

  31. int main(void)
  32. {
  33.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  34.   button_init();
  35.   led_init();
  36.   for (;;)
  37.   {
  38.     if((BIT3&P1IN)==BIT3)
  39.     {      
  40.       led1_on();
  41.       __delay_cycles(500000);
  42.       led2_on();
  43.       __delay_cycles(500000);
  44.       led1_off();
  45.       __delay_cycles(500000);
  46.       led2_off();
  47.       __delay_cycles(500000);
  48.     }   
  49.     else
  50.     {
  51.       led1_on();
  52.       led2_on();
  53.       __delay_cycles(500000);
  54.       led1_off();
  55.       led2_off();
  56.       __delay_cycles(500000);
  57.     }
  58.    
  59.   }
  60. }


 楼主| gaoyang9992006 发表于 2025-1-6 20:14 | 显示全部楼层
这样就方便修改,也可以避免操作到了其他不相干的位,比如P1.0,要在P1OUT对应的BIT3输出高电平才可以使得内部上拉电阻工作。
yueguang3048 发表于 2025-1-9 09:16 | 显示全部楼层
看着像51的风格
 楼主| gaoyang9992006 发表于 2025-1-9 10:36 | 显示全部楼层

是的,早期的51,MSP430,AVR,PIC都是寄存器操作,看着风格像。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2045

主题

16350

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部