![]() |
Блин , всё равно странно ведет себя
прога байт состояния правильно считывает а подключаю оссцил и непонимаю как она это считала ... счас будут слайды ... |
Quote:
20 LOAD""CODE 30 PRINT USR 15619:REM:SAVE"AYSPI00"CODE 40872,4907 потом любым дискедитором меняешь разширение на A и грузишь в тасм |
;SUB AYVER ; BFFD -<FROM REGISTER ->SET REGISTER
; C 7FFD ->DATA TO REGISTER ; 4 BIT RES GFX ; 5 --- SI ; 6 --- SCK ; 7 --- CS ; B ; 0 BIT SO ;COMMANDS RDSR EQU #05 WRSR EQU #01 READ EQU #03 WRITE EQU #02 WREN EQU #06 WRDI EQU #04 ORG #8000 DI CALL INI_SPI CALL READ_ST LD HL,DATA_IN LD C,(HL) LD B,0 EI RET DATA_IN ! SHIT !0 DATA_OU ! SHIT !0 INI_SPI PUSH AF PUSH BC LD BC,65533 LD A,7 ;-7 REG MUST 10XXXXXX OUT (C),A LD BC,49149 LD A,128 ;1000000 OUT (C),A ;-------------------------------- LD BC,65533 LD A,15 ;B OUTPUT OUT (C),A ;SET FOR OUTPUT ; B FOR UTPUT LD A,%10110000 ;CS-H SCK-L SI-H LD BC,49149 OUT (C),A POP BC POP AF RET SH_IN NOP ;GET DATA TO A PUSH BC PUSH HL LD HL,DATA_IN LD (HL),0 NOP ;MSB FIRST LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET7 RES 7,(HL) JR RES7 SET7 SET 7,(HL) RES7 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET6 RES 6,(HL) JR RES6 SET6 SET 6,(HL) RES6 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET5 RES 5,(HL) JR RES5 SET5 SET 5,(HL) RES5 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET4 RES 4,(HL) JR RES4 SET4 SET 4,(HL) RES4 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET3 RES 3,(HL) JR RES3 SET3 SET 3,(HL) RES3 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET2 RES 2,(HL) JR RES2 SET2 SET 2,(HL) RES2 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET1 RES 1,(HL) JR RES1 SET1 SET 1,(HL) RES1 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- LD A,%00110000 ;SCK LOW CALL OUT_B CALL IN_A RRA ;--->cy-DATA 7 BIT JR C,SET0 RES 0,(HL) JR RES0 SET0 SET 0,(HL) RES0 NOP LD A,%01110000 ;SCK HI CALL OUT_B NOP ;--------------------------------------------- NOP LD A,(HL) POP HL POP BC ; EI RET SH_OUT NOP ; ->DEVICE PUSH AF PUSH BC PUSH HL LD HL,DATA_OU NOP ;MSB FIRST LD A,%00000000 ;CS-LOW SCK 0 SI ; ;CS SCK SI RGFX ; CALL OUT_B BIT 7,(HL) JR Z,BIT7L LD A,%00110000 ;SI HIGH JR BIT7H BIT7L LD A,%00010000 ;CS 0 SCK 0 SI 0 BIT7H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 6,(HL) JR Z,BIT6L LD A,%00110000 ;HIGH JR BIT6H BIT6L LD A,%00010000 BIT6H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 5,(HL) JR Z,BIT5L LD A,%00110000 ;HIGH JR BIT5H BIT5L LD A,%00010000 BIT5H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 4,(HL) JR Z,BIT4L LD A,%00110000 ;HIGH JR BIT4H BIT4L LD A,%00010000 BIT4H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 3,(HL) JR Z,BIT3L LD A,%00110000 ;HIGH JR BIT3H BIT3L LD A,%00010000 BIT3H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 2,(HL) JR Z,BIT2L LD A,%00110000 ;HIGH JR BIT2H BIT2L LD A,%00010000 BIT2H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 1,(HL) JR Z,BIT1L LD A,%00110000 ;HIGH JR BIT1H BIT1L LD A,%00010000 BIT1H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP ;------------------------- LD A,%00110000 ;CS-LOW SCK 0 SI CALL OUT_B BIT 0,(HL) JR Z,BIT0L LD A,%00110000 ;HIGH JR BIT0H BIT0L LD A,%00010000 BIT0H NOP CALL OUT_B SET 6,A ;CS0 SCK1 SI1 CALL OUT_B ;SETB SCK NOP RES 6,A ; !!!!!!!!!!!!!!!!!!!!! CALL OUT_B POP AF POP HL POP BC RET READ_ST DI ;READ STATUS PUSH AF PUSH BC PUSH HL LD A,%00000000 ;CS-LOW SCK 0 SI CALL OUT_B ;CLR CS LD A,RDSR LD HL,DATA_OU LD (HL),A CALL SH_OUT CALL SH_IN ;DATA IN DATA_IN LD A,%10110000 ;CS-LOW SCK 0 SI CALL OUT_B ;DESELECT POP HL POP BC POP AF RET ;AY SUBS ; OUT_B NOP ;SEND DATA IN A TO PORT B PUSH BC PUSH AF LD BC,65533 LD A,15 ; B PORT OUT (C),A LD BC,49149 POP AF OUT (C),A POP BC RET IN_A NOP ; READ DATA FROM A RETURNS A PUSH BC LD BC,65533 LD A,14 ; APORT OUT (C),A IN A,(C) POP BC RET |
короче теперь такая фишка - с одним щупом подключенным на sck или на SO
читает правильно стоит подключить второй щуп - начинает считывать ерунду :v2_down: |
Quote:
|
Quote:
|
Another day - another demo =(
Вобщем освоил чтение и запись пытаюсь разобюратся с защитой от записи получается такая штука говорю ему сними защиту { разреши запись , запиши в статусный регистр 80 h считай состояние статуса , если равно , приступай к записи ) всё происходит .... читаю потом микросхему на программаторе считывает область с 0000 до 02FF и останавливается , говорит типа произошла ошибка данные с 0000 по 02ff соответствуют тому , что писалось ... но вывести микросхему из такого ступора удаётся лишь приминив команду полное стирание .... как работать с защитой ? |
вобщем с защитой тоже всё работает , оказаллось меньше дергать микруху ркуой надо .
впоследствии код был переписан для работы через ВВ55 . если найду выложу . |
| All times are GMT +4. The time now is 17:13. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.