Thứ Tư, 13 tháng 4, 2011

giao tiep RS232

//***************Thiết lập cho UART****************
void uart_init()//dung trong truyen thong noi tiep
{
SCON=0x50;//che do 8 bit du lieu,1 bit sart,1 bit stop
TMOD&=0x0F;//
TMOD|=0x20;//timer1 in mode2
TH1=0xFD;//set baut rate at 9600(11.0592Mhz)
TL1=0xFD;
ES=1;//cho phep ngat noi tiep
EA=1;//cho fep tat ca cac ngat
TR1=1;//chay timer1
}//tham khảo thêm trong tài liệu của Thầy Tống Văn On
//***************Gửi 1 ký tự *********************
void send_data(char uart_data)//gui du lieu qua cong COM
{
TI=0;
SBUF=uart_data;
while(TI==0){}//cho trong khi dang gui du lieu
TI=0;
}
//***************Gửi một chuỗi ký tự*****************
void send_string(char my_data[])
{
unsigned char len_my_data,q;
len_my_data=strlen(my_data);
for(q=0;q
{
send_data(my_data[q]);
}

}
//*************Nhận 1 ký tự*********************
void receive_data() interrupt 4//nhan du lieu
{
if(RI==1)
{
RI=0;
uart_data_receive=SBUF;
}
}
/*Co 2 su kiện để ngắt truyền thông nối tiếp xảy ra:1 là sau khi gửi xong 1 ký tự ; 2 là sau khi nhận được 1 ký tự. CHo nên trong hàm receive_data() ta phải kiểm tra cờ (RI==1) hay không, để chắc chắn đó là ngắt do nhận xong 1 ký tự.*/
trên đây là các modul chính để làm việc với UART. các bạn viết thêm modul nhận 1 chuỗi ký tự mới từ máy tính xuống nhé.

Không có nhận xét nào:

Đăng nhận xét

Cam on ban da gop y.