ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
26529 Топик полностью
vasiliy555 (18.04.2005 19:20, просмотров: 1) ответил mooh на нужно читать от и до, а не по диагонали
Ответ: ну не правда ну не пишет слейв в SPDR и всё тут... хоть вдоль хоть поперек читай --------------------------- это слейв --------------------------- pcon EQU 87h; SPCR DATA 0D5H SPSR DATA 0AAH SPDR DATA 086H MOSI BIT P1.5 MISO BIT P1.6 SCK BIT P1.7 SS BIT P1.4 transmit_completed BIT 20H.1; serial_data data 30H; receive_data data 31H; examp data 32H ORG 0000H ;[] JMP INIT ;[]начало ORG 0003H ;[] external interrupt 0 vector reti ;[] undefined ORG 000BH ;[] ;jmp TT0 ;[]прерывание по таймеру T0 reti ORG 0013H ;[] external interrupt 1 vector reti ;[] undefined ORG 001BH ;[] timer 1 overflow vector reti ;JMP TT1 ;[] undefined ORG 0023H ;[] serial I/O interrupt vector ljmp it_SPI ; ;reti ORG 100h ;[]начало программы INIT: ;setb MOSI ;clr MISO ;setb SCK setb SS clr p2.2 ;[1] clr p2.4 ;[1] clr P2.0 mov examp,#55h clr transmit_completed mov SPCR,#11000101b; mov spdr,#01010000b;serial_data setb ES setb EA main: JNB transmit_completed,end_if mov spdr, #55h clr transmit_completed end_if: ljmp main it_SPI: cpl p2.2 ;[1] mov 2dh,SPSR jnb 6fh,break1 setb transmit_completed; cpl p2.4 ;[1] mov receive_data,spdr break1: mov 86h,examp; serial_data reti END --------------------------- --------------------------- это мастер --------------------------- pcon EQU 87h; SPCR EQU 0D5H SPSR EQU 0AAH SPDR EQU 086H MOSI BIT P1.5 MISO BIT P1.6 SCK BIT P1.7 SS BIT P1.4 transmit_completed BIT 20H.1; serial_data equ 30H; data_save equ 31H; data_example equ 32H; ORG 0000H ;[] JMP INIT ;[]начало ORG 0003H ;[] external interrupt 0 vector reti ;[] undefined ORG 000BH ;[] ; jmp TT0 ;[]прерывание по таймеру T0 reti ORG 0013H ;[] external interrupt 1 vector reti ;[] undefined ORG 001BH ;[] timer 1 overflow vector reti ;JMP TT1 ;[] undefined ORG 0023H ;[] serial I/O interrupt vector ;jmp it_SPI reti ORG 80h ;[]начало программы INIT: ;clr MOSI ;setb MISO ;clr SCK setb SS CLR P1.0 CLR P1.1 mov data_example,#55h ; ;CLR transmit_completed clr sm0 setb sm1 ; задали режим работы 1 setb sm2 clr tr1 ; остановили таймер mov th1,#0FDh ; автозагруж значение для 9600 Бод mov TMOD,#00100001B ; режим автозагрузки таймера 1 setb tr1 ; запустили таймер КОМ-порта mov pcon,#80h ; удвоили скорость до 19200 Бод ; SETB ES ; SETB EA ;[1] Общее разрешение всех прерываний ;===== Инициализация порта mov SBUF,#0c7h ;================================================================= ;===== Конец Инициализации порта ;================================================================= mov SPCR,#01010101b; main: call delay_nop mov spdr,#1ch;data_example break2: mov r7,spsr mov acc,r7 jnb acc.7,break2 mov serial_data,spdr; JNB TI,$ MOV SBUF,serial_data CLR TI JNB TI,$ mov spdr,#0c3h break3: mov r7,spsr mov acc,r7 jnb acc.7,break3 mov serial_data,spdr; JNB TI,$ MOV SBUF,serial_data CLR TI JNB TI,$ mov spdr,#0c4h break4: mov r7,spsr mov acc,r7 jnb acc.7,break4 mov serial_data,spdr; JNB TI,$ MOV SBUF,serial_data CLR TI JNB TI,$ mov spdr,#0c5h break5: mov r7,spsr mov acc,r7 jnb acc.7,break5 mov serial_data,spdr; JNB TI,$ MOV SBUF,serial_data CLR TI JNB TI,$ mov spdr,#0c6h break6: mov r7,spsr mov acc,r7 jnb acc.7,break6 mov serial_data,spdr; JNB TI,$ MOV SBUF,serial_data CLR TI JNB TI,$ stop: ajmp stop send: jnb ti, $ clr ti ret END