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

📄 mcu51_set.c

📁 通过89s51实现的模拟键盘代码
💻 C
字号:
/*----------------------------------------------------------
系统时钟取11.059M
串口初始时取9600
键盘按四种波特分别发修改波特的命令,总有一个是相符合的波特,
键盘的波特可以用软件来实现也可由硬件来实现波特预置
球机开机时访问内部的IIC存储器取波特数,本程序现在还未编IIC部分
利用上电机的RAM为零可以来启动电机的转动方向,看门狗复位时各变量保持
不变因些作记忆功能
各口作初始设置要考虑能耗和外部的输出是否有影响
----------------------------------------------------------*/


#include <general.h>
void  GlobalSet()
{
 AUXR   = 1;               //全增益和外部存储器输出关闭
}
 void WDT_cls(void)
{
	WDT_CONTR=0xff;   //0xff;		启动看门狗看门狗清零
}
void INT_set(void)
{
	EX0=0,EX1=0,EX2=0,EX3=0;    //中断四个外部全关闭

	ET0=0,ET1=0;ES=1;				//三个定时器全关闭,串口开,全局后开
	IPH=0;IP=0;         	    //中断优先全为0级,只有串口开
    XICON=0;                    //外部中断23关并且优先级也为0
}
void  INT_enable(void)
{
	EA=1;						//全局开
}
void INT_disable(void)
{
	EA=0;						//全局关
}
void timer_set(void)
{

/*---------------------------
 T2CON可以通过TCLK RCLK两位分别设置接收和发送的波特率,为1采用定时器2的波特率,0则是定时器1的波选择率
其中T2可用于时钟外部输出,本程序并不用惯功能,只是在此作一个说明
TCON用于控制启动及标字位
-------------------------------*/
	TCON=0;
    TMOD=0x20;					//定时器1工作于方式自动重装8位
	T2CON=0x20;					//定时器于波特率方式TCLK=0,RCLK=1
                                 //定时器工作于接收用2发送用1的溢出率来表示
	                            //全都工作于内部计数C/T_=0
}
void SCI_set(void)
{
	SCON=0x50;					//定义串口工作方式
      
                               //串口SM0SM1=1工作于8位可变方式,SM2=0多机使能位,REN=1
    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 SciTxdBaudSet()
{
   //晶振采用11.0592MHz 波特为19200
   TH1=-3;               //重装值
   TL1=0;


}

void baud_19200(void)
{
	int x;

	x=-18;
	RCAP2L=(unsigned char)x;
	RCAP2H=(unsigned char)(x>>8);

}
void baud_9600(void)
{
	int x;

							//为默认的最初方式,baudrate=f/32/T2溢出率
	x=-36;						//晶振取11.059M
	RCAP2L=(unsigned char)x;
	RCAP2H=(unsigned char)(x>>8);
	
}


void baud_4800(void)
{
	int x;

	x=-72;
	RCAP2L=(unsigned char)x;
	RCAP2H=(unsigned char)(x>>8);

}
void baud_2400(void)
{
	int x;

	x=-144;
	RCAP2L=(unsigned char)x;
	RCAP2H=(unsigned char)(x>>8);

}


void T1_start(void)
{
	TR1=1;					
	
}
void T1_stop(void)
{
	TR1=0;
			 //计数关   
}
void T2_start(void)
{
	TR2=1;
}
void T2_stop(void)
{
	TR2=0;
}

⌨️ 快捷键说明

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