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

📄 key.c

📁 51单片机驱动320*234彩显的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
							{
								lcdcb.msg_num--;
								if(lcdcb.msg_num%3==2)
									lcdcb.event_notice=SCR_EVENT_PRE_PAGE;
								else
									lcdcb.event_notice=SCR_EVENT_PRE_MSG;
							}
						}
						goto KEYEND;
					}
					
					else if(keycb.keyon_flag&KEY_DOWN_ON)
					{
						keycb.keyon_flag&=~KEY_DOWN_ON;
						if(lcdcb.event_notice==SCR_EVENT_DISPLAY_FINISHED)
						{
							if()
							if(lcdcb.msg_num==flashcb.msg_sum-1)
								lcdcb.msg_num=0;
							else
								lcdcb.msg_num++;
							if(lcdcb.msg_num%3==0)
								lcdcb.event_notice=SCR_EVENT_NEXT_PAGE;
							else 
								lcdcb.event_notice=SCR_EVENT_NEXT_MSG;
						}
						goto KEYEND;
					}

					else if(keycb.keyon_flag & KEY_CANCEL_ON)
					{
						keycb.keyon_flag&=~KEY_CANCEL_ON;
						keycb.exit_curr_level=1;
						lcdcb.msg_num=0;
						lcdcb.event_notice=SCR_EVENT_MAIN_MENU;
						goto KEYEND;
					}

					else if(keycb.keyon_flag & KEY_CONFIRM_ON)
					{
						keycb.keyon_flag &= ~KEY_CONFIRM_ON;
						keycb.enter_next_level=1;
						flashcb.event_notice=FLASH_EV_READ_ONE_RECODE;
						goto KEYEND;
					}
				break;
											
				//set ip
				case 3:
					if(keycb.keyon_flag&KEY_DOWN_ON)
					{	
						keycb.keyon_flag&=~KEY_DOWN_ON;
						if(lcdcb.event_notice==SCR_EVENT_DISPLAY_FINISHED)
						{
							keycb.count++;
							if(keycb.count==10)
								keycb.count=0;
							lcdcb.event_notice=SCR_EVENT_COUNT_DOWN;
						}
						goto KEYEND;
					}
					
					else if(keycb.keyon_flag&KEY_UP_ON)
					{
						keycb.keyon_flag&=~KEY_UP_ON;
						if(lcdcb.event_notice==SCR_EVENT_DISPLAY_FINISHED)
						{
							if(keycb.count==0)
								keycb.count=9;
							else
								keycb.count--;
							lcdcb.event_notice=SCR_EVENT_COUNT_UP;
						}
						goto KEYEND;
					}
					
					else if(keycb.keyon_flag & KEY_CANCEL_ON)
					{
						keycb.keyon_flag&=~KEY_CANCEL_ON;
						if(keycb.input_num>0)
						{
							keycb.input_num--;
							flashcb.datacenter_ip[keycb.input_num]=' ';
							lcdcb.event_notice=SCR_EVENT_DISP_IP;
						}
						else	
						{
							keycb.exit_curr_level=1;
							keycb.count=0;
							lcdcb.event_notice=SCR_EVENT_MAIN_MENU;
						}
						goto KEYEND;
					}
									
					else if(keycb.keyon_flag & KEY_CONFIRM_ON)
					{
						keycb.keyon_flag &= ~KEY_CONFIRM_ON;
						if(keycb.input_num<DATACENTER_IP_LEN)
						{
							flashcb.datacenter_ip[keycb.input_num++]=keycb.count+0x30;
							lcdcb.event_notice=SCR_EVENT_DISP_IP;
						}							
						else 
						{
							keycb.count=0;
							keycb.input_num = 0;
							keycb.exit_curr_level=1;
							keycb.event_notice = KEY_EVENT_SET_IP;
							lcdcb.delay_disp_on=1;
							lcdcb.event_notice = SCR_EVENT_SET_OK;
						}
						goto KEYEND;
					}
				break;
				//set port
				case 4:
					if(keycb.keyon_flag&KEY_DOWN_ON)
					{	
						keycb.keyon_flag&=~KEY_DOWN_ON;
						if(lcdcb.event_notice==SCR_EVENT_DISPLAY_FINISHED)
						{
							keycb.count++;
							if(keycb.count==10)
								keycb.count=0;
							lcdcb.event_notice=SCR_EVENT_COUNT_DOWN;
						}
						goto KEYEND;
					}
					
					else if(keycb.keyon_flag&KEY_UP_ON)
					{
						keycb.keyon_flag&=~KEY_UP_ON;
						if(lcdcb.event_notice==SCR_EVENT_DISPLAY_FINISHED)
						{
							if(keycb.count==0)
								keycb.count=9;
							else 
								keycb.count--;
							lcdcb.event_notice=SCR_EVENT_COUNT_UP;
						}
						goto KEYEND;
					}
					
					else if(keycb.keyon_flag & KEY_CANCEL_ON)
					{
						keycb.keyon_flag&=~KEY_CANCEL_ON;
						if(keycb.input_num>0)
						{
							keycb.input_num--;
							flashcb.datacenter_port[keycb.input_num]=' ';
							lcdcb.event_notice=SCR_EVENT_DISP_PORT;
						}
						else	
						{
							keycb.exit_curr_level=1;
							keycb.count=0;
							lcdcb.event_notice=SCR_EVENT_MAIN_MENU;
						}
						goto KEYEND;
					}
									
					else if((keycb.keyon_flag & KEY_CONFIRM_ON))
					{
						keycb.keyon_flag &= ~KEY_CONFIRM_ON;
						if(keycb.input_num<DATACENTER_PORT_LEN)
						{
							flashcb.datacenter_port[keycb.input_num++]=keycb.count+0x30;
							lcdcb.event_notice=SCR_EVENT_DISP_PORT;
						}							
						else 
						{
							keycb.count=0;
							keycb.input_num = 0;
							keycb.exit_curr_level=1;
							keycb.event_notice = KEY_EVENT_SET_PORT;
							lcdcb.delay_disp_on=1;
							lcdcb.event_notice = SCR_EVENT_SET_OK;
						}
						goto KEYEND;
					}
				break;
							
				default:
				break;
			}
		break;//case 2

		case 3://browse one piece of history message			
			if(keycb.keyon_flag&KEY_UP_ON)
			{
				keycb.keyon_flag&=~KEY_UP_ON;
				if(lcdcb.rd_loc==0)
					goto KEYEND;
				lcdcb.rd_loc-=48;
				lcdcb.event_notice=SCR_EVENT_HISTORY_MSG;
				goto KEYEND;
			}
						
			else if(keycb.keyon_flag&KEY_DOWN_ON)
			{
				keycb.keyon_flag&=~KEY_DOWN_ON;
				lcdcb.rd_loc+=48;
				m=flashcb.len_rd_msg/48;
				if(lcdcb.rd_loc>m*48)
					lcdcb.rd_loc=m*48;
				lcdcb.event_notice=SCR_EVENT_HISTORY_MSG;
				goto KEYEND;
			}
						
			else if(keycb.keyon_flag&KEY_CANCEL_ON)
			{
				keycb.keyon_flag&=~KEY_CANCEL_ON;
				keycb.exit_curr_level=1;
				lcdcb.rd_loc=0;
				lcdcb.event_notice=SCR_EVENT_RESTORE_PAGE;
				goto KEYEND;
			}
			else 
				keycb.keyon_flag&=~KEY_CONFIRM_ON;
		break;//case 3

		case 4://runtime message
			if(keycb.msg_ack_flag&(DISPATCH_MSG_ON|WATERLEVEL_AJUST_MSG_ON))
			{
				if(keycb.keyon_flag&KEY_CONFIRM_ON)
				{
					keycb.keyon_flag&=~KEY_CONFIRM_ON;
					keycb.exit_curr_level=1;
					keycb.msg_ack_flag&=~DISPATCH_MSG_ON;
					keycb.msg_ack_flag&=~WATERLEVEL_AJUST_MSG_ON;
					ppcb.msg_ack_flag|=AGREE;
					lcdcb.event_notice=SCR_EVENT_INIT_INFO;
					goto KEYEND;
				}	

				else if(keycb.keyon_flag&KEY_CANCEL_ON)
				{
					keycb.keyon_flag&=~KEY_CANCEL_ON;
					keycb.exit_curr_level=1;
					keycb.msg_ack_flag&=~DISPATCH_MSG_ON;
					keycb.msg_ack_flag&=~WATERLEVEL_AJUST_MSG_ON;
					ppcb.msg_ack_flag|=DISAGREE;
					lcdcb.event_notice=SCR_EVENT_INIT_INFO;
					goto KEYEND;
				}
				
				else if(keycb.keyon_flag&KEY_UP_ON)
				{
					keycb.keyon_flag&=~KEY_UP_ON;
					if(lcdcb.rd_loc==0)
						goto KEYEND;
					lcdcb.rd_loc-=48;
					lcdcb.event_notice=SCR_EVENT_DISP_RTMSG;
					goto KEYEND;
				}

				else if(keycb.keyon_flag&KEY_DOWN_ON)
				{
					keycb.keyon_flag&=~KEY_DOWN_ON;
					lcdcb.rd_loc+=48;
					m=lcdcb.msg_len/48;
					if(lcdcb.rd_loc>m*48)
						lcdcb.rd_loc=m*48;
					lcdcb.event_notice=SCR_EVENT_DISP_RTMSG;
					goto KEYEND;
				}	
			}
			
			if(ppcb.msg_ack_flag & BROADCAST_MSG_ON)
			{
				if(keycb.keyon_flag&(KEY_CONFIRM_ON|KEY_CANCEL_ON))
				{
					keycb.keyon_flag&=~KEY_CONFIRM_ON;
					keycb.keyon_flag&=~KEY_CANCEL_ON;
					keycb.exit_curr_level=1;
					ppcb.msg_ack_flag&=~BROADCAST_MSG_ON;
					lcdcb.event_notice=SCR_EVENT_INIT_INFO;
					goto KEYEND;
				}

				else if(keycb.keyon_flag&KEY_UP_ON)
				{
					keycb.keyon_flag&=~KEY_UP_ON;
					if(lcdcb.rd_loc==0)
						goto KEYEND;
					lcdcb.rd_loc-=48;
					lcdcb.event_notice=SCR_EVENT_DISP_RTMSG;
					goto KEYEND;
				}

				else if(keycb.keyon_flag&KEY_DOWN_ON)
				{
					keycb.keyon_flag&=~KEY_DOWN_ON;
					lcdcb.rd_loc+=48;
					m=lcdcb.msg_len/48;
					if(lcdcb.rd_loc>m*48)
						lcdcb.rd_loc=m*48;
					lcdcb.event_notice=SCR_EVENT_DISP_RTMSG;
					goto KEYEND;
				}
			}
		break;//case 4
		
		default:
		break;
	}	

	KEYEND:	
	//	clear key line 
	KEYPORTOUT = 0x00;

	while(!keyint)
		watchdog_reset();

	i = 100;
	while(i --);

	EX1 = 1;		
}

void key_poll(void)
{	
	unsigned char i,j;
	watchdog_reset();
		
	switch(keycb.event_notice)
	{
		case KEY_EVENT_NONE:
		break;

		case KEY_EVENT_SAILOR_LOGIN:
			process_commpack_out(SAILOR_LOGIN_REQUEST);
		//	lcdcb.event_notice=SCR_EVENT_SAILOR_LOGING;
			keycb.event_notice = KEY_EVENT_NONE;
		break;

		case KEY_EVENT_SAILOR_LOGOUT:
			process_commpack_out(SAILOR_LOGOUT_REQUEST);
		//	lcdcb.event_notice=SCR_EVENT_SAILOR_LOGOUTING;
			keycb.event_notice = KEY_EVENT_NONE;
		break;

		case KEY_EVENT_CALL_OUT:
			process_commpack_out(CALL_OUT_REQUEST);
			ppcb.msg_ack_flag|= AUDIO_CALL_OUT;
			keycb.msg_ack_flag|=AUDIO_CALL_OUT;
			keycb.event_notice = KEY_EVENT_NONE;
		break;
				
		case KEY_EVENT_SET_IP:
			for(i=0,j=0;j<DATACENTER_IP_LEN;i++)
			{
				flashcb.short_ip[i]=(flashcb.datacenter_ip[j] - 0x30)*100	+	 
 								       (flashcb.datacenter_ip[j+1] - 0x30)*10 +
 								       (flashcb.datacenter_ip[j+2] - 0x30);
				j+=3;
			}
			process_commpack_out(SET_DATACENTER_IP);

			flash_set_syspara();
			keycb.event_notice = KEY_EVENT_NONE;
		break;
		
		case KEY_EVENT_SET_PORT:
			for(i=0,j=0;j<DATACENTER_PORT_LEN;i++)
			{
				flashcb.short_port[i]=(flashcb.datacenter_port[j]-0x30)*10+
									     flashcb.datacenter_port[j+1]-0x30;
				j+=2;
								
			}
			process_commpack_out(SET_DATACENTER_PORT);

			flash_set_syspara();
			keycb.event_notice = KEY_EVENT_NONE;
		break;
	
		default:
		break;
	}
	return;
}

⌨️ 快捷键说明

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