Trung tâm đào tạo thiết kế vi mạch Semicon


  • ĐĂNG KÝ TÀI KHOẢN ĐỂ TRUY CẬP NHIỀU TÀI LIỆU HƠN!
  • Create an account
    *
    *
    *
    *
    *
    Fields marked with an asterisk (*) are required.
semicon_lab.jpg

Bài 1 Vi điều khiển MSP430: Input và Output

E-mail Print PDF
Để sử dụng một Vi điều khiển nói chung hay cụ thể là con MSP430F5510 nói riêng thì chúng ta sẽ phải tương tác với Vi điều khiển qua việc InputOutput hay gọi là các I/O.
Để lập trình cho Vi điều khiển MSP430F5510 nói trên thì chúng ta sẽ dùng chương trình Code Composer Studio (CCS), ngôn ngữ lập trình là C.
Không giống như họ vđk 8051, việc khai báo của MPS có vẻ dài dòng và cụ thể hơn ^^.

Việc khai báo input hay output này chúng ta phải thực hiện ở phần đầu của chương trình.
Cú pháp:
PxDIR: (x là tên Port )
Bit = 0: Pin được khai báo là Input
Bit = 1: Pin được khai báo là Output
Ví dụ:
P1DIR = 0x0F; // chân P1.0 đến chân P1.3 là Output 0b0000111

Và tất nhiên, sau khi khai báo là input hay output thì chúng ta phải khai báo mức logic ở trạng thái đầu tiên cho Output còn Input thì không cần.

Cú pháp cho output:
PxOUT : (x là tên Port)
Bit = 0: Mức logic ở chân được khai báo là 0 ( mức thấp-low)
Bit = 1: Mức logic ở chân được khai báo là 1 ( mức cao - high)
Ví dụ:
P1DIR = 0xFF; // Tất cả các chân ở Port 1 được khai báo là ouput
P1OUT = 0x96; //0b10010110 Các chân 1.1, 1.2, 1.4, 1.7 có mức logic 1, các chân còn lại có mức logic 0.
 
Cú pháp của input
PxIN : (x là tên Port)
Bit = 0: Mức thấp
Bit = 1: Mức cao
Ví dụ:
P1DIR = 0x7F; //P1.7 là input, các pin còn lại là output
------------
If(P1IN & 0x80) // nếu P1.7 ở mức 1 thì
P1OUT = 0x96; //0b10010110
 
Chương trình mẫu cho mọi người dễ hiểu hơn:
Nháy LED đơn giản
#include  <msp430F5510.h>
  void main(void)
{
    // Stop Watchdog Timer 
   WDTCTL = WDTPW + WDTHOLD;
     // P1.0 and P1.6 is output pin
    P1DIR |= BIT0 + BIT1; 
   while(1)  {
      P1OUT |= BIT0 + BIT1;
      __delay_cycles(50000);
      __delay_cycles(50000);
      P1OUT &= ~(BIT0 + BIT1);
      __delay_cycles(50000);
      __delay_cycles(50000);
    }
  }

Tương tác với phím nhấn:

include  <msp430F5510.h>
  void main(void)
 {
   WDTCTL = WDTPW + WDTHOLD;        // Stop watchdog timer 
  P1DIR |= 0x01;                                // Set P1.0 to output direction
    while (1)                                         // Test P2.0 
  {
     if (P2IN&BIT0)
         P1OUT |= 0x01;                      // if P2.0 set, set P1.0
     else
     P1OUT &= ~0x01;                       // else reset P1.0=0 
  }
 }

Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn

đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON

  HotLine: 0972 800 931 Ms Duyên

 
Last Updated ( Tuesday, 13 October 2015 10:14 )  

Related Articles

Chat Zalo