您的位置 首页 知识

PIC单片机模仿IIC读写的程序设计

PIC单片机模拟IIC读写的程序设计-;inthebank1

trISAequ85h

trisbequ86h

triscequ87h

pconequ8eh

pie1equ8ch

pr2equ92h

sspaddequ93h

sspstatequ94h

adcon1equ9fh

;I2C总线程序

;thisiseepromread&writeprogramm

;thespecialstoreramunit

wequ0

f0equ0

rtCCequ1

pcequ2

f2equ2

f3equ3

f4equ4

raequ5

rbequ6

rcequ7

pclathequ0ah

iNTConequ0bh

pir1equ0ch

tmr1lequ0eh

tmr1hequ0fh

t1conequ10h

tmr2equ11h

t2conequ12h

sspbufequ13h

sspconequ14h

ccpr1lequ15h

ccpr1hequ16h

ccpconequ17h

adcon0equ1fh

;

;inthebank1

trISAequ85h

trisbequ86h

triscequ87h

pconequ8eh

pie1equ8ch

pr2equ92h

sspaddequ93h

sspstatequ94h

adcon1equ9fh

PIC单片机模仿I%&&&&&%读写的程序设计

;

;——————————————————–

;thegenaralstoreramunit

;

temp6equ76h

temp7equ77h

;

eepCTRequ6dh;eepromcontrolwordsbuffer

eepaddrequ6eh;eepromaddressbuffer

eepdataequ6fh;eepromdatabuffer

;

;——————————————————–

;thebitsoframunit

sclequ3;rc

sdaequ4;rc

;

pdequ3;status

toequ4;status

;

rbifequ0;intcon

inTIfequ1;intcon

rTIfequ2;intcon

rbieequ3;intcon

inTIeequ4;intcon

rTIeequ5;intcon

adieequ6;intcon

gieequ7;intcon

;

;———————————————————-

;Thecontact

sda_inequ10h

sda_outequ00h

;

;———————————————————-

org000h

gotomain_program

;——————————————————–

;theson-programarea

;——————————————————–

org005h

;——————————————————–

make_s

bsfrc,sda

bsff3,5

;bsfrc,sda

MOVlwsda_out

MOVwftrisc

bcff3,5

nop

ack_check

bsff3,5

;bcfrc,sda

MOVlwsda_in

MOVwftrisc

bcff3,5

nop

m_start

bsfrc,scl

nop

btfssrc,sda

gotomake_s

m_start0

bsfrc,scl

bcfrc,sda

bsff3,5

;bsfrc,sda

MOVlwsda_out

MOVwftrisc

bcff3,5

MOVlw10100000b

btfscsign,read_b

MOVlw10100001b

MOVwf6dh

MOVlw6dh

MOVwff4

w_byte

bsff3,5

;bsfrc,sda

MOVlwsda_out

MOVwftrisc

bcff3,5

MOVlw08h

MOVwftemp2

bit_loop

nop

rlff0

bcfrc,scl

btfssf3,0

goto^+3

bsfrc,sda

goto^+2

bcfrc,sda

nop

bsfrc,scl

decfsztemp2

gotobit_loop

nop

bcfrc,scl

bsff3,5

;bcfrc,sda

MOVlwsda_in

MOVwftrisc

bcff3,5

bsfrc,scl

nop

btfscrc,sda

gotom_start0

bcfrc,scl

return

;

w_stop

m_stop

bcfrc,sda

bsff3,5

;bsfrc,sda

MOVlwsda_out

MOVwftrisc

bcff3,5

nop

bsfrc,scl

nop

bsfrc,sda

nop

bcfrc,scl

return

;

rd_bytes

nop

rnxtb

bcfrc,scl

bsff3,5

;bcfrc,sda

MOVlwsda_in

MOVwftrisc

bcff3,5

MOVlw08h

MOVwftemp2

rnx

bcfrc,scl

nop

bcff3,0

btfscrc,sda

bsff3,0

rlff0

bsfrc,scl

nop

decfsztemp2

gotornx

incff4,1

bsff3,5

;bsfrc,sda

MOVlwsda_out

MOVwftrisc

bcff3,5

bcfrc,scl

decfsztemp4

gotot_ackg

r_stop

gotom_stop

t_ackg

bcfrc,sda

nop

bsfrc,scl

nop

gotornxtb

;—————————–

delay_1ms

MOVlw.1

MOVwftemp6

delay_publIC

MOVlw.223

MOVwftemp7

public_2

clrwdt

decfsztemp7,1

gotopublic_2

decfsztemp6,1

gotodelay_public

return

;—————————–

;—————————–

;themainprogramarea

;—————————–

main_program

bsff3,5

MOVlw0fh

MOVwf81h

MOVlwsda_in

MOVwftrisc

bcff3,5;bank0

reset_delay

MOVlw20h

MOVwff4

next

clrff0

incff4,1

MOVlw80h;clr20h–7fhram

clrz

xorwff4,w

skpz

gotonext

;———————–

clrfintcon

bsff3,5

MOVlw0fh

MOVwf81h

bcff3,5;bank0

;

;—————————

read_eeprom_repair

bcfrc,eneep

calldelay_1ms

;

callack_check

MOVfaddress,0

MOVwf6eh

incff4

callw_byte

bsfsign,read_b

callack_check

bcfsign,read_b

MOVlw20h

MOVwff4

MOVlw.8

MOVwftemp4

callrd_bytes

nop

nop

nop

nop

calldelay_1ms

bsfrc,eneep

;

write_eeprom_repair

bcfrc,eneep

calldelay_1ms

;

callack_check

MOVfaddress,0

MOVwf6eh

incff4

callw_byte

MOVlw40h

MOVwff4

MOVlw.8

MOVwftemp4

write_option

callw_byte

incff4,1

decfsztemp4

gotowrite_option

callw_stop

nop

nop

nop

nop

calldelay_1ms

bsfrc,eneep

;

loop

gotoloop

end

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/345743.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部