<?xml version="1.0" encoding="utf-8" ?>
				<!-- generator="e107" -->
				<!-- content type="Forum / topic" -->
				<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
				<channel rdf:about="http://www.8051projects.net/">
				<title>8051 Microcontroller Projects AVR PIC Projects Tutorials Ebooks Libraries codes : Forum / topic</title>
				<link>http://www.8051projects.net/</link>
				<description>Learn to make simple microcontroller projects, pic, 8051, avr and arm projects. download 8051 projects, tutorials, libraries, sample codes. join the microcontroller discussion forum and ask doubts regarding electronics. the best source for 8051 over internet.</description>
				<dc:language>en-gb</dc:language>
				<dc:date>2008-12-01T23:20:17-08:00</dc:date>
				<dc:creator>contact@nospam.com</dc:creator>
				<admin:generatorAgent rdf:resource="http://e107.org" />
				<admin:errorReportsTo rdf:resource="mailto:contact@nospam.com" />
				<sy:updatePeriod>hourly</sy:updatePeriod>
				<sy:updateFrequency>1</sy:updateFrequency>
				<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
				<items>
				<rdf:Seq>
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
						<rdf:li rdf:resource="http://www.8051projects.net/forum-t10569.html" />
				</rdf:Seq>
				</items>
				</channel>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator></dc:creator>
						<dc:subject></dc:subject>
						<description>hi i have an idea to build  digital speedometer with kilometer (Milometre)and distance measurement (resettable) option we can use 16x2 lcd, upper line for speed ,lower line for distance (total as conventional meter have ) and also re-settable to find how much distance today I want to use it in my Bicycle and further in my bike sensor should be easy to install and simple too How to start ?</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>Ajay</dc:creator>
						<dc:subject></dc:subject>
						<description>avr? nice  can we have this in AVR projects?</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>۞ TPS ۞</dc:creator>
						<dc:subject></dc:subject>
						<description>here i find some link http://ltc.cit.cornell.edu/courses/ee476/FinalProjects/s2006/jtg28rbc24/jtg28rbc24/goconn.html</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>۞ TPS ۞</dc:creator>
						<dc:subject></dc:subject>
						<description>http://www.ednasia.com/article-3159-versatiledigitalspeedometerusesfewcomponents-Asia.html</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>۞ TPS ۞</dc:creator>
						<dc:subject></dc:subject>
						<description>codesCODE:;**********************<br />;Including Controller Definetion File<br />;**********************<br /><br />.include "2313def.inc"<br /><br />;**********************<br />;Description<br />;**********************<br />;The connection details are as given in schematic<br />;LCD is connected to port B and sensor is connected <br />;to INT 0 pin of MCU<br /><br />;**********************<br />;calculation Details (Formulae Used)<br />;**********************<br /><br />;####For speed measurement####<br />;speed = 2*pi*R*3600*clk/time_count*1000*x<br />;R = radius of the wheel in cm (In this design R=25cm)<br />;time_count = value of timer counter in b/w<br />;two successive interrupts<br />;x = clock prescaler used (in this design x=1024)<br />;using this we have calculated the equivalent value of <br />;all the constants (except time_count all other parameters<br />;are constants)<br />;sh and sl are binary equivalent of this constant<br /><br />.equ sh = $56<br />.equ sl = $49&nbsp; &nbsp;<br />.equ sht = $57&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;sht = sh + 1<br /><br />;####For distance measurement####<br />;After every 100 m the registers holding distance values <br />;are incremented. For this we have used following formulae<br />; 2*pi*R*n/100 = 100<br />;R = radius of the wheel in cm (In this design R=25cm)<br />;n is the count which signifies that 100 m has been completed <br /><br />.equ n = $40<br /><br />;********************<br />;To give useful names to Registers <br />;********************<br /><br />;####temporay registers####<br />.def temp=r16&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br />.def temp1=r18&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />.def c1=r22&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;used for speed calculation and for display purpose<br />.def c2=r4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;used for speed calculation and for display purpose<br />.def d1=r5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;used for speed calculation and for display purpose<br />.def d2=r6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;used for speed calculation and for display purpose<br />.def status=r7&nbsp; ;holds the value of status register in case of interrupt<br /><br />;####Registers used for timing####<br />.def count_1=r17&nbsp; &nbsp; &nbsp; &nbsp; ;<br />.def time_1=r1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />.def time_0=r2<br /><br />;####Registers used for speed measurement####<br />.def sdigit_01=r19<br />.def sdigit_1=r20&nbsp; &nbsp; &nbsp; &nbsp;;holds the binary value of speed<br /><br />;####Registers used for Distance measurement####<br />.def ddigit_01=r8&nbsp; &nbsp; &nbsp; &nbsp;;Holds binary value of distance (0.0 to 9.9)<br />.def ddigit_1=r9 &nbsp; &nbsp; &nbsp; &nbsp;;Holds binary value of distance (10.0 to 999.9)<br />.def ddigit_10=r10&nbsp; &nbsp; &nbsp; ;Holds binary value of distance (1000.0 to 99999.9)<br />.def dist_count=r13<br /><br />;####Registers used for LCD display####<br />.def lcd_cmd=r21<br />.def lcd_dat=r23<br />.def count=r3<br /><br />;####Registers used for delays####<br />.def low_del=r24<br />.def hi_del=r25<br /><br />;####Registers used for EEPROM####<br />.def eep_reg=r11<br />.def eep_addr=r12<br /><br />;r14r15<br /><br />;*******************<br />;Code Segment<br />;*******************<br /><br />.cseg&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<br /><br />.org 0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; rjmp &nbsp; &nbsp;RESET &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />.org INT0addr<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp IntV0<br /><br />reti<br />reti<br />reti<br />reti<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />.org OVF0addr<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp TimerV0<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />reti<br />reti<br />reti<br />reti<br /><br />.org $000b<br /><br />;*******************<br />;Reset interrupt subroutine<br />;to be executed on Reset interrupt<br />;*******************<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />RESET:<br /><br />;####Initializing Stack Pointer####<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,RAMEND<br />&nbsp; &nbsp; out SPL, temp &nbsp; &nbsp; &nbsp; &nbsp;<br /><br />;####Initializing I/O Ports####<br /><br />&nbsp; &nbsp; ldi temp, 0b11111111 &nbsp; ;configure PORT B for all outputs<br />&nbsp; &nbsp; out DDRB, temp &nbsp;<br />&nbsp; &nbsp; ldi temp,0<br />&nbsp; &nbsp; out DDRD,temp<br />&nbsp; &nbsp; ldi temp,$ff<br />&nbsp; &nbsp; out PORTD,temp&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;configure PORT D for all inputs &nbsp; &nbsp; &nbsp;<br /><br />;####Initializing INT 0 interrupt####<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,$40&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Enabling INT 0 interrupt<br />&nbsp; &nbsp; &nbsp; &nbsp; out GIMSK,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,$03&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Interrupt on rising edge<br />&nbsp; &nbsp; &nbsp; &nbsp; out MCUCR,temp<br /><br />;####Intializing timing process####<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,$02<br />&nbsp; &nbsp; &nbsp; &nbsp; out TIMSK,temp&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Enabling timer overflow interrupt<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,$05<br />&nbsp; &nbsp; &nbsp; &nbsp; out TCCR0,temp<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,$00&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;Initializing Registers<br />&nbsp; &nbsp; &nbsp; &nbsp; out TCNT0,temp<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; clr time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; clr time_1<br /><br />;####Initializing registers holding speed####<br />&nbsp; &nbsp; &nbsp; &nbsp; clr sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; clr sdigit_01<br /><br />;####Initializing registers holding distance####<br />&nbsp; &nbsp; &nbsp; &nbsp; clr dist_count<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_10<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_read<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />;####Initializing LCD Display####<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall init_lcd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall init_lcd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall hi_delay<br /><br />;####enabling global mask interrupt enable####<br />&nbsp; &nbsp; &nbsp; &nbsp; sei<br /><br />;********************<br />;Main Part of the Program<br />;********************<br /><br />main_loop:<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall dist &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;Subroutine to calculate Distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall print_lcd&nbsp;;Subroutine for LCD Display<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp main_loop &nbsp;<br /><br />;********************<br />;INT 0 ISR <br />;********************<br /><br />IntV0:<br />&nbsp; &nbsp; &nbsp; &nbsp; in status,SREG<br />&nbsp; &nbsp; &nbsp; &nbsp; in time_0,TCNT0<br />&nbsp; &nbsp; &nbsp; &nbsp; mov time_1,count_1<br />&nbsp; &nbsp; &nbsp; &nbsp; clr count_1<br />&nbsp; &nbsp; &nbsp; &nbsp; out TCNT0,count_1<br />&nbsp; &nbsp; &nbsp; &nbsp; inc dist_count<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall speed&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;Subroutine for speed calculation<br />&nbsp; &nbsp; &nbsp; &nbsp; out SREG,status<br />&nbsp; &nbsp; &nbsp; &nbsp; reti<br /><br />;********************<br />;Timer overflow ISR<br />;********************<br /><br />TimerV0:<br />&nbsp; &nbsp; &nbsp; &nbsp; in status,SREG<br />&nbsp; &nbsp; &nbsp; &nbsp; inc count_1<br />&nbsp; &nbsp; &nbsp; &nbsp; cpi count_1,sht<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh timeff<br />&nbsp; &nbsp; &nbsp; &nbsp; out SREG,status<br />&nbsp; &nbsp; &nbsp; &nbsp; reti<br /><br />timeff:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr count_1<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall time00<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />&nbsp; &nbsp; &nbsp; &nbsp;<br /><br />;********************<br />;Calculation of speed<br />;********************<br /><br />speed:<br />&nbsp; &nbsp; &nbsp; &nbsp; push d1<br />&nbsp; &nbsp; &nbsp; &nbsp; push d2<br />&nbsp; &nbsp; &nbsp; &nbsp; push c1<br />&nbsp; &nbsp; &nbsp; &nbsp; push c2<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,$00<br />&nbsp; &nbsp; &nbsp; &nbsp; cp time_1,temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; breq time0&nbsp; &nbsp; &nbsp;<br />speedq:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,sh<br />&nbsp; &nbsp; &nbsp; &nbsp; mov c1,temp1&nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,sl<br />&nbsp; &nbsp; &nbsp; &nbsp; mov c2,temp1&nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speedcal<br /><br />time0:<br />&nbsp; &nbsp; &nbsp; &nbsp; cp time_0,temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; breq time00<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speedq<br /><br />time00:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; clr sdigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; pop d1<br />&nbsp; &nbsp; &nbsp; &nbsp; pop d2<br />&nbsp; &nbsp; &nbsp; &nbsp; pop c1<br />&nbsp; &nbsp; &nbsp; &nbsp; pop c2<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />speedcal:<br />&nbsp; &nbsp; &nbsp; &nbsp; cp c1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh speed_cal<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speed0<br />speed_cal:<br />&nbsp; &nbsp; &nbsp; &nbsp; cp c2,time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh speed_cal1<br />&nbsp; &nbsp; &nbsp; &nbsp; cp c1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; breq speed0<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speed_cal2<br />speed_cal1:<br />&nbsp; &nbsp; &nbsp; &nbsp; inc sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; sub c1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; sub c2,time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speedcal<br /><br />speed_cal2:<br />&nbsp; &nbsp; &nbsp; &nbsp; inc sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; sub c1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; sub c2,time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; dec c1<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speedcal<br /><br />speed0:<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal<br />scal:<br />&nbsp; &nbsp; &nbsp; &nbsp; mov d1,c1<br />&nbsp; &nbsp; &nbsp; &nbsp; mov d2,c2<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,10<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal1<br />scal1:<br />&nbsp; &nbsp; &nbsp; &nbsp; cpi temp1,1<br />&nbsp; &nbsp; &nbsp; &nbsp; brne scal2<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal3<br />scal2:<br />&nbsp; &nbsp; &nbsp; &nbsp; dec temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; add d2,c2<br />&nbsp; &nbsp; &nbsp; &nbsp; adc d1,c1<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal1<br />scal3:<br />&nbsp; &nbsp; &nbsp; &nbsp; cp d1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh scal4<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speed1<br />scal4:<br />&nbsp; &nbsp; &nbsp; &nbsp; cp d2,time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh scal5<br />&nbsp; &nbsp; &nbsp; &nbsp; cp d1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; breq speed1<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal6<br />scal5:<br />&nbsp; &nbsp; &nbsp; &nbsp; inc sdigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; sub d1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; sub d2,time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal3<br />scal6:<br />&nbsp; &nbsp; &nbsp; &nbsp; inc sdigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; sub d1,time_1<br />&nbsp; &nbsp; &nbsp; &nbsp; sub d2,time_0<br />&nbsp; &nbsp; &nbsp; &nbsp; dec d1<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp scal3<br />speed1:<br />&nbsp; &nbsp; &nbsp; &nbsp; pop d1<br />&nbsp; &nbsp; &nbsp; &nbsp; pop d2<br />&nbsp; &nbsp; &nbsp; &nbsp; pop c1<br />&nbsp; &nbsp; &nbsp; &nbsp; pop c2<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />;********************<br />;Calculation of distance<br />;********************<br /><br />dist:<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,n&nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; cp dist_count,temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh dist_cal<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />dist_cal:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr dist_count<br />&nbsp; &nbsp; &nbsp; &nbsp; inc ddigit_01<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,1<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_reg,ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_write<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,100<br />&nbsp; &nbsp; &nbsp; &nbsp; cp ddigit_01,temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh dist_cal1<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />dist_cal1:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; inc ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,1<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_reg,ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_write<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,2<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_reg,ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_write<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,100<br />&nbsp; &nbsp; &nbsp; &nbsp; cp ddigit_1,temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh dist_cal2<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />dist_cal2:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; inc ddigit_10<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;storing data to EEPROM<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_reg,ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_write<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,2<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_reg,ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_write<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,3<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr,temp<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_reg,ddigit_10<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eeprom_write<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp1,100<br />&nbsp; &nbsp; &nbsp; &nbsp; cp ddigit_10,temp1<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh dist_cal3<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />dist_cal3:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr dist_count<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; clr ddigit_10<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br /><br /><br />;********************<br />;Initializes distance registers values to <br />;previously stored value in EEPROM<br />;********************<br />eeprom_read:<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; cli<br />&nbsp; &nbsp; &nbsp; &nbsp; push temp<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,1<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr, temp<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eep_nr<br />&nbsp; &nbsp; &nbsp; &nbsp; mov ddigit_01, eep_reg<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,2<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr, temp<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eep_nr<br />&nbsp; &nbsp; &nbsp; &nbsp; mov ddigit_1, eep_reg<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp,3<br />&nbsp; &nbsp; &nbsp; &nbsp; mov eep_addr, temp<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall eep_nr<br />&nbsp; &nbsp; &nbsp; &nbsp; mov ddigit_10, eep_reg<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; pop temp<br />&nbsp; &nbsp; &nbsp; &nbsp; sei<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br /><br />;********************<br />;Subroutine to read data from eeprom<br />;eep_addr holds the address of eeprom<br />;eep_reg holds the data read<br />;********************<br />eep_nr:<br />&nbsp; &nbsp; &nbsp; &nbsp; sbic EECR,EERE<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp eep_nr<br />read:<br />&nbsp; &nbsp; &nbsp; &nbsp; out EEAR, eep_addr<br />&nbsp; &nbsp; &nbsp; &nbsp; sbi EECR, EERE<br />&nbsp; &nbsp; &nbsp; &nbsp; nop<br />&nbsp; &nbsp; &nbsp; &nbsp; nop<br />&nbsp; &nbsp; &nbsp; &nbsp; in eep_reg, EEDR<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br /><br />;********************<br />;Subroutine to write data to eeprom<br />;eep_addr holds the address of eeprom<br />;eep_reg holds the data to be written<br />;********************<br />eeprom_write:<br />&nbsp; &nbsp; &nbsp; &nbsp; sbic EECR, EEWE<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp eeprom_write<br />write:<br />&nbsp; &nbsp; &nbsp; &nbsp; out EEAR,eep_addr<br />&nbsp; &nbsp; &nbsp; &nbsp; out EEDR,eep_reg<br />&nbsp; &nbsp; &nbsp; &nbsp; cli<br />&nbsp; &nbsp; &nbsp; &nbsp; sbi EECR,EEMWE<br />&nbsp; &nbsp; &nbsp; &nbsp; sbi EECR,EEWE<br />&nbsp; &nbsp; &nbsp; &nbsp; sei<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br /><br />;********************<br />;Init_Lcd: Initializes the 16 X 2 LCD module in 4 bit data<br />;transfer mode<br />;********************<br />init_lcd:<br />&nbsp; &nbsp; ldi lcd_cmd, 3<br />&nbsp; &nbsp; rcall lcd_low_cmd<br />&nbsp; &nbsp; rcall hi_delay<br /><br />&nbsp; &nbsp; ldi lcd_cmd, 3<br />&nbsp; &nbsp; rcall lcd_low_cmd<br />&nbsp; &nbsp; rcall low_delay<br /><br />&nbsp; &nbsp; ldi lcd_cmd, 3<br />&nbsp; &nbsp; rcall lcd_low_cmd<br />&nbsp; &nbsp; rcall low_delay<br />&nbsp;<br /><br />&nbsp; &nbsp; ldi lcd_cmd, $28&nbsp; &nbsp; ; set 4-bit interface<br />&nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; ldi lcd_cmd, 8&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; set DDRAM address to 00<br />&nbsp; &nbsp; rcall lcd_all_cmd<br /><br />&nbsp; &nbsp; ldi lcd_cmd, $0c&nbsp; &nbsp;<br />&nbsp; &nbsp; rcall lcd_all_cmd<br /><br />&nbsp; &nbsp; ldi lcd_cmd, 6<br />&nbsp; &nbsp; rcall lcd_all_cmd&nbsp; &nbsp;; mode setting<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Print_Lcd: Prints speed and distance on the LCD display module<br />;********************<br /><br />print_lcd:<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd, $80<br />&nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp, 16<br />&nbsp; &nbsp; mov count, temp<br />&nbsp; &nbsp; ldi ZH, high&#40;msg1*2&#41;<br />&nbsp; &nbsp; ldi ZL, low&#40;msg1*2&#41;<br /><br />more1:<br />&nbsp; &nbsp; &nbsp; &nbsp; lpm<br />&nbsp; &nbsp; mov lcd_dat, r0<br />&nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; adiw ZL, 1<br />&nbsp; &nbsp; dec count<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp, 0<br />&nbsp; &nbsp; cp count, temp<br />&nbsp; &nbsp; brne more1<br /><br />&nbsp; &nbsp; ldi temp, 16<br />&nbsp; &nbsp; &nbsp; &nbsp; mov count,temp<br />&nbsp; &nbsp; ldi lcd_cmd, $c0<br />&nbsp; &nbsp; rcall lcd_all_cmd<br />more2: &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; lpm<br />&nbsp; &nbsp; mov lcd_dat, r0<br />&nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; adiw ZL, 1<br />&nbsp; &nbsp; dec count<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi temp, 0<br />&nbsp; &nbsp; cp count, temp<br />&nbsp; &nbsp; brne more2<br /><br />;####Binary to BCD conversion####<br />&nbsp; &nbsp; &nbsp; &nbsp; clr d2<br />speeddigit:&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;hundredth place value of speed<br />&nbsp; &nbsp; &nbsp; &nbsp; cpi sdigit_1,100<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh sdigit_cal<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp print1<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />sdigit_cal:<br />&nbsp; &nbsp; &nbsp; &nbsp; inc d2&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; subi sdigit_1,100<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp speeddigit&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />print1:<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$86<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,d2<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; mov c1,sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall bcd<br />&nbsp; &nbsp; &nbsp; &nbsp; mov sdigit_1,c1<br />&nbsp; &nbsp; &nbsp; &nbsp; mov c2,d1<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$87&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;tenths place value of speed<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,c2<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$88&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;units place value of speed<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; andi sdigit_1,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,sdigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$8a&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;decimal place value of speed<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; andi sdigit_01,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,sdigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br /><br />;####prints distance####<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; mov c1,ddigit_10<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall bcd<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$c5&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;ten thousandth place of distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,d1<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br /><br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$c6&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;thousandth place of distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,c1<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; mov c1,ddigit_1<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall bcd<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$c7&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;hundredth place value of distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,d1<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br /><br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$c8&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;Tenth place value of distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,c1<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; mov c1,ddigit_01<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall bcd<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$c9&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;Units place value of distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,d1<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi lcd_cmd,$cb&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ;decimal place of distance<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_cmd&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp; mov lcd_dat,c1<br />&nbsp; &nbsp; &nbsp; &nbsp; andi lcd_dat,$0f<br />&nbsp; &nbsp; &nbsp; &nbsp; ori lcd_dat,$30<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall lcd_all_dat<br />&nbsp; &nbsp; &nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br /><br />;********************<br />;Binary to BCD conversion<br />;********************<br />bcd:<br />&nbsp; &nbsp; &nbsp; &nbsp; clr d1<br />bcddigit:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; cpi c1,10<br />&nbsp; &nbsp; &nbsp; &nbsp; brsh bcd_cal<br />&nbsp; &nbsp; &nbsp; &nbsp; ret<br />&nbsp; &nbsp; &nbsp; &nbsp;<br />bcd_cal:<br />&nbsp; &nbsp; &nbsp; &nbsp; inc d1&nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; subi c1,10&nbsp; &nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; rjmp bcddigit<br /><br /><br />;********************<br />;Low_Delay: A 250 us delay<br />;********************<br />low_delay:<br />&nbsp; &nbsp; &nbsp; &nbsp; push low_del<br />&nbsp; &nbsp; &nbsp; &nbsp; push hi_del<br />&nbsp; &nbsp; ldi low_del, 20<br />ld_hi: &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; ldi hi_del, 10<br />loop_in:<br />&nbsp; &nbsp; dec hi_del<br />&nbsp; &nbsp; cpi hi_del, 0<br />&nbsp; &nbsp; brne loop_in<br />&nbsp; &nbsp; dec low_del<br />&nbsp; &nbsp; cpi low_del, 0<br />&nbsp; &nbsp; brne ld_hi<br />&nbsp; &nbsp; pop hi_del<br />&nbsp; &nbsp; pop low_del<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Hi_Delay: A 5 ms delay<br />;********************<br />hi_delay:<br />&nbsp; &nbsp; ldi low_del, 25<br />more_call:<br />&nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; dec low_del<br />&nbsp; &nbsp; cpi low_del, 0<br />&nbsp; &nbsp; brne more_call<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Lcd_Low_Cmd: Sends a command to higher 4 bits of the LCD.<br />;The command nibble must be in the lower nibble of the<br />;variable 'lcd_cmd'<br />;********************<br />lcd_low_cmd:<br />&nbsp; &nbsp; mov temp, lcd_cmd<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; andi temp, $f0<br />&nbsp; &nbsp; out PORTB, temp<br />&nbsp; &nbsp; ori temp, $08<br />&nbsp; &nbsp; out PORTB, temp<br />&nbsp; &nbsp; andi temp, $f7<br />&nbsp; &nbsp; out PORTB, temp<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Lcd_All_Cmd: sends an 8 bit command to the LCD<br />;********************<br />lcd_all_cmd:<br />&nbsp; &nbsp; push lcd_cmd<br />&nbsp; &nbsp; lsr lcd_cmd<br />&nbsp; &nbsp; lsr lcd_cmd<br />&nbsp; &nbsp; lsr lcd_cmd<br />&nbsp; &nbsp; lsr lcd_cmd<br />&nbsp; &nbsp; rcall lcd_low_cmd<br />&nbsp; &nbsp; pop lcd_cmd<br />&nbsp; &nbsp; andi lcd_cmd, $0f<br />&nbsp; &nbsp; rcall lcd_low_cmd<br />&nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Lcd_All_Dat: Sends a data byte to the LCD. The data byte<br />;is stored in variable 'lcd_dat'<br />;********************<br />lcd_all_dat:<br />&nbsp; &nbsp; push lcd_dat<br />&nbsp; &nbsp; lsr lcd_dat<br />&nbsp; &nbsp; lsr lcd_dat<br />&nbsp; &nbsp; lsr lcd_dat<br />&nbsp; &nbsp; lsr lcd_dat<br />&nbsp; &nbsp; andi lcd_dat, $0f<br />&nbsp; &nbsp; rcall lcdlowdat<br />&nbsp; &nbsp; pop lcd_dat<br />&nbsp; &nbsp; andi lcd_dat, $0f<br />&nbsp; &nbsp; rcall lcdlowdat<br />&nbsp; &nbsp; rcall low_delay<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Lcd_Low_Dat: Sends a data nibble to higher 4 bits of the <br />;LCD. The data nibble must be in the lower nibble of the<br />;variable 'lcd_dat'<br />;********************<br />lcdlowdat:<br />&nbsp; &nbsp; mov temp, lcd_dat<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; lsl temp<br />&nbsp; &nbsp; andi temp, $f0<br />&nbsp; &nbsp; ori temp, $04<br />&nbsp; &nbsp; out PORTB, temp<br />&nbsp; &nbsp; ori temp, $08<br />&nbsp; &nbsp; out PORTB, temp<br />&nbsp; &nbsp; andi temp, $f7<br />&nbsp; &nbsp; out PORTB, temp<br />&nbsp; &nbsp; ret<br /><br />;********************<br />;Message #1<br />;********************<br />msg1: .db "SPEED= &nbsp; . Km/hrDIST= &nbsp; &nbsp; . Km &nbsp;"<br />; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;12345678123456781234567812345678 <br />&nbsp;</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>Ajay</dc:creator>
						<dc:subject></dc:subject>
						<description>mail me stuff (circuit + code + hex + little discription) along with the bug detail you said..waiting for your mail.</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>۞ TPS ۞</dc:creator>
						<dc:subject></dc:subject>
						<description>yes why not</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>GioppY</dc:creator>
						<dc:subject></dc:subject>
						<description>When i was young i developped this circuit for my bicycle.Sorry i have not mplab installed on my pc and i can't generate the hex.Anyway must be assembled with the real wheel circumference.N.B. Low battery is not managedRegards tacho_asm.zip</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>Ajay</dc:creator>
						<dc:subject></dc:subject>
						<description>lol young means? how old  Nice we have two tachometer projects lol1 i have MPlab i will compile it for you.</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>GioppY</dc:creator>
						<dc:subject></dc:subject>
						<description>Thank Ajay ! When you assemble the code do not forget to disable the case sensitive option.Regards</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>Ajay</dc:creator>
						<dc:subject></dc:subject>
						<description>case sensitive option? where?</description>
						</item>
						<item rdf:about="http://www.8051projects.net/forum-t10569.html">
						<title>Re:  digital speedometer with  kilometer</title>
						<link>http://www.8051projects.net/forum-t10569.html</link>
						<dc:date>2008-12-01T23:20:17-08:00</dc:date>
						<dc:creator>۞ TPS ۞</dc:creator>
						<dc:subject></dc:subject>
						<description>ajay can u see upper portin of your massage as vel as all over te forum is blank</description>
						</item>
				</rdf:RDF>