S
seemanta
Guest
Привет,
Я использую следующие программы для чтения / записи с / на датчик температуры DS1820.
Я могу отправить импульс сброса, а также возможность получить наличие импульса.
Однако, при отправке читать блокнот команду 0BEh, это не работает, потому как в таблице, я должен получить значение как 50H.Я только получать FFh что не соответствует действительности.
Я размещении кода, я был бы признателен, если кто-то может смотреть на нее и дайте мне знать, что это ошибка, которую я делаю.
SEND_BYTE и GET_BYTE основные подпрограммы для записи / чтения одного байта из DS1820.Остаются только вспомогательные процедуры.Кроме того, на данный момент, я опуская DELAY подпрограмм.В принципе, я использовал обычные задержки для генерации автобус таймингов.
И да, чуть не забыл упомянуть, I / O P2.5 линия является одной подключен к линии DQ из DS1820.
Код:SEND_BYTE:; данные для отправки И.С. в
MOV R0, # 8
_start: JB ACC.0, SEND_1
LCALL WRITE_0
JMP FWD
SEND_1: LCALL WRITE_1
FWD: Р.
DJNZ R0, _start
RETGET_BYTE:; Считанные данные будут возвращены в
MOV B, # 00H
MOV R0, # 3
MOV R1, # 3
_START2:
LCALL read_data
ANL A, # 20H
НАЗАД: RL
DJNZ R0, НАЗАД
ORL B,
INC R1
MOV A, R1
MOV R0, A; R1 и R0 такие же, сейчас, готов к следующему циклу.
XRL, # 11
JNZ _START2
MOV A, B
RETWRITE_0:
CLR P2.5
LCALL DELAY_65US
SETB P2.5
RETWRITE_1:
CLR P2.5
LCALL DELAY_12US
SETB P2.5
RETRead_data:
CLR P2.5
NOP; около 1US DELAY (1,085 США, если быть точным)
NOP
SETB P2.5, автобус RELEASED СЕЙЧАС
NOP
NOP
MOV A, P2; чтения данных
SETB P2.5; SET BUS Высокий государства вновь
RET
Я использую следующие программы для чтения / записи с / на датчик температуры DS1820.
Я могу отправить импульс сброса, а также возможность получить наличие импульса.
Однако, при отправке читать блокнот команду 0BEh, это не работает, потому как в таблице, я должен получить значение как 50H.Я только получать FFh что не соответствует действительности.
Я размещении кода, я был бы признателен, если кто-то может смотреть на нее и дайте мне знать, что это ошибка, которую я делаю.
SEND_BYTE и GET_BYTE основные подпрограммы для записи / чтения одного байта из DS1820.Остаются только вспомогательные процедуры.Кроме того, на данный момент, я опуская DELAY подпрограмм.В принципе, я использовал обычные задержки для генерации автобус таймингов.
И да, чуть не забыл упомянуть, I / O P2.5 линия является одной подключен к линии DQ из DS1820.
Код:SEND_BYTE:; данные для отправки И.С. в
MOV R0, # 8
_start: JB ACC.0, SEND_1
LCALL WRITE_0
JMP FWD
SEND_1: LCALL WRITE_1
FWD: Р.
DJNZ R0, _start
RETGET_BYTE:; Считанные данные будут возвращены в
MOV B, # 00H
MOV R0, # 3
MOV R1, # 3
_START2:
LCALL read_data
ANL A, # 20H
НАЗАД: RL
DJNZ R0, НАЗАД
ORL B,
INC R1
MOV A, R1
MOV R0, A; R1 и R0 такие же, сейчас, готов к следующему циклу.
XRL, # 11
JNZ _START2
MOV A, B
RETWRITE_0:
CLR P2.5
LCALL DELAY_65US
SETB P2.5
RETWRITE_1:
CLR P2.5
LCALL DELAY_12US
SETB P2.5
RETRead_data:
CLR P2.5
NOP; около 1US DELAY (1,085 США, если быть точным)
NOP
SETB P2.5, автобус RELEASED СЕЙЧАС
NOP
NOP
MOV A, P2; чтения данных
SETB P2.5; SET BUS Высокий государства вновь
RET