Sử dụng bộ UART trong vi điều khiển 8051

Thao tác trao đổi dữ liệu qua cổng nối tiếp máy tính  của vi điều khiển được sử dụng phổ biến hiện nay trên các ứng dụng . Bài hôm nay chúng ta đi tìm hiểu bộ trao đổi nối tiếp UART của họ 8051 . Để thực hiện việc này chúng ta cần thực hiện 3 thao tác sau:

– Khởi tạo cổng nối tiếp:

+ Truy xuất SCON để đặt các thông số như chế độ hoạt động , phép thu..

+ Thiết lập hoặc xóa bit SMOD của thanh ghi PCON để đặt hệ số chia tốc độ baud .

+ Truy xuất các thanh ghi của bộ timer 1 và timer 2 để đặt tốc độ baud cho cổng nối tiếp

– Kiểm tra cờ TI( khi truyền ) và kiểm tra cờ RI khi nhận

– Ghi đọc bye dữ liệu ở SBUF.

Ví dụ truyền 1 bye qua PORT nối tiếp

#include <reg52.h>

#include<stdio.h>

char x;

void main();

{

SCON =0x52;

TMOD=0x20;

TH1=TL1=-3;

TR1=1;

while(!TI);

TI=0;

SBUF=x;

}

Ví dụ nhận 1 bye qua PORT nối tiếp

#include <reg52.h>

#include<stdio.h>

char x;

void main();

{

SCON =0x52;

TMOD=0x20;

TH1=TL1=-3;

TR1=1;

while(!RI);

RI=0;

x=SBUF;

}

Một ví dụ cụ truyền chuổi kỹ tự hiển thị lên HiperTeminal

 

Sơ đồ mô phỏng :

 

uart

 

Code 89s52:

#include <REGX52.H>
#include <stdio.h>
#include <math.h>
void delay_ms(unsigned int ms)
{
unsigned int i;
for(i=0;i<ms;i++);
}
void truyen_mang(char *s)
{
putchar(0X0d);
putchar(0x0b);
while(*s)
{
putchar(*s);
s++;
delay_ms(2000);
}
}

void main()
{
SCON=0x52;
TMOD=0x20;
TH1=TH1=-3;
TR1=1;
putchar(0x0c);
truyen_mang(”  Chao mung cac ban den voi website http://machdientu.net “);
truyen_mang(”               Chuc cac ban co mot buoi toi vui ve!         “);

while(1);
}

digg delicious stumbleupon technorati Google live facebook Sphinn Mixx newsvine reddit yahoomyweb