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

📄 key.c

📁 18b20的c程序+串口通讯+595显示温度
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <iccard.h>
#define nop _nop_()
bit key_flag;
uchar key_value;
void wt_dog()
{
	x5045_cs=1;
	nop;nop;nop;
	x5045_cs=0;
	nop;nop;nop;
	x5045_cs=1;
}
void delay(uint16 x)
{
	uint16 i,k;
	for(i=x;i>0;i--)
	{
			for(k=5000;k>0;k--);
			wt_dog();
	}
}
void delayns()
{
	uchar i;
	for(i=0;i<10;i++);
}
void init_7289()
{
	IT1=0;//设置为电平出发
	EA=1;
	EX1=1;
	key_cs=1;
	key_flag=0;
	key_value=0xaa;
}
void send_key(uchar cmd)
{
	uchar i,k;
	k=cmd;
	for(i=8;i>0;i--)
	{	
		
		key_clk=0;
		delayns();
		if(k&0x80)key_dat=1;
		else key_dat=0;
		key_clk=1;
		delayns();
		key_clk=0;
		delayns();
		k<<=1;
	}
}
void sendcmd_key(uchar cmd)
{
	key_cs=0;
	send_key(cmd);
	key_cs=1;
}
void senddat_key(uchar cmd,uchar dat)
{
	key_cs=0;
	send_key(cmd);
	delayns();
	send_key(dat);
	key_cs=1;
}
uchar getkey_key()//
{
	uchar j,key;
	key=0;
	key_cs=0;
	send_key(getkey_7289);
	key_dat=1;
	for(j=8;j>0;j--)
	{
		
		key_clk=0;
		delayns();
		
		key_clk=1;
		delayns();
		if(key_dat)key=key*2+1;
		else key=key*2;
		key_clk=0;
		delayns();

		
	}
	
	key_cs=1;
	return(key);
}

void disp_key(uchar x)
{
	uchar i;
	i=x;
	sendcmd_key(reset_7289);
	senddat_key(disp1_7289|7,i&0x0f);
	i>>=4;
	senddat_key(disp1_7289|6,i&0x0f);
}

void key_disp(uint32 dat)
{
	uchar i;
	uint32 k;
	k=dat;
	i=(uchar)k;
	sendcmd_key(reset_7289);
	senddat_key(disp1_7289|7,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|6,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|5,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|4,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|3,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|2,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|1,i&0x0f);
	k>>=4;
	i=(uchar)k;
	senddat_key(disp1_7289|0,i&0x0f);

}

void Getkey_IRQ() interrupt 2
{
	EX1=0;
	if(key_flag==0)
	{
		key_value=getkey_key();
		key_flag=1;
	}
	while(INT1==0);
	EX1=1;
}

void key_main (void)
{	
	delay(5);
	init_7289();
	sendcmd_key(reset_7289);
	sendcmd_key(test_7289);
	delay(20);
	delay(20);
	sendcmd_key(reset_7289);
	senddat_key(disp1_7289|0,0x00);
	senddat_key(disp1_7289|1,0x01);
	senddat_key(disp1_7289|2,0x02);
	senddat_key(disp1_7289|3,0x03);
	senddat_key(disp1_7289|4,0x04);
	senddat_key(disp1_7289|5,0x05);
	senddat_key(disp1_7289|6,0x06);
	senddat_key(disp1_7289|7,0x07);
	delay(20);
	delay(20);
	delay(20);
	delay(20);
	sendcmd_key(reset_7289);
	while(1)
	{

		if(key_flag==1)
		{
			key_flag=0;
			disp_key(key_value);
			delay(20);
		}
		wt_dog();
	}
}

⌨️ 快捷键说明

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