Народ, дали листинк програнны обработки семисегментного кода, дали для того что бы я нашел ошибку, перепроверил все 1000 раз но ничего не нашел, программа не работает - проверенно......
вот текст помогите!!!!!
=============================================
LIST p=16F84
__CONFIG 03FF9H
;=============================================
; Стандартный заголовок
;=============================================
IndF equ 00h ; Доступ к памяти через FSR
Timer0 equ 01h ; TMR0
OptionR equ 01h ; Option (RP0=1)
PC equ 02h ; Счетчик команд
Status equ 03h ; Status
FSR equ 04h ; Регистр косвенной адресации
PortA equ 05h ; Port A
TrisA equ 05h ; Tris A - RP0=1
PortB equ 06h ; Port B
TrisB equ 06h ; Tris B - RP0=1
EEData equ 08h ; EEPROM Data
EECon1 equ 08h ; EECON1 - RP0=1
EEAdr equ 09h ; EEPROM Address
EECon2 equ 09h ; EECON2 - RP0=1
;=============================================
; Результат в
W equ 0 ; аккумуляторе
F equ 1 ; регистре
;
;=============================================
; Flag bits:
CF equ 0 ; Carry
DC equ 1 ; DC
ZF equ 2 ; Zero
RP0 equ 5
;==============================================
;==============================================================
; Работа с EEPROM 93с46
; Входые точки :
; read
; (adr-адрес читаемой ячейки)->data1 полученные данные
; write
; (adr-адрес записываемой ячейки data1 записываемые данные)
; rease
; (adr-адрес стираемой ячейки)
;===============================================================
CS equ 0
SK equ 1
DI equ 2
DO equ 3
Temp equ 0Ch
countcmd equ 0dh
snddata equ 0eh
comand equ 0fh
adr equ 10h
sdata equ 11h
data1 equ 12h
;=====================================================
; Инициализация
;=====================================================
eeprinit
clrf PortA ; RA0..RA3 = 0
bsf Status,RP0
movlw b'00001000'
movwf TrisA ; RA0-RA3 output RA4in
;==============================================================
; Входнае подпрограммы
;==============================================================
read
movlw b'0110'
movwf comand
call SendCMD
call SendADR
call ReadData
return
write
movlw b'0101'
movwf comand
call SendCMD
call SendADR
call SendData
return
erase
movlw b'0111'
movwf comand
call SendCMD
call SendADR
return
;====================================
; Подпрограммы работы с EEPROM
;===================================
ReadData
movlw 08h
movwf countcmd
call readeepr
return
SendData
movf data1,W
movwf snddata
movlw 08h
movwf countcmd
call sndeepr
return
;==== В регистре adr адрес
SendADR
movf adr,W
movwf snddata
rlf snddata,f
movlw 06h
movwf countcmd
call sndeepr
return
;=== В регисте comand команда
SendCMD
movf comand,W
movwf snddata
rlf snddata,F
rlf snddata,F
rlf snddata,F
rlf snddata,F
movlw 04h
movwf countcmd
call sndeepr
return
;======================================================
; посыка последовательного кода в EEPROM
;======================================================
sndeepr
bsf PortA,CS ;cs -> 1
bcf PortA,SK ;sk -> 0
call sndeprom
return
lsc
bsf PortA,SK ; sk -> 1
rlf snddata,F ; [1]
incfsz countcmd,F ; [2]
return
nop
nop
nop
bcf PortA,SK ;SK->0
sndeprom ; [7]
btfsc snddata,7 ;пропустить если 0 [2]
goto di1 ; [2]
goto di0 ; [2]
di1 bsf PortA,DI ;DI -> 1 [1]
goto lsc ; [2]
di0 bcf PortA,DI ;DI -> 0 [1]
goto lsc ; [2]
;=============================================
; Чтение последовательны данных из EEPROM
;=============================================
readeepr
bsf PortA,SK ; sk -> 1 ; [1]
rlf data1,F ; [2]
btfsc PortA,DO ; [?]
goto do1 ; [4]
goto do0 ; [5]
do1 incf data1,F ; [6]
goto rc ; [7]
do0 nop ; [6]
nop ; [7]
rc
bcf PortA,SK ;SK->0 ; [1]
incfsz countcmd,F ; ; [?]
return ; [3]
nop ; [4]
nop
nop
goto readeepr ; [7]
;===============================================
; Конец подпрограм работы с ЕЕПРОМ
;===============================================
end