📄 uart.bak
字号:
#include "stc51reg.h"
//***************************************************************
void config()
{
WDT_CONTR = 0x00; // Watchdog Timer Control Register 关闭看门狗定时器。
PCON = 0x00;
SCON = 0x50; // Serial Port Control Register
SCON &= 0xFC; //clear interrupt pending flags
TH1 = 0xFD; // Timer 1 High Byte
TL1 = 0xFD;
TMOD = 0x20; // Timer Mode Register
TCON = 0x40; // Timer Control Register
}
//初始化单片机
//*************************************************************************
//********************************************************************
void uart_sendByte(unsigned char dat)
{
SBUF=dat;
while(!TI); //waite for data to transmit completely
SCON &= 0xFD;
}
//通过串口发送1个字节的数据,dat为发送的数据
//**************************************************************************
//***************************************************************************
unsigned char uart_recByte(void)
{
unsigned char rec=0;
while(!RI); //waite to recieve data in SBUF0
rec=SBUF;
SCON &= 0xFE;
return rec;
}
//接收一个字节的数据,函数返回读取到的数据
//***************************************************************************
//***************************************************************************
unsigned char read_reg(unsigned char port,unsigned char reg)
{
uart_sendByte(((port-1)<<4)+reg);
return uart_recByte();
}
//读取寄存器的值,port为子串口的路数,reg为寄存器的地址,返回值是寄存器的值
//***************************************************************************
//****************************************************************************
void write_reg(unsigned char port,unsigned char reg,unsigned char dat)
{
uart_sendByte(0x80+((port-1)<<4)+reg);
uart_sendByte(dat);
}
//往寄存器里面写数据,port为子串口的路数,reg为寄存器的地址,dat 为写入寄存器的值
//****************************************************************************
//*******************************************************************************
unsigned char *read_fifo(unsigned char port,unsigned char num)
{
unsigned char n;
unsigned char * dat;
uart_sendByte(0x40+((port-1)<<4)+num);
for(n=0;n<num;n++)
{
*(dat+n)=uart_recByte();
}
return dat;
}
//读取fifo中的数据,port为子串口的路数,num是读取的数据的个数,函数返回读取到的
//数据的首地址指针
//*****************************************************************************
//*****************************************************************************
void write_fifo(unsigned char port,unsigned char *p,unsigned char num)
{
unsigned char n;
uart_sendByte(0xc0+((port-1)<<4)+num);
for(n=0;n<num;n++)
uart_sendByte(*(p+n));
}
//写fifo,port为子串口的路数,num是读取的数据的个数,p是将要写入数据的首地址
//****************************************************************************
/*
#include "C8051F020.h"
// P0.0 = UART TX0 (Push-Pull Output)
// P0.1 = UART RX0 (Open-Drain Output/Input)
//***************************************************************
void config()
{
WDTCN = 0x07; // Watchdog Timer Control Register
WDTCN = 0xDE; // Disable WDT
WDTCN = 0xAD;
PCON = 0X00;
P0MDOUT = 0x01; // Output configuration for P0
P1MDOUT = 0x40; // Output configuration for P1
XBR0 = 0x04; // XBAR0: Initial Reset Value
XBR1 = 0x00; // XBAR1: Initial Reset Value
XBR2 = 0xC0; // XBAR2: Initial Reset Value
SCON0 = 0x50; // Serial Port Control Register
SCON0 &= 0xFC; //clear interrupt pending flags
CKCON = 0x10; // Clock Control Register
TH1 = 0xF9; // Timer 1 High Byte
TMOD = 0x20; // Timer Mode Register
TCON = 0x40; // Timer Control Register
// P0.0 = UART TX0 (Push-Pull Output)
// P0.1 = UART RX0 (Open-Drain Output/Input)
}
//初始化单片机
//*************************************************************************
//********************************************************************
void uart_sendByte(unsigned char dat)
{
SBUF0=dat;
while(!TI0); //waite for data to transmit completely
SCON0 &= 0xFD;
}
//通过串口发送1个字节的数据,dat为发送的数据
//**************************************************************************
//***************************************************************************
unsigned char uart_recByte(void)
{
unsigned char rec=0;
while(!RI0); //waite to recieve data in SBUF0
rec=SBUF0;
SCON0 &= 0xFE;
return rec;
}
//接收一个字节的数据,函数返回读取到的数据
//***************************************************************************
//***************************************************************************
unsigned char read_reg(unsigned char port,unsigned char reg)
{
uart_sendByte(((port-1)<<4)+reg);
return uart_recByte();
}
//读取寄存器的值,port为子串口的路数,reg为寄存器的地址,返回值是寄存器的值
//***************************************************************************
//****************************************************************************
void write_reg(unsigned char port,unsigned char reg,unsigned char dat)
{
uart_sendByte(0x80+((port-1)<<4)+reg);
uart_sendByte(dat);
}
//往寄存器里面写数据,port为子串口的路数,reg为寄存器的地址,dat 为写入寄存器的值
//****************************************************************************
//*******************************************************************************
unsigned char *read_fifo(unsigned char port,unsigned char num)
{
unsigned char n;
unsigned char * dat;
uart_sendByte(0x40+((port-1)<<4)+num);
for(n=0;n<num;n++)
{
*(dat+n)=uart_recByte();
}
return dat;
}
//读取fifo中的数据,port为子串口的路数,num是读取的数据的个数,函数返回读取到的
//数据的首地址指针
//*****************************************************************************
//*****************************************************************************
void write_fifo(unsigned char port,unsigned char *p,unsigned char num)
{
unsigned char n;
uart_sendByte(0xc0+((port-1)<<4)+num);
for(n=0;n<num;n++)
uart_sendByte(*(p+n));
}
//写fifo,port为子串口的路数,num是读取的数据的个数,p是将要写入数据的首地址
//****************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -