📄 tstrs485.lst
字号:
CCS PCW C Compiler, Version 3.023, 11338
Filename: d:\embedded\rs485net\source\tstrs485.LST
ROM used: 1620 (40%)
Largest free fragment is 2048
RAM used: 115 (60%) at main() level
126 (66%) worst case
Stack: 9 worst case (6 in main + 3 for interrupts)
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 4C6
0003: NOP
0004: BTFSS 0A,3
0005: BCF 0A,4
0006: BTFSC 0A,3
0007: BSF 0A,4
0008: BCF 0A,3
0009: BTFSC 03,5
000A: GOTO 00F
000B: MOVWF 25
000C: SWAPF 03,W
000D: MOVWF 26
000E: GOTO 014
000F: BCF 03,5
0010: MOVWF 25
0011: SWAPF 03,W
0012: MOVWF 26
0013: BSF 26,1
0014: MOVF 0A,W
0015: MOVWF 2D
0016: SWAPF 25,F
0017: MOVF 04,W
0018: MOVWF 27
0019: MOVF 20,W
001A: MOVWF 28
001B: MOVF 21,W
001C: MOVWF 29
001D: MOVF 22,W
001E: MOVWF 2A
001F: MOVF 23,W
0020: MOVWF 2B
0021: MOVF 24,W
0022: MOVWF 2C
0023: BCF 03,5
0024: BTFSS 0B,5
0025: GOTO 028
0026: BTFSC 0B,2
0027: GOTO 046
0028: MOVLW 8C
0029: MOVWF 04
002A: BTFSS 00,5
002B: GOTO 02E
002C: BTFSC 0C,5
002D: GOTO 048
002E: MOVF 27,W
002F: MOVWF 04
0030: MOVF 28,W
0031: MOVWF 20
0032: MOVF 29,W
0033: MOVWF 21
0034: MOVF 2A,W
0035: MOVWF 22
0036: MOVF 2B,W
0037: MOVWF 23
0038: MOVF 2C,W
0039: MOVWF 24
003A: MOVF 2D,W
003B: MOVWF 0A
003C: BTFSC 0A,4
003D: BSF 0A,3
003E: BCF 0A,4
003F: SWAPF 26,W
0040: MOVWF 03
0041: BCF 03,5
0042: SWAPF 25,W
0043: BTFSC 26,1
0044: BSF 03,5
0045: RETFIE
0046: BCF 0A,3
0047: GOTO 0FE
0048: BCF 0A,3
0049: GOTO 185
.................... //*********************************************************************************
.................... // TsRs485.c
.................... //
.................... // Test of RS485 network protocol
.................... //
.................... //
.................... // Version 1.0 beta
.................... //
.................... // Processor: PIC16F87x
.................... // Compiler: CCS PCM 3.023
.................... //
.................... //
.................... // By: J.Winpenny
.................... // j.winpenny@ukonline.co.uk
.................... //
.................... //
.................... //
.................... //*********************************************************************************
.................... #DEVICE PIC16F873 *=16
.................... #include <16f873.h>
.................... //////// Standard Header file for the PIC16F873 device ////////////////
.................... //#device PIC16F873
.................... #list
....................
.................... #define MASTER
....................
.................... #use delay(clock=4000000)
*
01A0: MOVLW BC
01A1: MOVWF 04
01A2: MOVF 00,W
01A3: BTFSC 03,2
01A4: GOTO 1B4
01A5: MOVLW 01
01A6: MOVWF 21
01A7: CLRF 20
01A8: DECFSZ 20,F
01A9: GOTO 1A8
01AA: DECFSZ 21,F
01AB: GOTO 1A7
01AC: MOVLW 4A
01AD: MOVWF 20
01AE: DECFSZ 20,F
01AF: GOTO 1AE
01B0: NOP
01B1: NOP
01B2: DECFSZ 00,F
01B3: GOTO 1A5
01B4: RETLW 00
.................... #fuses HS,NOWDT,PUT,BROWNOUT,NOPROTECT,NOLVP,NOCPD,NOWRT
....................
.................... #include <Tst485.h>
....................
.................... void Setup(void);
.................... void ConfigureComms(void);
....................
....................
.................... // EEPROM addresses
....................
.................... #define NET_ADDRESS_HIGH 0
.................... #define NET_ADDRESS_LOW 1
....................
.................... #ifndef MASTER
.................... // PORT Configuration
.................... #define PortAConfig 0x3F
.................... #define PortBConfig 0x00
.................... #define PortCConfig 0x00
.................... #define PortDConfig 0x00
.................... #define PortEConfig 0x00
.................... #else
.................... // PORT Configuration
.................... #define PortAConfig 0x00
.................... #define PortBConfig 0x00
.................... #define PortCConfig 0x0f
.................... #define PortDConfig 0x00
.................... #define PortEConfig 0x00
.................... #endif
....................
....................
.................... //*********************************************************************
....................
....................
.................... #define TMR0_RELOAD 255 // TMR0 reload value
.................... //#define TMR0_RELOAD 248 // TMR0 reload value
....................
....................
.................... #BYTE PORTA = 0x05
.................... #BYTE PORTB = 0x06
.................... #BYTE PORTC = 0x07
.................... #BYTE PORTD = 0x08
.................... #BYTE PORTE = 0x09
.................... #BYTE RCREG = 0x1a
.................... #BYTE TXREG = 0x19
.................... #BYTE STATUS = 0x03
.................... #BYTE SSPBUF = 0x13
.................... #BYTE SSPCON = 0x14
.................... #BYTE SSPCON2 = 0x91
.................... #BYTE PR2 = 0x92
.................... #BYTE SSPADD = 0x93
.................... #BYTE SSPSTAT = 0x94
.................... #BYTE SPBRG = 0x99
.................... #BYTE ADCON1 = 0x9f
.................... #BYTE OPTIONREG = 0x81
....................
.................... #BYTE PIE1 = 0x8c
.................... #BYTE PIR1 = 0x0c
.................... #BYTE INTCON = 0x0b
.................... #BYTE TMR0 = 0x101
.................... #BYTE RCSTA = 0x18
.................... #BYTE TXSTA = 0x98
....................
.................... #BYTE TRISA = 0x85
.................... #BYTE TRISB = 0x86
.................... #BYTE TRISC = 0x87
.................... #BYTE TRISD = 0x88
.................... #BYTE TRISE = 0x89
....................
.................... // INTCON BITS
.................... #define GIE 7
.................... #define PEIE 6
.................... #define T0IE 5
.................... #define INTE 4
.................... #define RBIE 3
.................... #define T0IF 2
.................... #define INTF 1
.................... #define RBIF 0
....................
.................... // USART Register bits
.................... #define CSCR 7
.................... #define TX9 6
.................... #define TXEN 5
.................... #define SYNC 4
.................... #define BRGH 2
.................... #define TRMT 1
.................... #define TX9D 0
.................... #define SPEN 7
.................... #define RX9 6
.................... #define SREN 5
.................... #define CREN 4
.................... #define ADDEN 3
.................... #define FERR 2
.................... #define OERR 1
.................... #define RX9D 0
....................
.................... #define TRMT_MASK 2
....................
.................... // Bits of STATUS register
.................... #define IRP 7
.................... #define RP1 6
.................... #define RP0 5
.................... #define T0 4
.................... #define PD 3
.................... #define ZERO 2
.................... #define DC 1
.................... #define CARRY 0
....................
.................... // Bits of PIE1
.................... #define PSPIE 7
.................... #define ADIE 6
.................... #define RCIE 5
.................... #define TXIE 4
.................... #define SSPIE 3
.................... #define CCP1IE 2
.................... #define TMR2IE 1
.................... #define TMR1IE 0
....................
.................... // Bits of SSPSTAT
.................... #define SMP 7
.................... #define CKE 6
.................... #define D_A 5
.................... //#define P 4 // Cause compiler error because of identifier s
.................... //#define S 3
.................... #define R_W 2
.................... #define R_W_MASK 0x04
.................... #define UA 1
.................... #define BF 0
....................
.................... // Bits of PIR1
.................... #define PSPIF 7
.................... #define ADIF 6
.................... #define RCIF 5
.................... #define TXIF 4
.................... #define SSPIF 3
.................... #define SSPIF_MASK 0x08
.................... #define CCP1IF 2
.................... #define TMR2IF 1
.................... #define TMR1IF 0
....................
.................... // Bits of SSPCON2
....................
.................... #define GCEN 7
.................... #define ACKSTAT 6
.................... #define ACKDT 5
.................... #define ACKEN 4
.................... #define RCEN 3
.................... #define PEN 2
.................... #define RSEN 1
.................... #define SEN 0
....................
.................... #include <stdlib.h>
.................... //// (C) Copyright 1996,1997 Custom Computer Services ////
.................... //// This source code may only be used by licensed users of the CCS C ////
.................... //// compiler. This source code may only be distributed to other ////
.................... //// licensed users of the CCS C compiler. No other use, reproduction ////
.................... //// or distribution is permitted without written permission. ////
.................... //// Derivative programs created using this software in object code ////
.................... //// form are not restricted in any way. ////
.................... ////////////////////////////////////////////////////////////////////////////
....................
.................... #ifndef _stdlib_
....................
.................... #define _stdlib_ true
....................
.................... float atof(char * s) {
.................... float pow10;
.................... float result;
.................... int sign, point;
.................... char c;
.................... int ptr;
....................
.................... ptr=0;
.................... sign = 0;
.................... point = 0;
.................... pow10 = 1.0;
.................... result = 0.0;
....................
.................... do
.................... c=s[ptr++];
.................... while ((c<'0'||c>'9') && c!='+' && c!='-' && c!='.');
....................
.................... while((c>='0' && c<='9') || c=='+' || c=='-' || c=='.') {
.................... if(c == '-') {
.................... sign = 1;
.................... c = s[ptr++];
.................... }
....................
.................... while((c >= '0' && c <= '9') && point == 0) {
.................... result = 10*result + c - '0';
.................... c = s[ptr++];
.................... }
....................
.................... if (c == '.') {
.................... point = 1;
.................... c = s[ptr++];
.................... }
....................
.................... while((c >= '0' && c <= '9') && point == 1) {
.................... pow10 = pow10*10;
.................... result += (c - '0')/pow10;
.................... c = s[ptr++];
.................... }
.................... }
....................
.................... if (sign == 1)
.................... result = -1*result;
....................
.................... return(result);
.................... }
....................
.................... #define labs abs
.................... #define fabs abs
....................
.................... /************************************************************/
....................
.................... signed int atoi(char *s)
.................... {
.................... signed int result;
.................... int sign, base, index;
.................... char c;
....................
.................... index = 0;
.................... sign = 0;
.................... base = 10;
.................... result = 0;
....................
.................... // Omit all preceeding alpha characters
.................... do
.................... c = s[index++];
.................... while ((c < '0' || c > '9') && c != '+' && c != '-');
....................
.................... // increase index if either positive or negative sign is detected
.................... if (c == '-')
.................... {
.................... sign = 1; // Set the sign to negative
.................... c = s[index++];
.................... }
.................... else if (c == '+')
.................... {
.................... c = s[index++];
.................... }
....................
.................... if (c >= '0' && c <= '9')
.................... {
....................
.................... // Check for hexa number
.................... if (c == '0' && (s[index] == 'x' || s[index] == 'X'))
.................... {
.................... base = 16;
.................... index++;
.................... c = s[index++];
.................... }
....................
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -