реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Не разобраться с SPI, 8051F120
Scorpline
сообщение Nov 24 2007, 19:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 25-10-07
Пользователь №: 31 737



Нужна помощь с настройкой(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

Может кто поможет с написанием.... или хоть что подскажет
Go to the top of the page
 
+Quote Post
Polaris
сообщение Nov 29 2007, 14:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(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 проблемы?
Go to the top of the page
 
+Quote Post
Scorpline
сообщение Nov 29 2007, 21:36
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 25-10-07
Пользователь №: 31 737



Цитата(Polaris @ Nov 29 2007, 17:59) *
Если не поможет - пишите, будем думать дальше. Может, с SFRPAGE проблемы?

Спасибо... Вроде разобрался. получилось так....
//Инициализация
MOV SFRPAGE,#0fH
MOV XBR0, #02h
MOV SFRPAGE,#00H
CLR SPIEN
MOV SPI0CKR, #40h
MOV SPI0CFG, #40h
MOV SPI0CN, #01h
....................
SPI_MODE:
CLR SPIF
MOV SPI0DAT,adc0h
JNB SPIF,$
CLR SPIF
MOV SPI0DAT,adc0l
JNB SPIF,$
RET
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016