[an error occurred while processing this directive]
|
спасибо что откликнулись - уже дней 5 сижу настраиваю.
кусок кода для мастера
init:
setb ao
mov p2,#080h ;пишем в регистр S1 - следующий байт будет в s0
;-----
clr ao
mov p2,#01h; пишем в s0 адрес мастера
;-----
setb ao
mov p2,#0a0h; пишем в s1 - следующий байт будет писаться в S2 (часы)
;-------
clr ao
mov p2,#013h; пишем в S2 делитель для часов
;----
setb ao
mov p2,#0c1h ; включаем и2с
;-main
main:
clr ao
mov p2,#0aah ; загружаем адрес slave c которого хотим считать
read:
; читаем s1
clr c ; проверка занятости шины
setb ao
mov a,p2
mov c,acc.0
jnc read
clr c
;-------
setb ao
mov p2,#0c5h ;генерируем старт посылаем адрес slave и тд
mov r5,#00h
;r5-counter - n
;r6-m - нужно принять (2 байта)
readpin:
clr c ; проверяем PIN
mov a,p2
mov c,acc.7
jc readpin
mov c,acc.3 ; проверка нет ли ошибок
jc pod1
mov a,r1
subb a,#01h ; сравниваем количество принятых байт с тем
clr c ; количеством, которое надо принять
jz pod
clr ao
mov a,p2; считываем данные data
mov p3,a
inc r5
ljmp readpin
pod:
setb ao
mov p2,#040h ; ACK в 0
;-
clr ao
mov a,p2 ;
;---
setb ao
pp:
clr c
mov a,p2
mov c,acc.7
jc pp
pod1:
setb ao
mov p2,#0c3h ; генерим сигнал стоп
clr ao
mov a,p2 ; принимаем последний байт
mov p3,a ; выводм его на порт
ljmp main
E-mail: info@telesys.ru