Народ, дали листинк програнны обработки семисегментного кода, дали для того что бы я нашел ошибку, перепроверил все 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
|