Cách mở rộng Port:

Một phần của tài liệu Tổng quan về MPS 430 (Trang 94 - 96)

TẬP LẬP TRÌNH

3.4.2.2Cách mở rộng Port:

Ví dụ: Đưa dữ liệu 0xA4BC ra tầng thứ hai của thanh ghi dịch: Lưu đồ:

Kết nối phần cứng:

+ Nối chân 7 của eZ430-RF2500T làm chân xung clock tầng ghi dịch.

+ Nối chân 15 của eZ430-RF2500T làm chân dữ liệu vào của tầng thứ hai thanh ghi dịch.

+ Nối chân 17 của eZ430-RF2500T làm chân điều khiển xung chốt của tầng thứ hai thanh ghi dịch.

Chương trình:

void MoRongP2(unsigned int q); // Khai báo hàm mở rộng tầng thứ hai union reg { // Khai báo 1 byte 8 bit

struct bit { unsigned char b0:1; unsigned char b1:1; unsigned char b2:1; unsigned char b3:1; unsigned char b4:1; unsigned char b5:1; unsigned char b6:1; unsigned char b7:1; }_BIT;

unsigned char _BYTE;

};

union reg* _P3_DIRECT = (union reg*)0x1A ; // Định nghĩa vùng nhớ 0x1A union reg* _P3_OUT = (union reg*)0x19 ; // Định nghĩa vùng nhớ 0x19 union reg* _P2_DIRECT = (union reg*)0x2A ; // Định nghĩa vùng nhớ 0x2A union reg* _P2_OUT = (union reg*)0x29 ; // Định nghĩa vùng nhớ 0x29

int main(void) // Chương trình chính

{

WDTCTL = WDTPW + WDTHOLD; // Dừng ngắt

_P3_DIRECT->_BYTE = 0xff; // Định nghĩa Port 3 là xuất _P2_DIRECT->_BYTE = 0xff; // Định nghĩa Port 2 là xuất volatile unsigned int a; // Biến khai báo trong RAM

{

a=0xA4BC; // Gán a = A4BC

MoRongP2(a); // Mở rộng tầng 2 với 16 bit của a

} } }

void MoRongP2(unsigned int e) // Hàm mở rộng tầng thứ 2 {

volatile unsigned int f,g,h; // Biến khai báo trong RAM f=0x8000; // Gán f=8000

g=16; // Cho g=16

while(g>0) // Trong khi g>0 thì thực hiện {

h = e&f; // h = e and f if ( h == f) // Nếu h=f {

_P3_OUT->_BIT.b2=1; // bit 2 port 3 là mức 1 }

Else // ngược lại h không =f {

_P3_OUT->_BIT.b2=0; // bit 2 port 3 mức 0 }

_P2_OUT->_BIT.b4=0; // bit 4 port 2 mức 1(xung clock) _P2_OUT->_BIT.b4=1; // bit 4 port 2 mức 0

f=f>>1; // Xoay phải f g--; // Giảm g đi 1 }

_P3_OUT->_BIT.b0=0; // bit 04 port 3 mức 1(xung chốt) _P3_OUT->_BIT.b0=1; // bit 04 port 3 mức 1

} (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Tổng quan về MPS 430 (Trang 94 - 96)