⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tstrs485.lst

📁 基于PIC16F873构成485接口的C源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -