欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 計算機與單片機串口通信,詳細注釋 [打印本頁]

作者: zly6666    時間: 2017-12-18 09:02
標題: 計算機與單片機串口通信,詳細注釋
#include <reg52.h>
#define uchar unsigned char
uchar flag_T=1,flag_R=0,flag_RE=0;//flag_T 下一次發送允許標志,flag_R下一次發送允許標志,flag_RE接收時觸發發送標志
void init_RS232(void)
{
        SCON=0x50;//串口工作方式1,Ren=1,允許串行接收
        T2CON=0X34;//RCLK=1 TCLK=1,選擇定時器2做為溢出時鐘(波特率發生器),TR2=1,啟動定時器2
        RCAP2H=0XFF;// 給定時器2賦定時初值
        RCAP2L=0XDB;//波特率:9600bps 晶振=11.0592MHz
        ES=1;        //開串口中斷
        EA=1;        //開總中斷
}

void Serial_Byte ( ) interrupt 4//串口中斷
{
        if(TI==1)//發送標志位置1,發送完1個字節時觸發了中斷。
        {
        TI = 0;//軟件清0
        flag_T= 1;//發送程序狀態機,加載至主程序部分
        }
       
    if(RI==1)//接收標志位置1,接收完1個字節時觸發了中斷。
        {
        RI = 0;//軟件清0
        flag_R= 1;//發送程序狀態機,加載至主程序部分
        }
}
void delay(unsigned int x)    //延時 x ms
{
    unsigned int i,j;
    for(i=x;i>0;i--)
    for(j=110;j>0;j--);
}

void main()
{
    uchar j=0;//初始化數組元素位置
        uchar s[100]={0};//初始化數組
        uchar *p=s;//初始化數組指針
        init_RS232();//初始化串口
        while(1)//循環
        {
                if(flag_T&&flag_RE)//允許發送且收到數據
                {  
                        flag_T=0;//軟件清0
                        flag_RE=0;//軟件清0
                SBUF=*p;//將接受到的數據發
                        p++;//準備下一次的發送
                }
                        if(flag_R)//允許接收
                {
                        flag_R=0;//軟件清0
                        flag_RE=1;//允許發送
                        s[j]=SBUF;//接收數據存儲
                        j++;         //準備下一次接收          
        }       
         }
        }



作者: zly6666    時間: 2017-12-18 09:04
可以實現一次串口通信




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1