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

📄 keyadc.c

📁 单片机汇编例程学习,大量的汇编例程
💻 C
字号:
#include <Intrins.h>#include <At89x51.h>#define KEY_PORT P1#define KEY1 0x81 //10000001b#define KEY2 0x41 //01000001b#define KEY3 0x21 //00100001b#define KEY4 0x11 //00010001b#define KEY5 0x82 //10000010b#define KEY6 0x42 //01000010b#define KEY7 0x22 //00100010b#define KEY8 0x12 //00010010b#define KEY9 0x84 //10000100b#define KEY10 0x44 //01000100b#define KEY11 0x24 //00100100b#define KEY12 0x14 //00010100b#define KEY13 0x88 //10001000b#define KEY14 0x48 //01001000b#define KEY15 0x28 //00101000b#define KEY16 0x18 //00011000b#define AD_CS P3_6#define AD_WR P3_2#define AD_RD P3_7#define AD_INPUT_PORT P1#define LOW 0#define HIGH 1unsigned char key_code_temp;unsigned char code digital_led[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x0f8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};unsigned char Key_Scan(void);void Delay_ms(unsigned char second);void extint(void);void Adc_Start(void);unsigned char Adc_Read(void);void Adc_Demo(void);void main(void){ EA=1; IT1=1;//ext1 edge trigger EX1=1; 	//enable int1while(1) {	key_code_temp=Key_Scan();	Delay_ms(30);	if(key_code_temp==Key_Scan())	{	while(Key_Scan());	switch(key_code_temp)		{	 case KEY1:{P0=0;P2_0=P2_1=P2_2=P2_3=0;} break;	 case KEY2:{P2_0=P2_1=P2_2=P2_3=1;} break; 	 case KEY3:{P3_3=1;EX1=1;} break;	 case KEY4:Adc_Demo(); break;	 case KEY5:P0_4=0; break;	 case KEY6:P0_5=0; break;	 case KEY7:P0_6=0; break;	 case KEY8:P0_7=0; break;	 case KEY9:P2_0=0; break;	 case KEY10:P2_1=0; break;	 case KEY11:P2_2=0; break;	 case KEY12:P2_3=0; break;	 case KEY13:P2_4=0; break;	 case KEY14:{P2_5=0; P2_6=0;P2_7=0;}break;	 case KEY15:P2=P3;break;	 case KEY16:P2=0xff;break;		default:break;	}	key_code_temp=0;	}  }}unsigned char Key_Scan(void){unsigned char key_temp=0,i,j;unsigned char scan_code_row=0x01,scan_code_colum=0x80;	for(i=0;i<4;i++)		{			KEY_PORT=scan_code_row;			if(KEY_PORT==0)			{	      for(j=0;j<4;j++)				{				KEY_PORT=scan_code_colum;				if(KEY_PORT==0&&key_temp!=0)				{KEY_PORT=0xff;	return key_temp=0;}				else				if(KEY_PORT==0)				key_temp=scan_code_row|scan_code_colum;			  scan_code_colum>>=1;				}			}			scan_code_row<<=1;		}KEY_PORT=0xff;return key_temp;}void Delay_ms(unsigned char second){ unsigned char i,j; for(j=0;j<second;j++)   for (i=0;i<124;i++)   _nop_();}void Adc_Start(void){	AD_CS=LOW;	_nop_();	AD_WR=LOW;	_nop_();	AD_WR=HIGH;	_nop_();	AD_CS=HIGH;}unsigned char Adc_Read(void){unsigned char i;	AD_INPUT_PORT=0xff;	AD_CS=LOW;	_nop_();	AD_RD=LOW;	_nop_();	Delay_ms(1);	i=AD_INPUT_PORT;	_nop_();	_nop_();	AD_RD=HIGH;	_nop_();	AD_CS=HIGH;	return i;}void Adc_Demo(void){//unsigned char t1,t2;//	AD_INPUT_PORT=0xf0;	Adc_Start();//	while(P3_3);	Delay_ms(1);	P0=Adc_Read();	P2_0=0;       	P2_1=0;	P2_2=0;	P2_3=0;}void extint(void) interrupt 2{	EX1=0;	P0=digital_led[5];	P2_0=~P2_0;       	P2_1=~P2_1;	P2_2=~P2_2;	P2_3=~P2_3;//	EA=1;}

⌨️ 快捷键说明

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