⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8251.c

📁 单片机C51 源程序
💻 C
字号:
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>

#define S8251C_1 0x9001
#define S8251D_1 0x9000
#define S8251C_2 0xa001
#define S8251D_2 0xa000
#define S8251C_3 0xb001
#define S8251D_3 0xb000
#define S8251C_4 0xc001
#define S8251D_4 0xc000
#define RECBUFADDR 0x0000

#define uchar unsigned char
#define uint unsigned int

uchar xdata *RecBufPtr = RECBUFADDR;
uchar err = 0;

void init8251(void);
void COMM8251TX(uint,uchar);
uint COMM8251RX(uint);
void Compare(uchar, uchar);
void delay(uchar);

void main(void)
{
    uchar tx_data, rx_data;

   	init8251();

    while(1)
    {
		for(tx_data=0;tx_data<=0xff;tx_data++)
		{
			COMM8251TX(S8251D_1,tx_data);
			delay(2);

            COMM8251TX(S8251D_2,COMM8251RX(S8251D_2));
            delay(2);

            if(RecBufPtr<=0x7fff)
            {
            	*RecBufPtr = COMM8251RX(S8251D_1);
            	rx_data = *RecBufPtr;
                RecBufPtr++;
            }
            else
                RecBufPtr = RECBUFADDR;
			Compare(tx_data, rx_data);

		}
     }
 }


void init8251(void)
{
	XBYTE[S8251C_1] = 0;
	XBYTE[S8251C_1] = 0;
	XBYTE[S8251C_1] = 0;
	XBYTE[S8251C_1] = 0x40;		//方式字:异步x16,8位,无校验,1个停止位
	delay(10);
	XBYTE[S8251C_1] = 0x4e;
    XBYTE[S8251C_1] = 0x37;		//控制字:TxEN=1,DTR=1,RxE=1,SBRK=0,ER=1,RTS=x,IR=EN=0;
    XBYTE[S8251C_2] = 0;
	XBYTE[S8251C_2] = 0;
	XBYTE[S8251C_2] = 0;
	XBYTE[S8251C_2] = 0x40;		//方式字:异步x16,8位,无校验,1个停止位
	delay(10);
	XBYTE[S8251C_2] = 0x4e;
    XBYTE[S8251C_2] = 0x37;		//控制字:TxEN=1,DTR=1,RxE=1,SBRK=0,ER=1,RTS=x,IR=EN=0;

}

void COMM8251TX(uint tx_addr, uchar tx_value)
{
	while(!(XBYTE[tx_addr+1]&0x01));

	XBYTE[tx_addr] = tx_value;


}

uint COMM8251RX(uint rx_addr)
{
    uchar temp;

    while(!(XBYTE[rx_addr+1]&0x02));

	temp = XBYTE[rx_addr];

	return(temp);


}

void Compare(uchar tx_value, uchar rx_value)
{
	if(tx_value == rx_value)
		err = 0;
	else
		err++;
}


void delay(uchar time)
{
	uchar i, j;
	for(j=0;j<time;j++)
		for(i=0;i<0xff;i++)
			_nop_();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -