[msp430] gpio

16

Upload: vu-thinh

Post on 03-Jan-2016

138 views

Category:

Documents


2 download

TRANSCRIPT

Page 3: [MSP430] GPIO

• Điện áp tiêu thụ thấp: 1.8V to 3.6V với 3 chế độ sử dụng năng lượng (Active, Standby, Off)

• 5 chế độ tiết kiệm năng lượng

• 2 port, 10 chân xuất nhập (I/O pins)

• Vi điều khiển 16-bit với đầy đủ các chức năng (2 bộ Timer 16-bit, 10-bit ADC, UART, I2C, PWM, ….)

Page 6: [MSP430] GPIO

2 port xuất nhập Port1 : Từ chân P1.0 đến P1.7 Port2: 2 chân Xin(P2.6) và Xout(P2.7)

Page 7: [MSP430] GPIO

Thanh ghi PxSEL(x:1 , 2) và PxSEL2(x:1 , 2) Thanh ghi này qui định chế độ làm việc cho các chân bao gồm PxSEL và PxSEL2 VD: Ta muốn port 1 là GPIO thì ta thực hiện lệnh như sau: P1SEL = 0; P1SEL2 = 0; Lưu ý: Interrupts P1 và P2 sẽ bị vô hiệu hóa khi PxSEL=1

Page 8: [MSP430] GPIO

Thanh ghi PxDIR(x:1 , 2) Thanh ghi này qui định loại ngõ vào ra cho các chân (I/O pins) Mặc định các chân này là input, nên ta chỉ cần set output cho các chân này VD: P1DIR = 0x01 //chân P1.0 là output

Page 9: [MSP430] GPIO

Thanh ghi PxREN(x:1 , 2) Thanh ghi này cho phép tắt hoặc mở chế độ pullup/pulldown resistor cho các pins

Page 10: [MSP430] GPIO

Thanh ghi PxIN(x: 1 , 2) Khi ta muốn nhập giá trị cho các chân I/O, ta sẽ đặt giá trị vào các thanh ghi PxIN Lưu ý là ta phải chỉnh P1DIR trước khi nhập giá trị

Page 11: [MSP430] GPIO

Thanh ghi PxOUT(x: 1 , 2) _Khi ta muốn xuất giá trị cho các chân I/O, ta sẽ đặt giá trị vào các thanh ghi PxOUT _Khi ta config thanh ghi PxREN sang chế độ pullup/pulldown resistor thì Lưu ý là ta phải chỉnh P1DIR trước khi xuất giá trị ra ngoài.

Page 12: [MSP430] GPIO

Tóm tắt: Để thực hiện xuất / nhập trên 1 chân (Pin): - Cài đặt đúng giá trị cho thanh ghi PxDIR - Đặt kiểu tín hiệu của pin là GPIO hay các chức năng khác qua thanh ghi PxSEL - Xuất tín hiệu bằng cách ghi giá trị “0” hoặc “1” vào port tương ứng (port P1OUT) - Đọc giá trị của chân bằng cách đọc mức logic trên port tương ứng.

Page 13: [MSP430] GPIO

Cách viết chương trình C với CCS và IAR #include <msp430g2231.h> //Khai báo biến toàn cục unsigned int a //Khai báo chương trình con void chuong_trinh_con(void) { //chương trình con ở đây }

Page 14: [MSP430] GPIO

//Chương trình chính void main(void) { // Phần khởi tạo //vòng lặp vô tận while(1) { //thực hiện lệnh }; }

Page 15: [MSP430] GPIO

#include <msp430g2231.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P1DIR |= 0x01; // Set P1.0 to output direction P1SEL = 0; // Set P1 GPIO function P1SEL2 = 0; while(1) { P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR __delay_cycles(100); // Đối với IAR, còn với CCS thì chỉ cần _delay_cycles(100); } } //Chương trình thực hiện chớp tắt led tại P1.0

Page 16: [MSP430] GPIO