📄 mcu51_set.c
字号:
/*----------------------------------------------------------
系统时钟取11.059M
串口在初始时取9600发送,延时操作和下一级协调,然后按相机的的要求
设置
----------------------------------------------------------*/
#include <general.h>
void GlobalSet()
{
AUXR = 1; //全增益和外部存储器输出关闭
P1=P2=P3=P4=0xff;
}
void IntSet()
{
EX0=0,EX1=0,EX2=0,EX3=0; //中断四个外部全关闭
ET0=1,ET1=0;ET2=0;ES=1; //定时器0暂时先关闭,以后有日历后开启
IPH=0;IP=0x10; //串口为1定时器0为0级
XICON=0; //不允许外部23中断
}
void IntEnable(void)
{
EA=1; //全局开
}
void IntDisable(void)
{
EA=0; //全局关
}
void TimerSet(void)
{
TCON=0;
TMOD=0x21; //定时器0工作于16位定时器定时器1工作于8位重装
T2CON=0x20; //定时器于波特率方式TCLK=0,RCLK=1
//定时器工作于接收用2发送用1的溢出率来表示
//全都工作于内部计数C/T_=0
}
void SciSet(void)
{
SCON=0x50; //定义串口工作方式
PCON=0x80; //定时器1溢出/2,=0x80则直接采用溢出率
}
/*------------------------------------------------------
串行口计算公式如下;
RCLK=1接收采用定时器2 Baud=Frequence/2/(65536-T2)/16
TCLK=0发送采用定时器1 Baud=Frequence/12/(256-TH1)/16
定时器1溢出=Frequence/12/(256-TH1)
--------------------------------------------------------*/
void TxdBaud19200()
{
TH1=-3; //重装值
TL1=TH1;
}
void TxdBaud9600()
{
TH1=-6; //重装值
TL1=TH1;
}
void TxdBaud4800()
{
TH1=-12; //重装值
TL1=TH1;
}
void TxdBaud2400()
{
TH1=-24; //重装值
TL1=TH1;
}
void RxdBaud19200(void)
{
int x;
x=-18;
RCAP2L=(unsigned char)x;
RCAP2H=(unsigned char)(x>>8);
}
void RxdBaud9600(void)
{
int x;
//为默认的最初方式,baudrate=f/32/T2溢出率
x=-36; //晶振取11.059M
RCAP2L=(unsigned char)x;
RCAP2H=(unsigned char)(x>>8);
}
void RxdBaud4800(void)
{
int x;
x=-72;
RCAP2L=(unsigned char)x;
RCAP2H=(unsigned char)(x>>8);
}
void RxdBaud2400(void)
{
int x;
x=-144;
RCAP2L=(unsigned char)x;
RCAP2H=(unsigned char)(x>>8);
}
void T0Start(void)
{
TR0=1;
}
void T0Stop(void)
{
TR0=0;
//计数关
}
void T1Start(void)
{
TR1=1;
}
void T1Stop(void)
{
TR1=0;
//计数关
}
void T2Start(void)
{
TR2=1;
}
void T2Stop(void)
{
TR2=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -