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

📄 zj__.c

📁 一款有mega16编写的抛球颠峰游戏,程序完全经典
💻 C
📖 第 1 页 / 共 4 页
字号:
							limit_yf5 += 50 ;
							if( limit_yf5 > 50000 ) limit_yf5 = 50 ;
							break ;
						case SET_FIRST_YF :
							first_yf += 1 ;
							if( first_yf > 2000 ) first_yf = 1 ;
							break ;
						case SET_SECOND_YF :
							second_yf += 1 ;
							if( second_yf > 2000 ) second_yf = 1 ;
							break ;
					}
				}
						
				
				if ( keys_old & 0x40 )
				{
					time_add1 = 0 ;
					time_long2 = 0 ;
				}
				if ( KEY3_CLICK )
				{
					time_add1 = 1 ;
					time_long2 = 0 ;
					keys_down &= 0xbf ;
					switch( setmode )
					{
						case SET_LIMIT_YF :
							limit_yf -= 50 ;
							if( limit_yf < 50 ) limit_yf = 50000 ;
							break ;
						case SET_LIMIT_YF1 :
							limit_yf1 -= 50 ;
							if( limit_yf1 < 50 ) limit_yf1 = 50000 ;
							break ;
						case SET_LIMIT_YF2 :
							limit_yf2 -= 50 ;
							if( limit_yf2 < 50 ) limit_yf2 = 50000 ;
							break ;
						case SET_LIMIT_YF3 :
							limit_yf3 -= 50 ;
							if( limit_yf3 < 50 ) limit_yf3 = 50000 ;
							break ;
						case SET_LIMIT_YF4 :
							limit_yf4 -= 50 ;
							if( limit_yf4 < 50 ) limit_yf4 = 50000 ;
							break ;
						case SET_LIMIT_YF5 :
							limit_yf5 -= 50 ;
							if( limit_yf5 < 50 ) limit_yf5 = 50000 ;
							break ;
						case SET_FIRST_YF :
							first_yf -= 1 ;
							if( first_yf < 1 ) first_yf = 2000 ;
							break ;
						case SET_SECOND_YF :
							second_yf -= 1 ;
							if( second_yf < 1 ) second_yf = 2000 ;
							break ;
					}
							
				}
				if ( time_add1 >= 20 )
				{
					time_add1 = 0 ;
					time_long2 = 1 ;
				}
				if ( time_long2 >= 30 )
				{
					time_long2 = 1 ;
					switch( setmode )
					{
						case SET_LIMIT_YF :
							limit_yf -= 50 ;
							if( limit_yf < 50 ) limit_yf = 50000 ;
							break ;
						case SET_LIMIT_YF1 :
							limit_yf1 -= 50 ;
							if( limit_yf1 < 50 ) limit_yf1 = 50000 ;
							break ;
						case SET_LIMIT_YF2 :
							limit_yf2 -= 50 ;
							if( limit_yf2 < 50 ) limit_yf2 = 50000 ;
							break ;
						case SET_LIMIT_YF3 :
							limit_yf3 -= 50 ;
							if( limit_yf3 < 50 ) limit_yf3 = 50000 ;
							break ;
						case SET_LIMIT_YF4 :
							limit_yf4 -= 50 ;
							if( limit_yf4 < 50 ) limit_yf4 = 50000 ;
							break ;
						case SET_LIMIT_YF5 :
							limit_yf5 -= 50 ;
							if( limit_yf5 < 50 ) limit_yf5 = 50000 ;
							break ;
						case SET_FIRST_YF :
							first_yf -= 1 ;
							if( first_yf < 1 ) first_yf = 2000 ;
							break ;
						case SET_SECOND_YF :
							second_yf -= 1 ;
							if( second_yf < 1 ) second_yf = 2000 ;
							break ;
					}
				}
				break ;
			case ZJ_TEST :
				if ( KEY1_CLICK )
				{
					keys_down &= 0xef ;
					if ( ++ testmode >= MAX_TEST )
					{
						while(1) ;
					}
				}
				if ( KEY2_CLICK )
				{
					switch( testmode )
					{
						case TEST_SET_COLOR :
							if ( ++ test_temp >= COLOR_COUNT ) test_temp = 0 ;
							break ;
						case TEST_SETPL_1 :
						case TEST_SETPL_2 :
						case TEST_SETPL_3 :
						case TEST_SETPL_4 :
							m1 = testmode - TEST_SETPL_1 ;
							if ( -- color_pl[m1] == 0 )
								color_pl[m1] = 300 ;
							eep_color_pl[m1] = color_pl[m1] ;
							break ;
					}
					keys_down &= 0xdf ;
				}
				if ( KEY3_CLICK )
				{
					switch( testmode )
					{
						case TEST_SET_COLOR :
							m1 = color_order[test_temp] ;
add_color:
							if ( ++ m1 >= 9 )
							{
								m1 = 1 ;
							}
							for( m2 = 0 ; m2 < COLOR_COUNT ; m2 ++ )
							{
								if ( color_order[m2] == m1 )
								{
									goto add_color ;
								}
							}
							color_order[test_temp] = m1 ;
							eep_color_order[test_temp] = m1 ;
							break ;
						case TEST_SETPL_1 :
						case TEST_SETPL_2 :
						case TEST_SETPL_3 :
						case TEST_SETPL_4 :
							m1 = testmode - TEST_SETPL_1 ;
							if ( ++ color_pl[m1] == 301 )
								color_pl[m1] = 1 ;
							eep_color_pl[m1] = color_pl[m1] ;
							break ;
					}
					keys_down &= 0xbf ;
				}
			
				break ;
			case ZJ_CLEAR_OK :
				if ( KEY1_CLICK || KEY2_CLICK || KEY3_CLICK )
				{
					this_zsf = 0 ;
					this_ztf = 0 ;
					bianhao = 1 ;
					while(1) ;
				}
				break ;
			case ZJ_GETCOLOR :
				if ( KEY1_CLICK  )
				{
					keys_down &= 0xef ;
					print_count = ! print_count ;
					this_zsf = 0 ;
					this_ztf = 0 ;
				}
				else if( KEY2_CLICK )
				{
					keys_down &= 0xdf ;
					count_flag = 0;
					print_count = 1 ;
					check_fen = 1 ;
					checkmode = 1 ;
					last_zsf = this_zsf ;
					last_ztf = this_ztf ;
					this_zsf = 0 ;
					this_ztf = 0 ;
					on_fjs = 0 ;
				}
				else if( KEY3_CLICK )
				{
					keys_down &= 0xbf ; 
					count_flag =!count_flag ;
					print_count = 0 ;
					check_fen = 0 ;
					checkmode = 0 ;
				}
				break ;
			default :
				break ;
		}
		

		if ( get_in != get_read )
		{
			m1 = uart_data() ;
			if ( m1 & 0x80 )
			{
				m1 &= 0x7f ;
				if ( m1 == my_ip )            // 0x7f
				{
					statue_cmd = SC_WAIT_IP ;
				}
				else
				{
					statue_cmd = SC_LISTENING ;
				}
			}
			else
			{
				switch( statue_cmd )
				{
					case SC_WAIT_IP :
						if ( m1 == target_sav )
						{
							statue_cmd = SC_COMMAND ;
						}
						else
						{
							statue_cmd = SC_LISTENING ;
						}
						break ;
					case SC_COMMAND :
						if ( m1 == order_sav )
						{
							return_parm_cnt = parm_len[m1,2] ;
							if ( return_parm_cnt )
							{
								statue_cmd = SC_DATA ;
							}
							else
							{
								statue_cmd = SC_LISTENING ;
							}
						}
						else
						{
							statue_cmd = SC_LISTENING ;
						}
						break ;
					case SC_DATA :
						if ( time_cmd >= 6 ) time_cmd -= 5 ;
						switch( order_sav )
						{
							case CMD_CHAZHANG :
								if ( return_parm_cnt >= 9 )
								{
									m2 = 16 - return_parm_cnt ;
									m3 = m2 % 2 ;
									m2 = m2 / 2 ;
									if ( m3 == 0 )
									{
										zsf_long.byte[m2] = m1 << 4 ;
									}
									else
									{
										zsf_long.byte[m2] |= ( m1 & 0xf ) ;
									}
								}
								else
								{
									m2 = 8 - return_parm_cnt ;
									m3 = m2 % 2 ;
									m2 = m2 / 2 ;
									if ( m3 == 0 )
									{
										ztf_long.byte[m2] = m1 << 4 ;
									}
									else
									{
										ztf_long.byte[m2] |= ( m1 & 0xf ) ;
									}
								}
								if ( -- return_parm_cnt == 0 )
								{
									m2 = target_sav ;
									this_zsf += zsf_long.dblword ;
									this_ztf += ztf_long.dblword ;
									on_fjs ++ ;
									if( check_fen != 1 ) print_data( m2 ) ;
									
									target_sav = m2 ;
									if ( ++ target_sav >= ( max_fj + 1 ) )
									{
										time_cmd = 0 ;
										if( check_fen != 1 )print_end() ;
										else
										{
											
											statue_sys = ZJ_BOARDCOLOR ;
											time_boardcolor = MAXTIME_BOARDCOLOR ;
										}
									}
									else
									{
										send_order( target_sav , CMD_CHAZHANG ) ;
									}
								}
								break ;
							case CMD_GETYF :
								if ( return_parm_cnt == 3 )
								{
									max_yz_temp = (unsigned int)m1 ;
									return_parm_cnt = 2 ;
								}
								else
								if ( return_parm_cnt == 2 )
								{
									max_yz_temp |= ( (unsigned int)m1 << 7 ) ;
									return_parm_cnt = 1 ;
								}
								else
								{
									max_yz_temp |= ( (unsigned int)m1 << 14 ) ;
									if ( max_yz_temp > max_yz )
									{
										max_yz = max_yz_temp ;
										max_yz_player = target_sav - 1 ;
									}
									if ( ++ target_sav >= ( max_fj + 1 ) )
									{
										change_statue( ZJ_GETCOLOR ) ;
										statue_cmd = SC_LISTENING ;
									}
									else
									{
										send_order( target_sav , CMD_GETYF ) ;
									}
								}
								break ;
							default :
								statue_cmd = SC_LISTENING ;
								break ;
						}
						break ;
					default :
						statue_cmd = SC_LISTENING ;
						break ;
				}
			}
		}
		
		if ( time_cmd >= MAXTIME_CMD )             // 25
		{
			time_cmd = 0 ;
			if ( ++ times_resend >= MAXTIMES_RESEND )      // 3
			{
				times_resend = 0 ;
				switch( order_sav )
				{
					case CMD_GETYF :
						if ( ++ target_sav >= ( max_fj + 1 ) )
						{
							change_statue( ZJ_GETCOLOR ) ;
						}
						else
						{
							send_order( target_sav , CMD_GETYF ) ;
						}
						break ;
					case CMD_CHAZHANG :
						zsf_long.dblword = 0xffffffff ;
						ztf_long.dblword = 0xffffffff ;
						m2 = target_sav ;
						if( check_fen != 1 )print_data( m2 ) ;
						target_sav = m2 ;
						if ( ++ target_sav >= ( max_fj + 1 ) )
						{
							
							if( check_fen != 1 )print_end() ;
							else
							{
								statue_sys = ZJ_BOARDCOLOR ;
								time_boardcolor = MAXTIME_BOARDCOLOR ;
							}
						}
						else
						{
							send_order( target_sav , CMD_CHAZHANG ) ;
						}
						break ;
					default :
						break ;
				}
			}
			else
			{
				m1 = times_resend ;
				send_order( target_sav , order_sav ) ;
				times_resend = m1 ;
			}
		}
		
		check_send() ;
		
		if ( keys_old & 0x80 )
		{
			//manu
			m2 = in_sensor_old ;
			m3 = in_sensor_down ;
		}
		else
		{
			m2 = in_key_old ;
			m3 = in_key_down ;
		}
		m4 = 0 ;
	//	result = NO_RESULT ;                            // 9 
		for( m1 = 0 ; m1 < COLOR_COUNT ; m1 ++ )
		{
			if ( statue_sys == ZJ_GETCOLOR )
			{
				if ( m2 & BIT( m1 ) )
				{
					time_long[m1] = 0 ;
				}
				else
				{
					m4 ++ ;
				}
				if ( m3 & BIT( m1 ) )
				{
					time_long[m1] = 1 ;
					in_sensor_down &= ~ BIT( m1 ) ;
					in_key_down &= ~ BIT( m1 ) ;
				}
				if ( keys_old & 0x80 )
				{
					if ( time_long[m1] >= MAXTIME_INHOLE1 ) //>=5
					{
						result = m1 ;
					/*	if ( blink_on )
						{
							write273( HC273_LAMP , BIT( m1 + 2 ) ) ;
						}
						else
						{
							write273( HC273_LAMP , 0 ) ;
						}
					*/
					}
				}
				else
				{
					if ( time_long[m1] >= MAXTIME_INHOLE2 ) //>=3
					{
						result = m1 ;
					}
				}
			}
			else
			{
				time_long[m1] = 0 ;
				m2 = 0 ;
				m3 = 0 ;
				in_key_down = 0 ;
				in_sensor_down = 0 ;
			}
		}
		
		if ( in_key_down & BIT( 4 ) )
		{
			in_key_down &= ~ BIT( 4 ) ;
			if ( result != NO_RESULT  && statue_sys == ZJ_GETCOLOR )
			{
				change_statue( ZJ_BOARDCOLOR ) ;
			}
		}
		
		
	}
}

interrupt [TIM0_OVF] void timer( void )
{
	unsigned char	t1 , t2 , t3 , t4 ;
	unsigned int	t5 ;
	TCNT0 = - 125 ;
	
	in_key_sam[sam_cnt] = read245( HC245_IN_KEY ) ;
	in_sensor_sam[sam_cnt] = read245( HC245_IN_SENSOR ) ;
	keys_new = read245( HC245_KEYS ) ;
	sw1_old = ~ read245( HC245_SW1 ) ;
	sw2_old = ~ read245( HC245_SW2 ) ;
	if ( ++ sam_cnt >= MAXCNT_SAM )             // 5
	{
		sam_cnt = 0 ;
		for( t1 = 0 ; t1 < 8 ; t1 ++ )
		{
			t2 = 0 ;
			t4 = 0 ;
			for( t3 = 0 ; t3 < MAXCNT_SAM ; t3 ++ )
			{
				if ( in_key_sam[t3] & BIT( t1 ) )
				{
					t2 ++ ;
				}
				if ( in_sensor_sam[t3] & BIT( t1 ) )
				{
					t4 ++ ;
				}
			}
			if ( t2 >= 4 )
			{
				in_key_new |= BIT( t1 ) ;
			}
			else
			if( t2 < 2 )
			{
				in_key_new &= ~ BIT( t1 ) ;
			}

			if ( t4 >= 4 )
			{
				in_sensor_new |= BIT( t1 ) ;
			}
			else
			if( t4 < 2 )
			{
				in_sensor_new &= ~ BIT( t1 ) ;
			}
		}
		
		in_key_down |= ( in_key_new ^ in_key_old ) & ( ~ in_key_new ) ;
		in_key_old = in_key_new ;
		in_sensor_down |= ( in_sensor_new ^ in_sensor_old ) & ( ~ in_sensor_new ) ;
		in_sensor_old = in_sensor_new ;
	}
	
	keys_down |= ( keys_new ^ keys_old ) & ( ~ keys_new ) ;
	keys_old = keys_new ;
	
	if ( time_return ) time_return -- ;
	if ( time_long1 ) time_long1 ++ ;
	if ( time_long2 ) time_long2 ++ ;
	
	if ( time_cnt )
	{
		if ( ++ time_flash >= MAXTIME_FLASH )             // 3
		{
			time_flash = 0 ;
			write_led( LED_OFF ) ;
			if ( ++ led_no >= 8 ) led_no = 0 ;
			
			t1 = LED_OFF ;
			
			if ( testmode >= TEST_SETPL_1 && testmode < ( TEST_SETPL_4 + 1 ) )  // 2       5
			{
				t2 = testmode - TEST_SETPL_1 ;                              // -2
				t5 = color_pl[t2] ;                                         
			}
			
			switch( led_no )
			{
				
				case 7 :
					switch( statue_sys )
					{
						case ZJ_BOARDCOLOR :
							
							if( checkmode ) t1 = checkmode  ;
							else
							{
								t1 = statue_sys ;
							}
							break ;
						case ZJ_SET :
							t1 = setmode  ;
							break ;
						default:
							t1 = statue_sys ;
							break ;
					}
					break ;
				case 6 :
					if ( testmode )
					{
						t1 = testmode ;
					}
					switch( statue_sys )
					{
						case ZJ_BOARDCOLOR :
							switch( checkmode )
							{
								case 4 :
									if ( this_earn < 0 ) t1 = LED_Minus ;
									break ;
								case 5 :
									if ( between_earn < 0 ) t1 = LED_Minus ;
									break ;
								case 8 :
									if ( last_earn < 0 ) t1 = LED_Minus ;
									break ;
								case 2 :
									t1 = xianxi( 6 , this_zsf ) ;
									break ;
								case 3 :
									t1 = xianxi( 6 , this_ztf ) ;
									break ;	
								case 6 :

⌨️ 快捷键说明

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