找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2486|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:80436 发表于 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位数据,可变波特率
    TMOD &= 0x0F;       //清除定时器1模式位
    TMOD |= 0x20;       //设定定时器1为8位自动重装方式
    TL1 = 0xFA;     //设定定时初值
    TH1 = 0xFA;     //设定定时器重装值
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;        //启动定时器1


}

/*------------------------------- 发送一个字节---------------------------------------*/
void SendByte(uint8 dat)
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}

/*------------------- 发送一个字符串------------------------------------------*/
void SendStr(uint8 *s)
{
    while(*s != '\0')  //字符串是否发送完,
    {
        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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表