📄 16c752.c
字号:
#include "16c752.h"
void init_16c752()
{
//------------------------------752A的设置-------------------------------------//
//752A用于发送速度数据
* LCR_752A = 0x80;
//1000.0000
//LCR.7=1时为设置波特率(DLL/DLM) LCR.7=0时为设置通用寄存器,
* DLL_752A = 0x82;//82=9600,0b=115200,01=1.25M
* DLM_752A = 0x00;
//DLL中放置分频数的低八位;DLH存放高八位。
* LCR_752A = 0x00; //LCR.7=1时为设置波特率(DLL/DLM) LCR.7=0时为设置通用寄存器,
* LCR_752A = 0x0B;
//0000.1011
//发送的数据是八位;
* FCR_752A = 0x01;
//0000.0001
//Enable the transmit FIFOS;
*MCR_752A = 0x08; //强制中断端为高
*IER_752A = 0x01; //接收有效数据时,产生中断。
//---------------------------------752B的设置-------------------------------------//
//75B用于发送原始数据
* LCR_752B = 0x80; //LCR.7=1时为设置波特率(DLL/DLM) LCR.7=0时为设置通用寄存器,
* DLL_752B = 0x01; //82=9600,16=57600,0b=115200,01=1.25Mbps
* DLM_752B = 0x00;
* LCR_752B = 0x00; //LCR.7=1时为设置波特率(DLL/DLM) LCR.7=0时为设置通用寄存器,
* LCR_752B = 0x03;
* FCR_752B = 0x01;
//--------------------设置752的发送缓冲区为空时产生中断-------------------------//
//若发送缓冲区为空,INT脚为高电平;若发送缓冲区不为空,INT脚为低电平.
* MCR_752B = 0x08; //强制中断端为高
* IER_752B = 0X02; //发送缓冲区为空时,产生中断。
}
void send_16c752A(unsigned char data)//THR_752A表示transmit holding register;
{
* THR_752A=data;
}
void send_16c752B(unsigned char data)
{
* THR_752B=data;
}
unsigned char receivd_16c752A()
{
return * THR_752A;
}
unsigned char receivd_16c752B()
{
return * THR_752B;
}
unsigned char check_16c752B()//check 函数的作用是:检查LSR寄存器的第一位是否为1。该位为1说明rxFIFO中有数据。
{
int ck;
ck=* LSR_752B;
if((ck&1)==01)
return 0x55;
else
return 0;
}
unsigned char check_16c752A()
{
int ck;
ck=* LSR_752A;
if((ck&1)==01)
return 0x55;
else
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -