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

📄 keyboard.c

📁 很有用的CYGNAL C语言程序,
💻 C
字号:
#include<c8051f020.h>
void Delay1us(unsigned long int);
void delay(long int);
void senddata(unsigned char,unsigned char);
void setoff(unsigned char);
void tests(void);

sbit 		b1=P1^1;
sbit 		b2=P1^2;
sbit 		b3=P1^3;
sbit 		b4=P1^4;
unsigned char i=0,a[3]={0,0,0},n=1,n1=0,result=0,f=0;
unsigned int x[3]={0,0,0};
void T1_int(void) interrupt 3
{
//	ET1		= 0;
	TMOD   |= 0x50;
	TH1  	= 0xFF;
	TL1  	= 0xFF;
	while(!TF1)
	{
		if(n>0)
		{
			senddata((i+1),15);
			Delay1us(100000);
			senddata((i+1),a[i]);
			Delay1us(100000);
			n--;
		}
		while(!b3)
		{
			a[i]++;
			if(a[i]>9)
				a[i]=0;
			senddata((i+1),a[i]);
			Delay1us(100000);
		}
		while(!b4)
		{
			if(a[i]>0)
			{
				a[i]--;
				senddata((i+1),a[i]);
				Delay1us(100000);
			}
			else
			{
				senddata((i+1),0);
				Delay1us(100000);
			}
		}
		while(!b2)
		{
			i++;
			if(i>2)
				i=0;
		senddata((i+1),15);
		Delay1us(100000);
		senddata((i+1),a[i]);
		Delay1us(100000);
		
		}
	}
	a[1]	=a[1]*10;
	a[2]	=a[2]*100;
	result	=a[0]+a[1]+a[2];
	f		= 0;
	TF1		=0;
}
/*****************************系统时钟初始化*******************************/
void sys_clk(void)				
{
	unsigned char e;
	WDTCN	= 0xde;			    //关 看 门 狗
	WDTCN 	= 0xad;
	OSCXCN	= 0x67;				//使用外部晶振
	delay(10000);
    delay(10000);
	e=!OSCXCN&0x80;
	while(e); 
    OSCICN|=0x08;
}
/****************************交叉开关初始化*********************************/
void xbr_set()
{
	XBR2    = 0x40;
	XBR1    = 0x0C;
	XBR0	= 0xAC;
	P0MDOUT = 0xFC;
	P1MDOUT = 0xFF;
}
/********************************设     置**********************************/
void T1_key_set(void)
{
	EA		= 1;
	ET1		= 1;
	TMOD 	= 0x50;
	TH1  	= 0xFF;
	TL1  	= 0xFF;
	TR1		= 1;
	n		= 1;
	f		= 1;
}
void test(void)
{
	result	= 0;
	senddata(1,0);
	senddata(2,0);
	senddata(3,0);
}
void screen(unsigned int r)
{
	senddata(1,r%10);
	senddata(2,r%100/10);
	senddata(3,r/100);	
}
/********************************主 函 数***********************************/
main()
{
	sys_clk();
	xbr_set();
	setoff(2);
//	while(n1<3)
//	{
	test();
	T1_key_set();
	x[n1]	=result;
	while(f);
//	}
	Delay1us(10000000);
	screen(x[0]+1);
/*	Delay1us(1000000);
	screen(x[1]);
	Delay1us(1000000);
	screen(x[2]);*/
	while(1);
}

⌨️ 快捷键说明

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