ares1998
Newbie level 1
Code ASM - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 org 0000h sjmp start start: mov p1,#0ffh ; initializing port 1 as input lcall none sjmp start none:ret lcall write lcall read lcall none ;********** Write Routine******* write: mov r3,#00h ; mem address high ; is the address in eeprom where data will start mov r4,#00h ;mem address low mov r1,#00h ; byte to be send to eeprom is stored in r1 lcall bytewr ret bytewr: lcall eepstart ; start to write mov a,#0a0h ; eeprom write command lcall send mov a,r3 lcall send mov a,r4 lcall send mov a,r1 lcall send lcall stop ;stop ret ;********Transmission of data one by one******** send: mov r2,#08h ; data transmission for 8 bits bck: rlc a jc bck1 clr p1.1 ; if carry low clear data setb p1.0 clr p1.0 djnz r2,bck sjmp ack bck1: setb p1.1 ;if carry high set data setb p1.0 clr p1.0 djnz r2,bck ;******** acknowledgement from eeprom********* ack: ;ack from eeprom setb p1.0 clr p1.0 ret ;*******read data routine******** read: mov r3,#00h mov r4,#00h lcall byterd mov r1,a ret byterd: lcall eepstart ; start to read mov a,#0a0h lcall send mov a,r4 lcall send lcall stop lcall cread ret cread: lcall eepstart mov a,#0a1h ;read command lcall send lcall recv mov r1,a ; store data lcall stop ; stop ret ;**********receving data one by one******** recv: mov r2,#08h setb p1.1 rec: clr p1.0 setb p1.0 clr c jnb p1.1,rec1 cpl c rec1: rlc a djnz r2,rec clr p1.0 ret ;******** Start routine******** eepstart: setb p1.1 ; high to low transistion of data with high clock clr p1.0 setb p1.0 clr p1.1 clr p1.0 ret ; ***********Stop routine******** stop: clr p1.1 ; low to high transistion of data with high clock setb p1.0 setb p1.1 ret end
Last edited by a moderator: