Цитата(Scorpline @ Nov 24 2007, 21:06)

Нужна помощь с настройкой(8051F120)...может не так что сконфигурировал, или код не так написал. Надо переслать значения с пары регистров adc0h и adc0l
Вот так настроил...
MOV XBR0, #02h
.................
CLR SPIEN
MOV SPI0CKR, #40h
MOV SPI0CFG, #40h
MOV SPI0CN, #01h
.................
Можно ли так....? я просто вызываю в теле программы call SPI_MODE
SPI_MODE:
MOV SPI0DAT,adc0h
ONE_BYTE:
JB SPIF,NEXT2
JMP ONE_BYTE
NEXT2:
MOV SPI0DAT,adc0l
TWO_BYTE:
JB SPIF,ENDING_1
JMP TWO_BYTE
ENDING_1:
RET
тогда регистры после запуска программы устанавливаются:
SPI0CFG =C7
SPI0CN=C1 -устанавливает флаг ошибки записи(незавершенная передача)
SPI0CKR=40
SPI0DAT=FF - а сюда вообще ничего не попало..... с adc0h или adc0l
Может кто поможет с написанием.... или хоть что подскажет
Не делал на асме, но в принципе, не вижу причин, по которым код на Си трудно было бы перевести. Я работал с SPI так:
Инициализация:
#define SPI_PORT P0
#define SPI_MISO_BIT 3
#define SPI_MOSI_BIT 4
#define SPI_SCK_BIT 2
#define SPI_NSS_BIT 5
// SPI0CFG
#define SPI_MODE0 0x00 // CKPHA = 0, CKPOL = 0
#define SPI_MODE1 0x10 // CKPHA = 0, CKPOL = 1
#define SPI_MODE2 0x20 // CKPHA = 1, CKPOL = 0
#define SPI_MODE3 0x30 // CKPHA = 1, CKPOL = 1
#define SPI_PORT_MODE P0MDOUT
#define SPI_MISO_MODE_MASK 0x08
#define SPI_MOSI_MODE_MASK 0x10
#define SPI_SCK_MODE_MASK 0x04
#define SPI_NSS_MODE_MASK 0x20
//SPI0CFG
#define SPIBSY 0x80
#define MSTEN 0x40
// SPI0CN
#define SPIEN 0x01
#define NSSMD1 0x08
#define NSSMD0 0x04
// SPI0CKR
#define SPI_Baud(baud) (XTAL/2L/baud-1)
#define SPI_MINBAUD 0xFF
#define SPI_MAXBAUD 0x00
SFRPAGE=CONFIG_PAGE;
SPI_PORT|=(1<<SPI_MISO_BIT)|(1<<SPI_MOSI_BIT)|(1<<SPI_SCK_BIT)|(1<<SPI_NSS_BIT);
SPI_PORT_MODE&=~(SPI_MISO_MODE_MASK|SPI_MOSI_MODE_MASK);
SPI_PORT_MODE|=SPI_SCK_MODE_MASK|SPI_NSS_MODE_MASK;
SFRPAGE=SPI0_PAGE;
SPI0CFG=config|MSTEN;
SPI0CKR=baud;
SPI0CN=SPIEN|NSSMD1|NSSMD0;
Запись-чтение байта:
SFRPAGE=SPI0_PAGE;
while (SPI0CFG&SPIBSY);
SPI0DAT=dataByte;
while (SPI0CFG&SPIBSY);
dataByte=SPI0DAT;
Если не поможет - пишите, будем думать дальше. Может, с SFRPAGE проблемы?