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

📄 subtask.c

📁 电梯的51单片机控制资料(电路图+工程代码)
💻 C
字号:

#include "reg51.h"
#include "Head.h"

/************************************************************/
sbit g_ledClk = P1^0;
sbit g_ledDat = P1^1;
#define d_SetClk() g_ledClk=1
#define d_ClrClk() g_ledClk=0
#define d_SetDat() g_ledDat=1
#define d_ClrDat() g_ledDat=0

code unsigned char LED_TAB[]={
0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x1a,0x7a,0x9e,0x8e,	//0-f 不带小数点,码为0x00-0x0f
0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,0xef,0x3f,0x1b,0x7b,0x9f,0x8f,	//0-f 带小数点,码为0x10-0x1f
0x00};//不显,码为0x20

void LedSendByte(unsigned char ch)
{
	unsigned char i;
	ch=LED_TAB[ch];
	for(i=0;i<8;i++)
	{
		if(ch & 0x01)
			d_SetDat();
	 	else
			d_ClrDat();
		d_ClrClk();
		d_SetClk();
		ch >>=1;
   }
}
/************************************************************/
char xdata PortAL _at_  0x2000;
char xdata PortAR _at_  0xe000;
char xdata PortBL _at_  0x8000;
char xdata PortBR _at_  0xb000;

sbit PortCL = P2^3;
sbit PortCR = P2^2;
sbit PortDL = P2^1;
sbit PortDR = P2^0;

char ReadAL(void)
{
	return PortAL;
}

char ReadAR(void)
{
	return PortAR;
}

char ReadBL(void)
{
	return PortBL;
}

char ReadBR(void)
{
	return PortBR;
}

void WriteCL(char ch)
{
	PortCL = 1;
	P0 = ch;
	PortCL = 0;
	P0 = 0xff;
}

void WriteCR(char ch)
{
	PortCR = 1;
	P0 = ch;
	PortCR = 0;
	P0 = 0xff;
}

void WriteDL(char ch)
{
	PortDL = 1;
	P0 = ch;
	PortDL = 0;
	P0 = 0xff;
}

void WriteDR(char ch)
{
	PortDR = 1;
	P0 = ch;
	PortDR = 0;
	P0 = 0xff;
}
/************************************************************/
char g_portCL = 0;
char g_portCR = 0;
char g_portDL = 0;
char g_portDR = 0;
/************************************************************/
void InitSystem(void)
{
	g_portCL = 0;
	g_portCR = 0;
	g_portDL = 0;
	g_portDR = 0;
	WriteCL(g_portCL);
	WriteCR(g_portCR);
	WriteDL(g_portDL);
	WriteDR(g_portDR);
}

void Door(char num)
{
	g_portCL &= ~L_OPEN;
	g_portCR &= ~R_CLOSE;
	g_portCL |= L_DOORSPEED;
	switch(num)
	{
	case 1:
		g_portCL |= L_OPEN;
		break;
	case 2:
		g_portCR |= R_CLOSE;
		break;
	}
	WriteCL(g_portCL);
	WriteCR(g_portCR);
}

void Box(char num)
{
	g_portCL &= ~L_DOWN;
	g_portCR &= ~R_UP;
	g_portCR |= R_BOXSPEED;
	switch(num)
	{
	case 1:
		g_portCR |= R_UP;
		break;
	case 2:
		g_portCL |= L_DOWN;
		break;
	}
	WriteCL(g_portCL);
	WriteCR(g_portCR);
}


void LED_UpDown(char upDown)//0为不显示
{
	g_portDL &= ~L_RUNUP;
	g_portDR &= ~R_RUNDOWN;
	switch(upDown)
	{
	case 1:
		g_portDL |= L_RUNUP;		
		break;
	case 2:
		g_portDR |= R_RUNDOWN;
		break;
	}
	WriteDL(g_portDL);
	WriteDR(g_portDR);
}

void LED_floor(char floor)//0为不显示
{
	g_portDL &= ~L_1FLOOR;
	g_portDR &= ~R_2FLOOR;
	g_portDL &= ~L_3FLOOR;
	g_portDR &= ~R_4FLOOR;
	switch(floor)
	{
	case 1:
		g_portDL |= L_1FLOOR;		
		break;
	case 2:
		g_portDR |= R_2FLOOR;
		break;
	case 3:
		g_portDL |= L_3FLOOR;
		break;
	case 4:
		g_portDR |= R_4FLOOR;
		break;
	}
	WriteDL(g_portDL);
	WriteDR(g_portDR);	
}


⌨️ 快捷键说明

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