找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2534|回復: 0
打印 上一主題 下一主題
收起左側(cè)

<更新>PC232.h <Pc232_MAX要定義>

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80436 發(fā)表于 2015-5-19 01:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#ifndef _PC232_H_
#define _PC232_H_

#include <reg51.h>
#include "intrins.h"


#define uint8   unsigned char
#define uint16  unsigned int


#define PC232_MAX  16             //最大字符串長度

uint8 PC232_data;               //當前字符
uint8 PC232_stringSBUF[PC232_MAX]={" "};  //字符串
uint8 PC232_string[PC232_MAX]={" "};  //字符串
uint8 PC232_Loc=0;               //字符地址


void PC232delay( )   //10ms@22.0784MHz
{
    unsigned char i, j, k;

    i = 1;
    j = 216;
    k = 35;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void UartInit()     //9600bps@22.0784MHz
{
    EA=1;
    ES=1;
    PCON &= 0x7F;       //波特率不倍速
    SCON = 0x50;        //8位數(shù)據(jù),可變波特率
    TMOD &= 0x0F;       //清除定時器1模式位
    TMOD |= 0x20;       //設定定時器1為8位自動重裝方式
    TL1 = 0xFA;     //設定定時初值
    TH1 = 0xFA;     //設定定時器重裝值
    ET1 = 0;        //禁止定時器1中斷
    TR1 = 1;        //啟動定時器1


}

/*------------------------------- 發(fā)送一個字節(jié)---------------------------------------*/
void SendByte(uint8 dat)
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}

/*------------------- 發(fā)送一個字符串------------------------------------------*/
void SendStr(uint8 *s)
{
    while(*s != '\0')  //字符串是否發(fā)送完,
    {
        SendByte(*s);
        s++;
    }
}

/*------------------- 串口中斷------------------------------------------*/
void PC232serial()interrupt 4
{
    if(RI && PC232_Loc<PC232_MAX){

        switch(PC232_MAX){
            case 1 : PC232_data=SBUF;
                     SendByte(PC232_data);
                     PC232_string[0]=SBUF;
                     PC232_string[1]=0x00;
                     break;
            default: PC232_data=SBUF;
                     SendByte(PC232_data);
                 PC232_stringSBUF[PC232_Loc]=SBUF;
                     PC232_string[PC232_Loc]=PC232_stringSBUF[PC232_Loc];
                     PC232_string[++PC232_Loc]=0x00;
                     break;
         }

    }
     if(PC232_Loc==PC232_MAX){
                       PC232_Loc=0;
                         PC232_stringSBUF[0]=0x00;
     }


     RI=0;

}


#endif


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表