Không biết mấy em C7 đã nạp được chương trình cho chip trên mạch main chưa nhỉ?
Nếu nạp được rồi thì mấy em chuyển qua nghịch mấy con led trên board đi nhé
Để làm tốt việc này, ngoài mấy nội dung trong bài giảng, chúng ta cần hiểu rõ thêm:
+ Lệnh trì hoãn: __delay_cycles(xxx); // xxx là số chu kì máy được trì hoãn. Trong khoảng thời gian trì hoãn, MCU không làm gì cả (NOP: no operation). Nếu các nguồn clock của MCU không được config (như code mẫu), MCU sẽ chạy ở 1MHz, tức chu kì máy là 1us. Delay 1000000 chu kì máy chúng ta sẽ được 1 giây.
+ Về việc sử dụng số hex thay cho số nhị phân (0x00 = binary: 00000000; 0xFF = binary: 11111111) , lệnh dịch bit P1OUT << 1, các toán tử tăng giảm: P1OUT++, các lệnh điều kiện, vòng lặp, ... các em chịu khó xem lại C cơ bản nhé, có thể tham khảo ở luồng này
+ Nguyên lý điều khiển led: Tất cả các led của chúng ta được nối anode lên nguồn 3V3, tín hiệu điều khiển ở cathode. Do vậy, khi xuất 1 tức là đặt điện áp 3V3 ở cathode, led sẽ tắt; ngược lại, xuất 0 led sẽ sáng.
Đây là 1 đoạn code mẫu chạy led (mới viết, mấy em test luôn :d)
Các em đổ thử lên con chip trên board, lấy bus 8 (hay 8 cọng bus 1) nối J9 với J17 coi led chạy rồi ngâm cứu code, hiểu rồi thì lập trình cho led chạy đủ kiểu đi nhé. Các kiểu các em có thể tự nghĩ ra, xem mấy clip này để tham khảo một số kiểu nhé
Chú ý: trong mấy clip trên có điều khiển độ sáng của led, ở "đẳng cấp" của C7 mới chỉ điều khiển được led on/off thôi nhé
Chúc mấy em nghịch led vui, gặp lại chúng ta sẽ học tiếp phần input của GPIO
Nếu nạp được rồi thì mấy em chuyển qua nghịch mấy con led trên board đi nhé
Để làm tốt việc này, ngoài mấy nội dung trong bài giảng, chúng ta cần hiểu rõ thêm:
+ Lệnh trì hoãn: __delay_cycles(xxx); // xxx là số chu kì máy được trì hoãn. Trong khoảng thời gian trì hoãn, MCU không làm gì cả (NOP: no operation). Nếu các nguồn clock của MCU không được config (như code mẫu), MCU sẽ chạy ở 1MHz, tức chu kì máy là 1us. Delay 1000000 chu kì máy chúng ta sẽ được 1 giây.
+ Về việc sử dụng số hex thay cho số nhị phân (0x00 = binary: 00000000; 0xFF = binary: 11111111) , lệnh dịch bit P1OUT << 1, các toán tử tăng giảm: P1OUT++, các lệnh điều kiện, vòng lặp, ... các em chịu khó xem lại C cơ bản nhé, có thể tham khảo ở luồng này
+ Nguyên lý điều khiển led: Tất cả các led của chúng ta được nối anode lên nguồn 3V3, tín hiệu điều khiển ở cathode. Do vậy, khi xuất 1 tức là đặt điện áp 3V3 ở cathode, led sẽ tắt; ngược lại, xuất 0 led sẽ sáng.
Đây là 1 đoạn code mẫu chạy led (mới viết, mấy em test luôn :d)
Code:
#include <msp430g2553.h> // or <msp430.h>
void main(void)
{
unsigned int i; // declare variable
WDTCTL = WDTPW + WDTHOLD; // Stop watch dog timer
P1DIR |= 0xFF; // Set all Port 1 to output direction
P1OUT = 0xFE; // initiation, set Led at P1.0 on
while(1) // infinite loop
{
for(i=0; i<=6;i++)
{
P1OUT =(P1OUT<<1)+1; // shift led left
__delay_cycles(500000); // Delay 0.5s
}
for(i=0; i<=6;i++)
{
P1OUT =(P1OUT>>1)+0x80;// shift led right
__delay_cycles(500000); // Delay 0.5s
}
}
}
HTML:
http://www.youtube.com/watch?v=qt4mimuz5rQ
http://www.youtube.com/watch?v=E8g_06NJEkc
http://www.youtube.com/watch?v=maDLJVoxZbs&feature=related
http://www.youtube.com/watch?v=44kMuDAa7BM&feature=endscreen&NR=1
Chúc mấy em nghịch led vui, gặp lại chúng ta sẽ học tiếp phần input của GPIO