;T b'00000000' => Fosc/4 = 10MHz
;T b'00000001' => Fosc/16 = 2.5Mhz
;T b'00000010' => Fosc/64 = 625kHz
;T b'00000011' => Reserved.
call HWSPI_W_speed
;******************************************************************************
; *** MAX5581 Initialization ***
bcf PORTC,RC2 ;T RC2 = CS\ Make CS\ Low
movlw 0xEC ;T byte0 of settling time config
call HWSPI_W_spidata_W ;T HW SPI WriteRead Operation
movlw 0x0F ;T byte1 of settling time config
call HWSPI_W_spidata_W ;T HW SPI WriteRead Operation
bsf PORTC,RC2 ;T RC2 = CS\ Make CS\ high
; *** MAX5581 Load All DAC Outputs to Zero Scale ***
Loopforever bcf PORTC,RC2 ;T RC2 = CS\ Make CS\ Low
movlw 0xD0 ;T byte0 of load all input/output to zeros
www.55dianzi.com
call HWSPI_W_spidata_W ;T HW SPI WriteRead Operation
movlw 0x00 ;T byte1 of load all input/output to zeros
call HWSPI_W_spidata_W ;T HW SPI WriteRead Operation
bsf PORTC,RC2 ;T RC2 = CS\ Make CS\ high
; *** MAX5581 Load All DAC Outputs to Full Scale ***
bcf PORTC,RC2 ;T RC2 = CS\ Make CS\ Low
movlw 0xDF&
nbsp; ;T byte0 of load all input/output to zeros
call HWSPI_W_spidata_W ;T HW SPI WriteRead Operation
movlw 0xFF ;T byte1 of load all input/output to zeros
call HWSPI_W_spidata_W ;T HW SPI WriteRead Operation
bsf PORTC,RC2 ;T RC2 = CS\ Make CS\ high
; movwf xmtreg ;T move w to xmtreg
; call asyxmtc ;T call UART routine
;
goto Loopforever ;T loop forever
;******************************************************************************
errsrv
movlw 0x65 ; load w with 'e' = 0x65
movwf xmtreg ; move w to xmtreg
call asyxmtc ; call UART routine
dead goto dead ; goto endless loop
;******************************************************************************
set_cf_error
movlw 0x00 ; 0x00 into W
sublw 0x00 ; Subtract W-0x00: If W<=N C set; If W&g
www.55dianzi.com
t;N C clear.
return ; error=> cf="set"
;******************************************************************************
clear_cf_ok
movlw 0x01 ; 0x00 into W
sublw 0x00 ; Subtract W-0x00: If W<=N C set; If W>N C clear.
return ; suCCess=> cf="clear"
;***********
*******************************************************************
HWSPI_init ;T SPI MSSP Initialization for M2EAM schematIC
;T CPOL,CPHA = 0,0 => CKP = 0 & CKE = 1
bcf SSPCON1,SSPEN ;T DISAble the MSSP, SSPCON-5
;
bcf TRISC,SDO ;T TRISC bit5 RC5/SDO = 0 MOSI Output
bcf TRISC,SCK ;T TRISC bit3 RC3/SCK = 0 SCLK Output
bsf TRISC,SDI ;T TRISC bit4 RC4/SDI = 1 MISO Input
movlw 0x0040 ;T SSPSTAT bit8 = 0 sampLED in middle
;T SSPSTAT bit6 = CKE = 1
movwf SSPSTAT ;T Used to be sspstat on older PIC s
movlw 0x0020 ;T SSPCON1 bit5 SSPEN = 1 Enables sycn serial port
;T SSPCON1 bit4 = CKP = 0
;T SSPCON1 bit3= 0 = Turn MSSP ON for SPI
;T SSPCON1 bit2-0 = 000b = SCLK = Fosc/4
;T SSPCON1 bit2 = 0 = Master
movwf SSPCON1 ;T Used to be sspcon on older PICs
bsf INTCON,PEIE ;T INTCON bit6 = PEIE = 1 = Enable periph interrupt
bsf PI
www.55dianzi.com
nbsp; retlw 0
;******************************************************************************
;End of program
END
表1. 配置写命令,将所有四路 DAC 的建立时间设置为3&mICro;s
SPI Line C7 C6 C5 C4 C3 C2 C1 C0 D7 D6 D5 D4 D3 D2 D1 D0
DIN &nb
sp; 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1
表2. 装载全部DAC输出命令
SPI Line C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
DIN (1st) 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
DIN (2nd) 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
表2中,第一个命令将所有DAC输出设置为零,第二个命令将所有DAC设置为满量程输出。
上一页 [1] [2] [3]
本文关键字:控制器 接口 接口电路,单元电路 - 接口电路