Aдикм (17.04.2007 17:43, просмотров: 2495)
тестирование <asm>
CS_OUT equ P3OUT
; Макросы
cs_low macro
bic.b #CS, &CS_OUT
endm
cs_high macro
bis.b #CS, &CS_OUT
endm
wait_tx macro
bit.b #TXEPT,&U0TCTL ; проверка
jnc $-4 ; ждем
endm
; Команды
rdid equ 9fh; Read Identification
; работающий пример
SetupP3 bis.b #BIT1+BIT2+BIT3,&P3SEL ; P3.1,2,3 SPI option select
bis.b #BIT0,&P3OUT ; P3.4 setup for scope trigger and
bis.b #BIT0+BIT1+BIT3,&P3DIR ; P3.5 for slave initialize
SetupSPI mov.b #CHAR+SYNC+MM+SWRST,&U0CTL ; 8-bit, SPI, Master
bis.b #CKPL+SSEL1+STC,&U0TCTL ; Polarity, SMCLK, 3-wire
mov.b #002h,&U0BR0 ; SPICLK = SMCLK/2
mov.b #000h,&U0BR1 ;
mov.b #000h,&U0MCTL ;
bis.b #USPIE0,&ME1 ; Module enable
bic.b #SWRST,&U0CTL ; SPI enable
bis.b #URXIE0,&IE1 ; Recieve interrupt enable
; чтение идентификационных кодов
; 3 вычитанных байта складываются по указателю R15
RDID
cs_low ;
mov.b #rdid, &Txbuf ; команда
wait_tx ;
mov.b #00h, &Txbuf ; пустая передача
wait_tx ;
mov.b &Rxbuf, 0(r15) ; код производителя
inc r15 ;
mov.b #00h, &Txbuf ; пустая передача
wait_tx ;
mov.b &Rxbuf, 0(r15) ; тип памяти
inc r15 ;
mov.b #00h, &Txbuf ; пустая передача
wait_tx ;
mov.b &Rxbuf, 0(r15) ; емкость памяти
cs_high ;
ret
</asm>