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

📄 altayso.c

📁 AT89S52 单片机的开发源码范例
💻 C
字号:
#include "Driver_CD4052_V3.0.h"

/**********************************
	STDIO Function
**********************************/


/**********************************
	BASIC Function
**********************************/
/* 1.0ms */
void delay (unsigned int ms)
{
	unsigned int i;
	for(; ms>0; ms--)
	{
		for(i=0; i<114; i++);
	}
}
void Delay()
{
	delay(30);
}

void InitHW()
{
	//void InitIO()
	P0 	= 0xff;
	P1 	= 0xff;
	P2 	= 0xff;
	P3	= 0xff;
	//void InitInterrupt()
	TCON	= 0x00;	/* Default */
	IE		= 0x90;	/* EA=1--总中断允许;ES(IE.4)=1--串口中断开放;ES=0--串口中断关闭;EX0=0--中断INT0关闭 */
	IP		= 0x00;	/* Default */
	PCON	= 0x00;	/* Default */
	//void InitRS()
	SCON	= 0x50;	/* SM1=1,REN=1-->mode=1,receive enabled */
	TMOD	= 0x20;	/* Timer1.m1=1-->Timer1.mode=2 */
	TH1		= 0xFD;	/* Baud Rate = 9600bps */
	ES		= 1;	/* ES=1; Enable Serial */
	TR1		= 1;	/* Start Timer1 */
	//TI	= 1;	/* Ready to send */
	//RI	= 1;	/* Ready to receive */
}

void EntryItem(unsigned char c)
{
	//重新进入工程模式 (B *#360#)
	Press_B;
	delay(100);
	Press_NONE;
	Press_E;Press_NONE;
	delay(100);
	Press_STAR;Press_NONE;
	Press_SHARP;Press_NONE;
	Press_3;Press_NONE;
	Press_6;Press_NONE;
	Press_0;Press_NONE;
	Press_SHARP;Press_NONE;
	//选择进入测试项目 (D A)
	while (c>0) {
		Press_D;Press_NONE;
		c--;
	}
	Press_A;Press_NONE;
}

/**********************************
	TEST Function
**********************************/
char Test_Keypad()
{
	P2=P2&0xC0|0x3E;P0=P0&0xFC|0x00;delay(5);Press_NONE;
	P2=P2&0xC0|0x3E;P0=P0&0xFC|0x01;delay(5);Press_NONE;
	P2=P2&0xC0|0x3E;P0=P0&0xFC|0x02;delay(5);Press_NONE;
	P2=P2&0xC0|0x3E;P0=P0&0xFC|0x03;delay(5);Press_NONE;

	P2=P2&0xC0|0x3D;P0=P0&0xF3|0x00;delay(5);Press_NONE;
	P2=P2&0xC0|0x3D;P0=P0&0xF3|0x04;delay(5);Press_NONE;
	P2=P2&0xC0|0x3D;P0=P0&0xF3|0x08;delay(5);Press_NONE;
	P2=P2&0xC0|0x3D;P0=P0&0xF3|0x0C;delay(5);Press_NONE;

	P2=P2&0xC0|0x3B;P0=P0&0xCF|0x00;delay(5);Press_NONE;
	P2=P2&0xC0|0x3B;P0=P0&0xCF|0x10;delay(5);Press_NONE;
	P2=P2&0xC0|0x3B;P0=P0&0xCF|0x20;delay(5);Press_NONE;
	P2=P2&0xC0|0x3B;P0=P0&0xCF|0x30;delay(5);Press_NONE;

	P2=P2&0xC0|0x37;P0=P0&0x3F|0x00;delay(5);Press_NONE;
	P2=P2&0xC0|0x37;P0=P0&0x3F|0x40;delay(5);Press_NONE;
	P2=P2&0xC0|0x37;P0=P0&0x3F|0x80;delay(5);Press_NONE;
	P2=P2&0xC0|0x37;P0=P0&0x3F|0xC0;delay(5);Press_NONE;

	P2=P2&0xC0|0x2F;P3=P3&0xCF|0x00;delay(5);Press_NONE;
	P2=P2&0xC0|0x2F;P3=P3&0xCF|0x10;delay(5);Press_NONE;
	P2=P2&0xC0|0x2F;P3=P3&0xCF|0x20;delay(5);Press_NONE;

	P2=P2&0xC0|0x1F;P3=P3&0x3F|0x00;delay(5);Press_NONE;
	P2=P2&0xC0|0x1F;P3=P3&0x3F|0x40;delay(5);Press_NONE;
	P2=P2&0xC0|0x1F;P3=P3&0x3F|0x80;delay(5);Press_NONE;
	P2=P2&0xC0|0x1F;P3=P3&0x3F|0xC0;delay(5);Press_NONE;
	return 1;
}
/**********************************
	BASIC Variable
**********************************/
unsigned char RXC;

/**********************************
	MAIN Function
**********************************/
void main(void)
{
	InitHW();
	while(1)
	{
		;
	}
}

/**********************************
	Serial Interrupt Function
**********************************/
void serial() interrupt 4
{
	if(RI	==1)
	{
		RI	= 0;	
		RXC	= SBUF;
		switch(RXC)
		{
			/* Recieve Test Result From 61(0x0F): 1111 1111 */
			case Init51HW:
				InitHW();
				break;
			case Key_trace:
				Test_Keypad();
				break;

			/* Time Out (0~7.5s) Commands From 61(0x10 - 0x1F):0001 0000 ~ 0001 1111 */
		    case Semi_0:
				ioTimeOut	= 0;
				delay(0);
				ioTimeOut	= 1;
				break;
		    case Semi_1:
				ioTimeOut	= 0;
				delay(500);
				ioTimeOut	= 1;
				break;
		    case Semi_2:
				ioTimeOut	= 0;
				delay(1000);
				ioTimeOut	= 1;
				break;
		    case Semi_3:
				ioTimeOut	= 0;
				delay(1500);
				ioTimeOut	= 1;
				break;
		    case Semi_4:
				ioTimeOut	= 0;
				delay(2000);
				ioTimeOut	= 1;
				break;
		    case Semi_5:
				ioTimeOut	= 0;
				delay(2500);
				ioTimeOut	= 1;
				break;
		    case Semi_6:
				ioTimeOut	= 0;
				delay(3000);
				ioTimeOut	= 1;
				break;
		    case Semi_7:
				ioTimeOut	= 0;
				delay(3500);
				ioTimeOut	= 1;
				break;
		    case Semi_8:
				ioTimeOut	= 0;
				delay(4000);
				ioTimeOut	= 1;
				break;
		    case Semi_9:
				ioTimeOut	= 0;
				delay(4500);
				ioTimeOut	= 1;
				break;
		    case Semi_10:
				ioTimeOut	= 0;
				delay(5000);
				ioTimeOut	= 1;
				break;
		    case Semi_11:
				ioTimeOut	= 0;
				delay(5500);
				ioTimeOut	= 1;
				break;
		    case Semi_12:
				ioTimeOut	= 0;
				delay(6000);
				ioTimeOut	= 1;
				break;
		    case Semi_13:
				ioTimeOut	= 0;
				delay(6500);
				ioTimeOut	= 1;
				break;
		    case Semi_14:
				ioTimeOut	= 0;
				delay(7000);
				ioTimeOut	= 1;
				break;
		    case Semi_15:
				ioTimeOut	= 0;
				delay(7500);
				ioTimeOut	= 1;
				break;
				

			/* Keys_Code(0x20-0x5F): 0010 0000 ~ 0101 1111 */
			case Key_NONE:
				Press_NONE;
				break;
			case Key_PowerSUB:
				Press_E;
				break;
			case Key_PowerADD:
				Press_E;delay(4500);Press_NONE;
				break;

			case Key_E:
				Press_E;Press_NONE;
				break;
			case Key_A:
				Press_A;Press_NONE;
				break;
			case Key_B:
				Press_B;Press_NONE;
				break;
			case Key_STAR:
				Press_STAR;Press_NONE;
				break;
			case Key_SHARP:
				Press_SHARP;Press_NONE;
				break;
			case Key_3:
				Press_3;Press_NONE;
				break;
			case Key_6:
				Press_6;Press_NONE;
				break;
			case Key_0:
				Press_0;Press_NONE;
				break;
			case Key_U:
				Press_U;Press_NONE;
				break;
			case Key_D:
				Press_D;Press_NONE;
				break;
			case Key_L:
				Press_L;Press_NONE;
				break;
			case Key_R:
				Press_R;Press_NONE;
				break;
			case Key_O:
				Press_K;Press_NONE;
				break;
			case Key_F:
				Press_F;Press_NONE;
				break;
			case Key_G:
				Press_G;Press_NONE;
				break;
			case Key_S:
				Press_S;Press_NONE;
				break;
			case Key_1:
				Press_1;Press_NONE;
				break;
			case Key_2:
				Press_2;Press_NONE;
				break;
			case Key_4:
				Press_4;Press_NONE;
				break;
			case Key_5:
				Press_5;Press_NONE;
				break;
			case Key_7:
				Press_7;Press_NONE;
				break;
			case Key_8:
				Press_8;Press_NONE;
				break;
			case Key_9:
				Press_9;Press_NONE;
				break;

			/* Entry_Item(0x60-0x7F): 0110 0000 ~ 0111 1111 */
			case Entry_Mode:
				Press_B;delay(100);Press_NONE;
				Press_E;Press_NONE;delay(100);
				Press_STAR;Press_NONE;
				Press_SHARP;Press_NONE;
				Press_3;Press_NONE;
				Press_6;Press_NONE;
				Press_0;Press_NONE;
				Press_SHARP;Press_NONE;
				break;
			case Entry_Auto:
				EntryItem(Item_Auto);
				break;
			case Entry_Fireware:
				EntryItem(Item_Fireware);
				break;
			case Entry_LCD:
				EntryItem(Item_LCD);
				break;
			case Entry_Vibrator:
				EntryItem(Item_Vibrator);
				break;
			case Entry_Speaker:
				EntryItem(Item_Speaker);
				break;
			case Entry_Keypad:
				EntryItem(Item_Keypad);
				break;
			case Entry_AudioPath:
				EntryItem(Item_AudioPath);
				break;
			case Entry_MP3:
				EntryItem(Item_MP3);
				break;
			case Entry_StereoSound:
				EntryItem(Item_StereoSound);
				break;
			case Entry_HPAudioPath:
				EntryItem(Item_HPAudioPath);
				break;
			case Entry_TFlashCard:
				EntryItem(Item_TFlashCard);
				break;
			case Entry_ClearUserInfo:
				EntryItem(Item_ClearUserInfo);
				break;
			case Entry_ESN:
				EntryItem(Item_ESN);
				break;
			case Entry_TestInfo:
				EntryItem(Item_TestInfo);
				break;
			case Entry_Battery:
				EntryItem(Item_Battery);
				break;
			case Entry_Recorder:
				EntryItem(Item_Recorder);
				break;
			case Entry_Radiogram:
				EntryItem(Item_Radiogram);
				break;
			case Entry_Default:
				EntryItem(Item_Default);
				break;

			/* Nothing to do */
			default:
				break;
		}
	}
}

/**********************************
	ExtInt0 Function
**********************************/
/*void int0() interrupt 0
{
	EX0	= 0;
	EX0	= 1;
}*/

⌨️ 快捷键说明

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