Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
10/16/08 18:22
Read: times


 
#159123 - Code
Responding to: ???'s previous message
Here is the code.



t0loop 			equ 25h
segundo 		equ 26h
horimetro1 		equ 27h
horimetro2 		equ 28h
horimetro3 		equ 29h
funcionamento 	        equ 30h			
partconc 		equ 31h			
niveltanque 	        equ 32h			
posicao 		equ 33h
i2cdp			equ 34h
i2cadd			equ 35h
cdcadd			equ 36h
i2ctask			equ 37h			
i2cdatacnt		equ 38h
LCD     		equ P1          
BUSY    		equ p1.7       
E      		 	equ P3.7        
RS      		equ P3.5        
RW      		equ P3.6        
i2crw			bit 20h
i2cbusy			bit 21h
delta 			equ p2.0
estrela 		equ p2.1


org 0000h						
jmp inicio

org 0003h						

org 000bh						
jmp timer0						


org 0023h						
jmp serialint

org 0043h
jmp i2c

org 004bh						


inicio:							
mov ien0,#10010010b				
mov ien1,#00000010b
mov ipl0,#00000010b				
mov tmod,#00100001b				
mov scon,#01000000b				
mov pcon,#00000000b				
mov sscon,#01000000b			
clr i2cbusy						
mov ssdat,#00					
mov th1,#050h					
mov th0,#7dh					
mov tl0,#0c9h					
mov sp,#50h						
mov t0loop,#50					
mov funcionamento,#00h			
mov partconc,#00				
call dispinit				
setb tr1
mov horimetro1,#00
mov horimetro2,#00
mov horimetro3,#00

call cdcreset
call delay50
call delay50
call cdcinit

cap:
call delay50
call delay50
call capacitancia
call capdisp
call delay500
call delay50
call delay50
jmp cap

capacitancia:
jb i2cbusy,$
setb i2cbusy
mov i2cadd,#90h
mov cdcadd,#01h
mov i2cdp,#40h
mov i2ctask,#83h
mov a,i2ctask
anl a,#0fh
mov i2cdatacnt,a			
mov ssdat,#00h
orl sscon,#20h
ret

capdisp:
call dispclear
mov posicao,#40h
call disppos

mov r1,#40h
mov a,i2ctask
anl a,#0fh
mov r6,a
loopvalores:

mov a,@r1
call dispascii
inc r1
djnz r6,loopvalores
mov posicao,#00h
call disppos
ret

cdcreset:
jb i2cbusy,$
setb i2cbusy
mov i2cadd,#90h
mov cdcadd,#0bfh
mov i2ctask,#01h
mov ssdat,#00h
orl sscon,#20h
ret

startcap:
jb i2cbusy,$
setb i2cbusy
mov 40h,#11h
mov i2cadd,#90h
mov cdcadd,#0ah
mov i2cdp,#40h
mov i2ctask,#00h
mov ssdat,#00h
orl sscon,#20h
call delay50
ret

stopcap:
jb i2cbusy,$
setb i2cbusy
mov 40h,#10h
mov i2cadd,#90h
mov cdcadd,#0ah
mov i2cdp,#40h
mov i2ctask,#00h
mov ssdat,#00h
orl sscon,#20h
call delay50
ret

cdcrdy:
jb i2cbusy,$
setb i2cbusy
mov i2cadd,#90h
mov cdcadd,#00h
mov i2cdp,#40h
mov i2ctask,#81h
mov ssdat,#00h
orl sscon,#20h
mov a,40h
jb acc.2,cdcrdy
ret

cdcinit:						
jb i2cbusy,$
setb i2cbusy
mov 40h,#81h
mov i2cadd,#90h
mov cdcadd,#07h
mov i2cdp,#40h
mov i2ctask,#00h
mov ssdat,#00h
orl sscon,#20h
call delay50

jb i2cbusy,$
setb i2cbusy
mov 40h,#01h
mov i2cadd,#90h
mov cdcadd,#09h
mov i2cdp,#40h
mov i2ctask,#00h
mov ssdat,#00h
orl sscon,#20h
call delay50

jb i2cbusy,$ 
setb i2cbusy
mov 40h,#11h
mov i2cadd,#90h
mov cdcadd,#0ah
mov i2cdp,#40h
mov i2ctask,#00h
mov ssdat,#00h
orl sscon,#20h
jb i2cbusy,$ 
call delay50
ret

i2c:
push acc
push psw
push 00h
push 06h
push 07h


mov r7,sscs

cjne r7,#00,end00
clr i2cbusy
jmp i2cexit
end00:

cjne r7,#08,end08
anl sscon,#~20h
mov ssdat,i2cadd
orl sscon,#04h

jmp i2cexit

end08:
cjne r7,#10h,end10

anl sscon,#~20h
inc i2cadd
mov ssdat,i2cadd
orl sscon,#04h
jmp i2cexit

end10:
cjne r7,#18h,end18


mov ssdat,cdcadd
orl sscon,#04h
orl i2ctask,#20h
jmp i2cexit

end18:
cjne r7,#28h,end28

mov a,i2ctask
jnb acc.7,writedata
orl sscon,#20h
jmp i2cexit
writedata:
mov a,i2ctask
jb acc.0,sendstop
jb acc.4,sendstop
mov ssdat,40h

orl sscon,#04h
orl i2ctask,#10h
jmp i2cexit
sendstop:
orl sscon,#10h 				
orl i2ctask,#10h
clr i2cbusy
jmp i2cexit

end28:
cjne r7,#40h,end40


djnz i2cdatacnt,j8
anl sscon,#0c3h			;receba dado e mande !ACK
jmp i2cexit
j8:
orl sscon,#04h			;receba dado e mande ACK
jmp i2cexit

end40:
cjne r7,#50h,end50

mov r0,i2cdp
mov @r0,ssdat
inc i2cdp
djnz i2cdatacnt,j7
anl sscon,#0c3h
jmp i2cexit

j7:
orl sscon,#04h
jmp i2cexit


end50:
cjne r7,#58h,end58


mov r0,i2cdp
mov @r0,ssdat
inc i2cdp
orl sscon,#10h
clr i2cbusy


end58:
i2cexit:
anl sscon,#~08h
pop 07h
pop 06h
pop 00h
pop psw
pop acc
reti



List of 12 messages in thread
TopicAuthorDate
TWI and AD7745 with 5131            01/01/70 00:00      
   where is main routine?            01/01/70 00:00      
      Routines            01/01/70 00:00      
         lack ot time ????            01/01/70 00:00      
            License on I2C            01/01/70 00:00      
            Code            01/01/70 00:00      
               Slave?            01/01/70 00:00      
                  Master            01/01/70 00:00      
            TWI is a very common "generic" name for I2C-compat            01/01/70 00:00      
               I do not think so            01/01/70 00:00      
                  Oh yes it is! (with examples)            01/01/70 00:00      
                     Don't want to fight a lawyer            01/01/70 00:00      

Back to Subject List