|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
那位大俠辛苦一下,把基于2510CAN控制器的匯編程序變成C, |
| 作者:zhaojiuhua 欄目:單片機(jī) |
;************************************************ ;* EVM2510A.ASM * ;************************************************ ;* * ;* Written by: Calvin Ho * ;* Technical Sales ENGINEER. * ;* MICROCHIP TECHNOLOGY Inc. * ;* Date: 12 Nov 2000 * ;* Revision: 1.0 * ;************************************************ ; ; ; ; This source code provides a demonstration of the MSSP peripheral ; on the PIC16F876 MCU & MCP2510 CAN Controller. ; It will show how to Configure and Write/Read the SPI data to/from MCP2510 ; >> The operation Freq is 16MHZ for both 877 & MCP2510 ; >> The Bit Rate will be set as 125K Bps with 8TQ/Bit ; >> The 877 receive data from MCP2510 & Send Byte2 to both PORTD & CCPR1L ; >> Byte2 contain the ADC result send from Message 100 ; >> CCPR1L is PWM duty cycle register, change it will change the duty cycle of PWM OUTPUT ; >> ; >> list p=16F877 #include <p16F877.inc> #include <REG2510.inc> ; Variables used in this program; UDATA TEMPH RES 1 ; TEMPH & TEMPL are used for Bin2BCD subroutine TEMPL RES 1 ; TEMPVar1 RES 1 TEMPVar2 RES 1 LoopCntr RES 1 SPI_TEMP RES 1 ; Used for SPI TEMP in order to KEEP the content of W reg Dlen_2510 RES 1 Addr_2510 RES 1 Buf_2510 RES 8 STATUS_2510 RES 1 CAN_PORTD RES 1 CAN_PWM RES 1 TEMP_ADC RES 1 ;****************************************************************** ;**** The location of FLASH Registers is BANK3 ;**** Because the EEDATA & EEADR are located @ Bnk 3 ;****************************************************************** w_temp EQU 0x72 status_temp EQU 0x73 pclath_temp EQU 0x74 PORT_CS2510 EQU PORTC #define CS2510 PORTC,0 ; RC2 is CS CONTROL signal of this 2510 EVM Board !! #define MESSAGE_NO1 .250 ; #define PWM_DUTY .255 ; Locates startup code @ the reset vector ;******************************************************* ;**** MACRO RESET_2510 ;**** RESET MCP2510 ;******************************************************* RESET_2510 MACRO BANKSEL PORT_CS2510 bcf CS2510 movlw CMD_RESET call Write_SPI_Byte BANKSEL PORT_CS2510 bsf CS2510 ENDM ;******************************************************* ;**** MACRO WRITE_2510 W_ADD,W_DATA ;**** Write W_DATA into W_ADD ;******************************************************* WRITE_2510 MACRO W_ADD,W_DATA BANKSEL PORT_CS2510 bcf CS2510 movlw CMD_WRITE call Write_SPI_Byte movlw W_ADD call Write_SPI_Byte movlw W_DATA call Write_SPI_Byte BANKSEL PORT_CS2510 bsf CS2510 ENDM ;******************************************************* ;**** MACRO READ_2510 R_ADD ;**** Read data @ address R_ADD ;******************************************************* READ_2510 MACRO R_ADD BANKSEL PORT_CS2510 bcf CS2510 movlw CMD_READ call Write_SPI_Byte movlw R_ADD &nb |
| 2樓: | >>參與討論 |
| 作者: zhaojiuhua 于 2003/10/29 14:40:00 發(fā)布:
INC文件,全了 ;****************************************************** ;**** REF2510.inc ;**** Definition file of MCP2510 registers & COMMANDs ;****************************************************** CMD_WRITE EQU b'00000010' CMD_READ EQU b'00000011' CMD_RESET EQU b'11000000' CMD_STATUS EQU b'10100000' CMD_MODIFY EQU b'00000101' CMD_RTS0 EQU b'10000001' CMD_RTS1 EQU b'10000010' CMD_RTS2 EQU b'10000100' ;**************************************************** ;**** FIRST PORTION : DEFINITION OF CONTROL REGS ;**************************************************** CANSTAT EQU 0x0E CANCTRL EQU 0x0F BFPCTRL EQU 0X0C TXRTSCTRL EQU 0X0D CNF1 EQU 0x2A CNF2 EQU 0x29 CNF3 EQU 0x28 CANINTE EQU 0x2B CANINTF EQU 0x2C EFLG EQU 0x2D TEC EQU 0x1C REC EQU 0x1D TXB0CTRL EQU 0x30 TXB1CTRL EQU 0x40 TXB2CTRL EQU 0X50 RXB0CTRL EQU 0X60 RXB1CTRL EQU 0X70 ;**************************************************** ;**** SECOND PORTION : MASK & FILTER REGS ;**************************************************** RXM0SIDH EQU 0X20 RXM0SIDL EQU 0X21 RXM0EID8 EQU 0X22 RXM0EID0 EQU 0X23 RXM1SIDH EQU 0X24 RXM1SIDL EQU 0X25 RXM1EID8 EQU 0X26 RXM1EID0 EQU 0X27 RXF0SIDH EQU 0X00 RXF0SIDL EQU 0X01 RXF0EID8 EQU 0X02 RXF0EID0 EQU 0X03 RXF1SIDH EQU 0X04 RXF1SIDL EQU 0X05 RXF1EID8 EQU 0X06 RXF1EID0 EQU 0X07 RXF2SIDH EQU 0X08 RXF2SIDL EQU 0X09 RXF2EID8 EQU 0X0A RXF2EID0 EQU 0X0B RXF3SIDH EQU 0X10 RXF3SIDL EQU 0X11 RXF3EID8 EQU 0X12 RXF3EID0 EQU 0X13 RXF4SIDH EQU 0X14 RXF4SIDL EQU 0X15 RXF4EID8 EQU 0X16 RXF4EID0 EQU 0X17 RXF5SIDH EQU 0X18 RXF5SIDL EQU 0X19 RXF5EID8 EQU 0X1A RXF5EID0 EQU 0X1B ;**************************************************** ;**** THIRD PORTION : TRANSMIT IDs & BUFFER ;**************************************************** TXB0SIDH EQU 0X31 TXB0SIDL EQU 0X32 TXB0EID8 EQU 0X33 TXB0EID0 EQU 0X34 TXB0DLC EQU 0X35 TXB0D0 EQU 0X36 TXB0D1 EQU 0X37 TXB0D2 EQU 0X38 TXB0D3 EQU 0X39 TXB0D4 EQU 0X3A TXB0D5 EQU 0X3B TXB0D6 EQU 0X3C TXB0D7 EQU 0X3D ;**** TRANSMIT BUFFER 1 .. TXB1SIDH EQU 0X41 TXB1SIDL EQU 0X42 TXB1EID8 EQU 0X43 TXB1EID0 EQU 0X44 TXB1DLC EQU 0X45 TXB1D0 EQU 0X46 TXB1D1 EQU 0X47 TXB1D2 EQU 0X48 TXB1D3 EQU 0X49 TXB1D4 EQU 0X4A TXB1D5 EQU 0X4B TXB1D6 EQU 0X4C TXB1D7 EQU 0X4D ;**** TRANSMIT BUFFER 2 .. TXB2SIDH EQU 0X51 TXB2SIDL EQU 0X52 TXB2EID8 EQU 0X53 TXB2EID0 EQU 0X54 TXB2DLC EQU 0X55 TXB2D0 EQU 0X56 TXB2D1 EQU 0X57 TXB2D2 EQU 0X58 TXB2D3 EQU 0X59 TXB2D4 &n |
|
| 3樓: | >>參與討論 |
| 作者: 農(nóng)夫XP 于 2003/10/31 14:24:00 發(fā)布:
不是已經(jīng)給出C程序了么 |
|
| 4樓: | >>參與討論 |
| 作者: 農(nóng)夫XP 于 2003/10/31 14:25:00 發(fā)布:
MICROCHIP已經(jīng)有c程序了 啊。。 |
|
| 5樓: | >>參與討論 |
| 作者: haimei 于 2003/11/4 9:10:00 發(fā)布:
看看這個(gè)C源瑪 試試這個(gè), 我還沒機(jī)會(huì)試, 請(qǐng)告訴我你試的結(jié)果. 這是PCW的,原理通了轉(zhuǎn)成別的也不難. 我的Email: zhaozh@yahoo.com ///////////////////////////////////////////////////////////////////////// //// can-18xxx8.c //// //// CAN Library routines for MICROCHIP's PIC18Cxx8 and 18Fxx8 LINE //// //// //// //// This library provides the following functions: //// //// (for more information on these functions see the comment //// //// HEADER above each function) //// //// //// //// can_init - Configures the PIC18xxx8 CAN peripheral //// //// //// //// can_set_baud - Sets the baud rate CONTROL registers //// //// //// //// can_set_mode - Sets the CAN MODULE into a specific mode //// //// //// //// can_set_id - Sets the STANDARD and extended ID //// //// //// //// can_get_id - Gets the STANDARD and extended ID //// //// //// //// can_putd - Sends a message/request with specified ID //// //// //// //// can_getd - Returns specifid message/request and ID //// //// //// //// can_kbhit - Returns true if there is data in one of the //// //// receive buffers //// //// //// //// can_tbe - Returns true if the transmit buffer is ready to //// //// send more data //// //// //// //// can_abort - Aborts all pending transmissions //// //// & |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |