亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xarias.c

?? The program for BOSH 1.5.4
?? C
字號:
/* * XARIAS carputer project * * Copyright (c) 2007 by Roman Pszonczenko xtensa <_at_> gmail * *   This program is free software; you can redistribute it and/or modify *   it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 3 of the License, or *   (at your option) any later version. * *   This program is distributed in the hope that it will be useful, *   but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *   GNU General Public License for more details. * *   You should have received a copy of the GNU General Public License *   along with this program; if not, write to the Free Software *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA */#include "defines.h"#include <ctype.h>#include <stdint.h>#include <stdio.h>#include <avr/io.h>#include <avr/pgmspace.h>#include <util/delay.h>#include <util/twi.h>#include <avr/interrupt.h>#include "lcd.h"#define PIN_INJ   PIND&_BV(3)#define PORT_INJ  PORTD|_BV(3)/* * Injector flow constant in ml/min * For Toyota Corolla 1,3 4EFE it's 136 - 176 * For Toyota Corolla 1,6 4AFE it's 160 - 200 */#define INJ_FLOW 156/* * Number of ticks per one kilometer */#define SPEED_TICKS 2548FILE lcd_str = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);uint32_t passed_seconds=0, tcnt0_overs=0, passed_speed_ticks=0;uint16_t clock_ticks=0, inj_ticks=0, tcnt0_overs_sec=0;void error(char *msg){	stderr = &lcd_str;	lcd_locate(2,1);	fprintf(stderr,"ERR: %s",msg);}/* * This function sends one byte through TWI bus. * It returns 0 on success and 1 if failed. */uint8_t twi_write_data(uint8_t data){	TWDR = data;	TWCR = _BV(TWINT) | _BV(TWEN);	/*	 * waiting for TWINT flag set	 */	while (!(TWCR & _BV(TWINT)));	if ( TW_STATUS != TW_MT_DATA_ACK) 	{		error("MT_DATA_ACK cmd");		return 1;	}	return 0;}/* * Do all the startup-time peripheral initializations. */static void ioinit(void){	lcd_init();	/*	 * SCL = CPU_Freq / ( 16 + 2 * TWBR * 4^TWPS )	 */	TWBR = 98; // with prescaller = 1 gives us 100kHz TWI bus	TWSR = 0;  // prescaller = 1	/*	 * enablibg TWI and sending START condition	 */	TWCR = _BV(TWINT)|_BV(TWSTA)|_BV(TWEN);	/*	 * waiting for TWINT flag set	 */	while (!(TWCR & _BV(TWINT)));		if ( TW_STATUS != TW_START) error("TWI START cmd");	/*	 * writing SLA_W and device address 1101 000	 */	TWDR = TW_WRITE | 0xD0; 	TWCR = _BV(TWINT) | _BV(TWEN);	/*	 * waiting for TWINT flag set	 */	while (!(TWCR & _BV(TWINT)));	if ( TW_STATUS != TW_MT_SLA_ACK) error("MT_SLA_ACK cmd");	/*	 * writing address start 0	 */	twi_write_data(0);	twi_write_data(0);	twi_write_data(0);	twi_write_data(0);	twi_write_data(0);	twi_write_data(0);	twi_write_data(0);	twi_write_data(0);	/*	 * writing control register	 * turning on output (bit 7) and setting 32,768 kHz (bits 0 and 1)	 */	twi_write_data(_BV(4)|_BV(0)|_BV(1));	TWCR = _BV(TWINT)|_BV(TWEN)|_BV(TWSTO);	/*	 * Enable external interrupt 0	 */	GICR = _BV(INT0);	/*	 * Falling edge will generate interrupt 0	 */	MCUCR |= _BV(1);	/*	 * enable pull-up resistors for ports D2 and D3	 */	PORTD |= _BV(2) | _BV(3);	/*	 * enable all interrupts	 */	sei();	/*	 * external clock source for Timer0, clock on falling edge	 */	TCCR0 |= _BV(2) | _BV(1);	/*	 * enable Timer0 overflow interrupt	 */	TIMSK |= _BV(0);}/* * This function return fuel consumption in l/h * 1000 * We assume that fuel consumption is not greater than 65.536 l/h * Although l_inj_ticks is uint64_t, it cannot be greater than * xxxxxx and  */uint16_t calc_fuel_h(uint64_t l_inj_ticks, uint32_t l_seconds){	return (uint16_t)((l_inj_ticks*INJ_FLOW*15)/((uint64_t)2048*l_seconds));}uint16_t calc_fuel_100(uint16_t l_fuel_h, uint64_t l_speed_ticks, uint32_t l_seconds){	return (uint16_t)(((uint64_t)l_fuel_h*SPEED_TICKS*l_seconds)/(l_speed_ticks*36));}uint16_t calc_speed_m(uint64_t l_speed_ticks, uint32_t l_seconds){	return (uint16_t)(l_speed_ticks*1000/(SPEED_TICKS*l_seconds));}uint32_t power(uint32_t x, uint8_t y){	uint8_t i;	uint32_t retval=1;	for(i=0;i<y;i++,retval*=x);	return retval;}/* * Cuts last p digits of the value */#define CUT(val,mult) ((uint16_t)((val)/power(10,(uint8_t)mult)))/*  * The most calculations in this program made on integer values.  * Floating point precision is achieved by doing calculations on  * values multiplied with 10^x, where i x is precision. For example  * if we want to write 2.345 with precision of 3 digits after  * floating point, we will use 2345, as it is equal to 2.345*10^3 * Recalculation is done just before displayng the values. * The next three macros are provided to made such calculations. * * Parameters: *    <val>   - value on which calculations are made *    <mult>  - multiplier  *    <prec>  - precision of the calculations; shoud be less *              or equal then multiplier * * ROUND macro just do the rounding to <prec> digits after * imaginable point. Be aware that it does not truncate the rest  * digits * * uint32_t gives us 4294967 km 296 m of maximium pass */#define ROUND(val,mult,prec) ((uint32_t)(val+5*power(10,(uint8_t)mult-prec-1)))/* * This macro just truncates digits after the floating point, so it * only left integer part before. */#define ROUND1(val,mult,prec) ((uint16_t)CUT(ROUND(val,mult,prec),mult))/* * And the following macro truncate digits before floating point, * so it only left floating part with the specified precision. */#define ROUND2(val,mult,prec) (uint16_t)(CUT(ROUND(val,mult,prec)-CUT(ROUND(val,mult,prec),mult)*power(10,(uint8_t)mult),mult-prec))int main(){	stderr = &lcd_str;	ioinit();	return 0;}SIGNAL(SIG_INTERRUPT0){	static uint64_t passed_inj_ticks=0;	uint8_t pin_inj_state=PIN_INJ;	if(!pin_inj_state) inj_ticks++;	if(!clock_ticks)	{		uint16_t m_speed_m, m_speed_km, avg_speed_m, avg_speed_km;		uint16_t m_fuel_h, m_fuel_100, avg_fuel_h, avg_fuel_100, speed_ticks;		uint32_t passed_distance;		uint8_t  tcnt0;				tcnt0=TCNT0;		TCNT0=0;		tcnt0_overs_sec=0;		speed_ticks=tcnt0_overs_sec*256+tcnt0;		passed_speed_ticks += speed_ticks;		passed_inj_ticks += inj_ticks;		passed_distance=passed_speed_ticks*1000/SPEED_TICKS;		m_fuel_h     = calc_fuel_h(inj_ticks,1);		m_fuel_100   = calc_fuel_100(m_fuel_h,speed_ticks,1);		avg_fuel_h   = calc_fuel_h(passed_inj_ticks,passed_seconds);		avg_fuel_100 = calc_fuel_100(avg_fuel_h,passed_speed_ticks,passed_seconds);		m_speed_m    = calc_speed_m(speed_ticks,1);		m_speed_km   = m_speed_m * 36 / 10;		avg_speed_m  = calc_speed_m(passed_speed_ticks,passed_seconds);		avg_speed_km = avg_speed_m * 36 / 10;		// printing speed in km/h and m/s		lcd_locate(1,1);		fprintf(stderr, "%3u km/h  %3u m/s",m_speed_km,m_speed_m);		// printing fuel consumption		lcd_locate(2,1);		fprintf(stderr, " %3u.%u l/100km %2u.%u l/h",ROUND1(m_fuel_100,3,1),ROUND2(m_fuel_100,3,1),ROUND1(m_fuel_h,3,1),ROUND2(m_fuel_h,3,1));		// temporarily: checking for error		if(ROUND2(m_fuel_100,3,1)>9) { lcd_locate(1,1); fprintf(stderr,"%u",m_fuel_100); while(1);}				// avarage speed and fuel consumption		lcd_locate(3,1);		fprintf(stderr, "%3u km/h %3u.%u l/100",avg_speed_km,ROUND1(avg_fuel_100,3,1),ROUND2(avg_fuel_100,3,1));				// printing journey time		lcd_locate(4,1);		fprintf(stderr,"%02u:%02u:%02u", (uint8_t)(passed_seconds/3600),(uint8_t)((passed_seconds%3600)/60),(uint8_t)(passed_seconds%60));		// printing passed dist		lcd_locate(4,10);		fprintf(stderr, "%4u.%03u km",ROUND1(passed_distance,3,3),ROUND2(passed_distance,3,3));						passed_seconds++;		inj_ticks=0;	}	clock_ticks++;	if(clock_ticks==32768)	{		clock_ticks=0;	}}SIGNAL(SIG_OVERFLOW0){	tcnt0_overs++;	tcnt0_overs_sec++;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.亚洲色图.com| 黄色小说综合网站| |精品福利一区二区三区| 26uuu色噜噜精品一区二区| 日韩美女视频一区二区在线观看| 制服丝袜av成人在线看| 91精品免费在线| 欧美一区二区三区四区视频| 91精品福利在线一区二区三区 | 国产精品人妖ts系列视频| 久久久久国产精品人| 久久精品欧美日韩| 亚洲欧洲日韩av| 亚洲一区在线观看免费| 免费在线视频一区| 国产老妇另类xxxxx| 99精品偷自拍| 制服丝袜亚洲播放| 久久久久青草大香线综合精品| 国产日韩一级二级三级| 一区二区日韩av| 韩国精品一区二区| 国产精品亚洲人在线观看| 成人91在线观看| 日本大香伊一区二区三区| 88在线观看91蜜桃国自产| 国产亚洲视频系列| 亚洲免费av在线| 久久精品国产网站| 91色porny蝌蚪| 日韩精品一区二区三区视频在线观看| 久久久综合视频| 亚洲一区二区三区在线| 狠狠色狠狠色综合系列| 欧洲日韩一区二区三区| 久久久久9999亚洲精品| 亚洲愉拍自拍另类高清精品| 另类的小说在线视频另类成人小视频在线| 国产盗摄精品一区二区三区在线| 成人免费视频网站在线观看| 欧美日韩国产经典色站一区二区三区| 精品人在线二区三区| 亚洲精品伦理在线| 国产精品69毛片高清亚洲| 欧美日韩综合一区| 亚洲色图20p| 国产一区久久久| 欧美精品123区| 亚洲免费在线电影| 丁香婷婷综合五月| 精品精品国产高清a毛片牛牛 | 欧洲在线/亚洲| 欧美韩国一区二区| 激情图片小说一区| 56国语精品自产拍在线观看| 亚洲视频免费在线观看| 国产精一区二区三区| 欧美人与性动xxxx| 亚洲综合清纯丝袜自拍| 不卡一区二区在线| 国产精品另类一区| 国产98色在线|日韩| 26uuu亚洲婷婷狠狠天堂| 蜜臀av一区二区| 欧美一区二区在线视频| 亚洲va国产va欧美va观看| 在线看国产一区| 亚洲亚洲人成综合网络| 在线免费观看一区| 亚洲一区在线观看视频| 欧美性videosxxxxx| 亚洲一区二区三区中文字幕在线| 一本一道综合狠狠老| 亚洲人123区| 欧美色大人视频| 视频一区国产视频| 日韩亚洲欧美综合| 激情综合一区二区三区| 精品人在线二区三区| 国产精品亚洲成人| 国产精品久久久久久久久快鸭| 成人一道本在线| 怡红院av一区二区三区| 欧美在线视频你懂得| 丝袜诱惑亚洲看片| 精品国内二区三区| 高清shemale亚洲人妖| √…a在线天堂一区| 欧美日韩精品欧美日韩精品| 日本欧美久久久久免费播放网| 日韩欧美在线观看一区二区三区| 黑人巨大精品欧美一区| 国产农村妇女毛片精品久久麻豆| jiyouzz国产精品久久| 亚洲成av人片一区二区| 欧美va亚洲va| 99r国产精品| 美女一区二区三区| 亚洲国产精品成人综合色在线婷婷| 岛国av在线一区| 亚洲成人免费在线观看| 精品国产乱码久久久久久久| eeuss鲁片一区二区三区在线看| 亚洲综合999| 久久综合久久综合久久| 91影院在线免费观看| 日韩专区一卡二卡| 国产精品沙发午睡系列990531| 欧美伊人久久久久久午夜久久久久| 日韩国产在线观看一区| 国产精品欧美经典| 欧美美女一区二区在线观看| 国产麻豆精品视频| 一区二区成人在线观看| 欧美精品一区二区在线观看| 色综合久久综合网97色综合| 老司机一区二区| 亚洲愉拍自拍另类高清精品| 国产午夜精品在线观看| 欧美男女性生活在线直播观看| 国产成人在线电影| 蜜芽一区二区三区| 亚洲自拍欧美精品| 中文字幕日韩av资源站| 欧美xfplay| 欧美精品久久天天躁| 99久久er热在这里只有精品15 | 久久精品人人做人人综合| 欧美日韩亚洲国产综合| 99国产欧美另类久久久精品| 国精品**一区二区三区在线蜜桃| 亚洲成人av在线电影| 亚洲精品写真福利| 1000精品久久久久久久久| 国产蜜臀av在线一区二区三区| 538在线一区二区精品国产| 在线中文字幕一区| 色综合天天综合在线视频| 国产91丝袜在线播放九色| 美腿丝袜亚洲一区| 日本不卡免费在线视频| 午夜日韩在线电影| 亚洲一二三级电影| 亚洲综合区在线| 亚洲永久免费视频| 亚洲一区二区三区在线看| 亚洲免费三区一区二区| 亚洲色图欧洲色图| 亚洲欧美一区二区三区久本道91| 国产欧美日韩激情| 国产精品嫩草影院com| 中文字幕第一区二区| 日韩一区在线播放| 亚洲欧美国产三级| 亚洲国产精品久久久久秋霞影院 | 久久免费精品国产久精品久久久久| 日韩欧美一区在线观看| 日韩你懂的在线观看| 久久尤物电影视频在线观看| 久久久综合视频| 中文字幕av一区二区三区免费看| 欧美激情一区在线| 日韩理论片在线| 一区二区激情视频| 日韩电影在线观看一区| 久久成人18免费观看| 国产露脸91国语对白| 99久久精品国产观看| 在线观看日韩av先锋影音电影院| 欧美视频一二三区| 日韩美女主播在线视频一区二区三区| www国产成人| 中文字幕一区二区三| 亚洲国产一二三| 美腿丝袜在线亚洲一区| 国产成人精品亚洲777人妖| 色呦呦网站一区| 日韩视频免费观看高清完整版在线观看 | 国产成人超碰人人澡人人澡| www.日韩在线| 欧美日韩免费高清一区色橹橹| 日韩三级视频在线观看| 日本一区二区三区国色天香| 亚洲自拍偷拍综合| 国产在线不卡视频| 一本大道久久a久久综合婷婷| 91精品国产综合久久久蜜臀粉嫩| 久久精品亚洲精品国产欧美| 亚洲欧美日韩电影| 久久成人综合网| 色天使色偷偷av一区二区| 欧美成人精品1314www| **欧美大码日韩| 国产制服丝袜一区| 69久久99精品久久久久婷婷| 国产精品视频免费| 精品在线免费观看| 欧美三级电影网| 亚洲欧洲在线观看av| 精品一区二区成人精品|