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

📄 nrf905_jinju.lis

📁 监测高压电电流
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module nrf905_JinJu.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
                        .area data(ram, con, rel)
 0000                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
 0000           _LPCData:
 0000                   .blkb 1
                        .area idata
 0000 FF                .byte 255
                        .area data(ram, con, rel)
 0001                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
 0001                   .dbsym s LPCData _LPCData c
 0001           _SecondCount::
 0001                   .blkb 2
                        .area idata
 0001 0000              .word 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
 0003                   .dbsym e SecondCount _SecondCount i
 0003           _Count::
 0003                   .blkb 2
                        .area idata
 0003 0000              .word 0
                        .area data(ram, con, rel)
 0005                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
 0005                   .dbsym e Count _Count i
 0005           _LastCmdCount::
 0005                   .blkb 2
                        .area idata
 0005 0000              .word 0
                        .area data(ram, con, rel)
 0007                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
 0007                   .dbsym e LastCmdCount _LastCmdCount i
                        .area text(rom, con, rel)
 0000                   .dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
 0000                   .dbfunc e EEPROM_read _EEPROM_read fc
 0000           ;      uiAddress -> R16,R17
                        .even
 0000           _EEPROM_read::
 0000                   .dbline -1
 0000                   .dbline 218
 0000           ; //    用LM2902取代PGA103版本
 0000           ; //
 0000           ; /***********************************************************************************
 0000           ; Project:          uRF905 demo program (V2.1)
 0000           ; Filename:         uRF905_Sample_Code.c
 0000           ; Prozessor:        Mega8 family
 0000           ; Compiler:         ICCAVR Version 6.14
 0000           ; Autor:            YUAN
 0000           ; Copyrigth:        (c) Sensirion AG
 0000           ; ***********************************************************************************/
 0000           ; /////////////////////////////////////////////////////////////
 0000           ; /*
 0000           ;       烟台国网中电自动化技术有限公司
 0000           ;       环境模块通信程序(ICCAVR)
 0000           ;       作者:袁德海
 0000           ; 
 0000           ; 规约:
 0000           ;       1、串口通讯帧格式
 0000           ;               1BYTE 1BYTE         2BYTE
 0000           ;               头部  类型                 数据 结尾
 0000           ;               EB 90  00(下行)  ID    num      LPC                             召唤数据                       7字节
 0000           ;               EB 90  01(上行)  ID    num*2数据            LPC 发送数据                        6+2*num 字节
 0000           ;               EB 90  02(下行)  ID        num NO 3级报警限     LPC     设置参数                              14字节
 0000           ;               EB 90  03(上行)  ID        num NO 3级报警限 LPC 校验参数                                  14字节
 0000           ;               其中:num为该监测装置的温度监测点数
 0000           ;       2、SPI通讯帧格式(只有报告数据与串口通讯帧格式不同,其余完全相同
 0000           ;               1BYTE 1BYTE         2BYTE 1BYTE  1BYTE
 0000           ;               头部  类型                                                 数据                         结尾
 0000           ;               EB 90  01(上行)  ID    num startno  num*2数据       LPC 发送数据                6+2*num 字节
 0000           ;                  其中:num为该帧报文的数据个数,startno为该帧数据的测量号,因此最多4个数据
 0000           ; */
 0000           ; #include<iom8v.h>
 0000           ; #include <math.h>
 0000           ; #include<macros.h>
 0000           ; #include<eeprom.h>
 0000           ; #include<string.h>
 0000           ; #include<stdio.h>
 0000           ; 
 0000           ; #define CH_NO_FREQ_422_4MHz  0x000                     //工作频率422.4MHz(433MHz频段最低频率)
 0000           ; #define CH_NO_FREQ_422_5MHz  0x001                     //工作频率422.5MHz
 0000           ; #define CH_NO_FREQ_425_0MHz  0x01a                     //工作频率425.0MHz
 0000           ; #define CH_NO_FREQ_427_5MHz  0x033                     //工作频率427.5MHz
 0000           ; 
 0000           ; #define CH_NO_FREQ_430_0MHz  0x04c                     //工作频率430.0MHz
 0000           ; #define CH_NO_FREQ_433_0MHz  0x06a                     //工作频率433.0MHz(433MHz频段基准频率)
 0000           ; #define CH_NO_FREQ_433_1MHz  0x06b                     //工作频率433.1MHz
 0000           ; #define CH_NO_FREQ_433_2MHz  0x06c                     //工作频率433.2MHz
 0000           ; #define CH_NO_FREQ_434_7MHz  0x07b                     //工作频率434.7MHz
 0000           ; #define CH_NO_FREQ_473_5MHz  0x1ff                     //工作频率473.5MHz(433MHz频段最高频率)
 0000           ; 
 0000           ; #define CH_NO_FREQ_844_8MHz  0x000                     //工作频率844.8MHz(868MHz频段最低频率)
 0000           ; 
 0000           ; #define CH_NO_FREQ_862_0MHz  0x056                     //工作频率862.0MHz
 0000           ; #define CH_NO_FREQ_868_0MHz  0x074                     //工作频率868.0MHz(868MHz频段基准频率)
 0000           ; #define CH_NO_FREQ_868_2MHz  0x075                     //工作频率868.2MHz
 0000           ; #define CH_NO_FREQ_868_4MHz  0x076                     //工作频率868.4MHz
 0000           ; #define CH_NO_FREQ_869_8MHz  0x07d                     //工作频率869.8MHz
 0000           ; #define CH_NO_FREQ_895_8MHz  0x0ff                     //工作频率895.8MHz
 0000           ; #define CH_NO_FREQ_896_0MHz  0x100                     //工作频率896.0MHz
 0000           ; #define CH_NO_FREQ_900_0MHz  0x114                     //工作频率900.0MHz
 0000           ; #define CH_NO_FREQ_902_2MHz  0x11f                     //工作频率902.2MHz
 0000           ; #define CH_NO_FREQ_902_4MHz  0x120                     //工作频率902.4MHz
 0000           ; #define CH_NO_FREQ_915_0MHz  0x15f                     //工作频率915.0MHz(915MHz频段基准频率)
 0000           ; #define CH_NO_FREQ_927_8MHz  0x19f                     //工作频率927.8MHz
 0000           ; 
 0000           ; #define CH_NO_FREQ_947_0MHz  0x1ff                     //工作频率947.0MHz(915MHz频段最高频率)
 0000           ; 
 0000           ; #define CH_NO_FREQ           CH_NO_FREQ_430_0MHz       //工作频率433.0MHz
 0000           ; //#define CH_NO_FREQ           CH_NO_FREQ_915_0MHz       //工作频率915.0MHz
 0000           ; 
 0000           ; 
 0000           ; #define CH_NO_BYTE           CH_NO_FREQ & 0xff         //工作频率低8位       Byte0       01101100
 0000           ; 
 0000           ; #define AUTO_RETRAN          0x20                      //重发数据包          Byte1.5     0
 0000           ; #define RX_RED_PWR           0x10                      //接收低功耗模式      Byte1.4     0
 0000           ; #define PA_PWR__10dBm        0x00                      //输出功率-10dBm      Byte1.3~2   00
 0000           ; #define PA_PWR_2dBm          0x04                      //输出功率+2dBm       Byte1.3~2
 0000           ; #define PA_PWR_6dBm          0x08                      //输出功率+6dBm       Byte1.3~2
 0000           ; #define PA_PWR_10dBm         0x0c                      //输出功率+10dBm      Byte1.3~2
 0000           ; #define HFREQ_PLL_433MHz     0x00                      //工作在433MHz频段    Byte1.1     0
 0000           ; #define HFREQ_PLL_868MHz     0x02                      //工作在868MHz频段    Byte1.1
 0000           ; #define HFREQ_PLL_915MHz     0x02                      //工作在915MHz频段    Byte1.1
 0000           ; #define CH_NO_BIT8           CH_NO_FREQ >> 8           //工作频率第9位       Byte1.0     0
 0000           ; 
 0000           ; #define       ADDR_1                          'G'
 0000           ; #define       ADDR_2                          'W'
 0000           ; #define       ADDR_3                          'Z'
 0000           ; #define       ADDR_4                          'D'
 0000           ; 
 0000           ; #define CMD_ASKDATA                                   0x00
 0000           ; #define CMD_RETDATA                                   0x01
 0000           ; #define CMD_DOWNPARA                          0x02
 0000           ; #define CMD_RETPARA                                   0x03
 0000           ; 
 0000           ; #define CMD_SETID                   0X05
 0000           ; #define CMD_SETID_OK                0X06
 0000           ; #define CMD_READID                  0x07
 0000           ; 
 0000           ; #define       MAXNUM          8                                       //
 0000           ; 
 0000           ; typedef unsigned char BOOLEAN;
 0000           ; typedef unsigned char INT8U;
 0000           ; typedef signed char           INT8S;
 0000           ; typedef unsigned int  INT16U;
 0000           ; typedef signed int            INT16S;
 0000           ; typedef unsigned long INT32U;
 0000           ; typedef signed long           INT32S;
 0000           ; 
 0000           ; #define BIT_H(x)      (1<<x)
 0000           ; #define BIT_L(x)      (~(1<<x))
 0000           ; 
 0000           ; #define       PWR_UP_H        (PORTB |= BIT_H(PB0))
 0000           ; #define       PWR_UP_L        (PORTB &= BIT_L(PB0))
 0000           ; 
 0000           ; #define PAC_H       (PORTB |= BIT_H(PB0))
 0000           ; #define PAC_L       (PORTB |= BIT_L(PB0))
 0000           ; 
 0000           ; #define       CSN_H           (PORTB |= BIT_H(PB2))
 0000           ; #define       CSN_L           (PORTB &= BIT_L(PB2))
 0000           ; 
 0000           ; #define       MOSI_H          (PORTB |= BIT_H(PB3))
 0000           ; #define       MOSI_L          (PORTB &= BIT_L(PB3))
 0000           ; 
 0000           ; #define       MISO_H          (PORTB |= BIT_H(PB4))
 0000           ; #define       MISO_L          (PORTB &= BIT_L(PB4))
 0000           ; 
 0000           ; #define       SCK_H           (PORTB |= BIT_H(PB5))
 0000           ; #define       SCK_L           (PORTB &= BIT_L(PB5))
 0000           ; 
 0000           ; #define       CD                      (PIND & BIT_H(PD2))
 0000           ; #define       DR                      (PIND & BIT_H(PD3))
 0000           ; #define       AM                      (PIND & BIT_H(PD4))
 0000           ; 
 0000           ; #define       TX_EN_H         (PORTD |= BIT_H(PD5))
 0000           ; #define       TX_EN_L         (PORTD &= BIT_L(PD5))
 0000           ; 
 0000           ; #define       TRX_CE_H        (PORTD |= BIT_H(PD6))
 0000           ; #define       TRX_CE_L        (PORTD &= BIT_L(PD6))
 0000           ; 
 0000           ; #define       LED_H           (PORTD |= BIT_H(PD7))
 0000           ; #define       LED_L           (PORTD &= BIT_L(PD7))
 0000           ; 
 0000           ; 
 0000           ; #define noACK 0
 0000           ; #define ACK   1
 0000           ; 
 0000           ; #define fosc          7372800
 0000           ; #define baud          115200
 0000           ; 
 0000           ; #define MS_COUNT      fosc/1000/17            //延时计数
 0000           ; #define SR_NOP()      asm("nop")                      //空指令
 0000           ; 
 0000           ; #define RXBUF_LEN     32
 0000           ; #define RXBUF_LEN1    RXBUF_LEN-1
 0000           ; 
 0000           ; #define SPI_BUF_LEN           16
 0000           ; #define SPI_BUF_LEN1  SPI_BUF_LEN-1
 0000           ; 
 0000           ; #define       BYTE    unsigned char
 0000           ; #define       WORD    unsigned int
 0000           ; 
 0000           ; BYTE  TxFlag[6];
 0000           ; 
 0000           ; BYTE  Mode;                                   //      运行模式        0 -- 正常,1 -- 测试
 0000           ; 
 0000           ; WORD  ID;                                             //  要发送的ID号
 0000           ; BYTE  num;                                    //      监测单元的监测点数
 0000           ; BYTE  SPI_Received;
 0000           ; BYTE  Register[10];
 0000           ; 
 0000           ; static INT8U  rxbuf[RXBUF_LEN], LPCData=0xff;
 0000           ; static INT8U  rxpt;
 0000           ; static INT8U  handlept;
 0000           ; 
 0000           ; 
 0000           ; static BYTE           tx_addr[4];
 0000           ; static BYTE           tx_buf[RXBUF_LEN];
 0000           ; static BYTE           buf[RXBUF_LEN];
 0000           ; static BYTE           tx_len;
 0000           ; 
 0000           ; 
 0000           ; static INT8U  spi_rxbuf[SPI_BUF_LEN];
 0000           ; static INT8U  spi_rxpt;
 0000           ; static INT8U  spi_handlept;
 0000           ; 
 0000           ; #define                       W_CONFIG                        0x00
 0000           ; #define                       R_CONFIG                        0x10
 0000           ; #define                       W_TX_PAYLOAD            0x20
 0000           ; #define                       R_TX_PAYLOAD            0x21
 0000           ; #define                       W_TX_ADDRESS            0x22
 0000           ; #define                       R_TX_ADDRESS            0x23
 0000           ; #define                       R_RX_PAYLOAD            0x24
 0000           ; #define                       CHANNEL_CONFIG          0x8c
 0000           ; #define                       SPI_CMD_NUM                     8
 0000           ; 
 0000           ; WORD  TCNTData;
 0000           ; WORD  SecondCount=0;
 0000           ; WORD  Count=0;
 0000           ; 
 0000           ; BYTE  FlashFlag;              //灯闪烁标志
 0000           ; BYTE  SendDataFlag;
 0000           ; 
 0000           ; #define       SENDTIMER       3                               //      每10秒钟发送一次数据
 0000           ; #define       NODATALIMIT     1000                            //      10分钟收不到命令则复位
 0000           ; #define       FLASHLIMIT      2                               //      每收到一组数据闪烁1次
 0000           ; WORD  NoDataCount;
 0000           ; WORD  temperature;                            //      环境温度
 0000           ; #define       LASTCMDCOUNT    5
 0000           ; 
 0000           ; WORD  LastCmdCount=0;
 0000           ; 
 0000           ; void handle(void);
 0000           ; void InitSPI(void);
 0000           ; 
 0000           ; 
 0000           ; /////////////////////////////////////////////////////////////
 0000           ; BYTE EEPROM_read(WORD uiAddress)
 0000           ; {
 0000           L2:
 0000                   .dbline 219
 0000           ;       while(EECR&(1<<EEWE));          //等待写入前一个字节
 0000           L3:
 0000                   .dbline 219
 0000 E199              sbic 0x1c,1
 0002 FECF              rjmp L2
 0004           X0:
 0004                   .dbline 220
 0004           ;       EEAR=uiAddress;                         //设置地址寄存器
 0004 1FBB              out 0x1f,R17
 0006 0EBB              out 0x1e,R16
 0008                   .dbline 221
 0008           ;       EECR |= (1<<EERE);                      //通过设置EERE,开始读EEPROM
 0008 E09A              sbi 0x1c,0
 000A                   .dbline 222
 000A           ;       return EEDR;                            //返回数据寄存器
 000A 0DB3              in R16,0x1d
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbsym r uiAddress 16 i
 000E                   .dbend
 000E                   .dbfunc e EEPROM_write _EEPROM_write fV
 000E           ;         ucData -> R18
 000E           ;      uiAddress -> R16,R17
                        .even
 000E           _EEPROM_write::
 000E                   .dbline -1
 000E                   .dbline 227
 000E           ; }
 000E           ; 
 000E           ; /////////////////////////////////////////////////////////////////////////////////
 000E           ; void EEPROM_write( WORD uiAddress, BYTE ucData)
 000E           ; {
 000E           L6:
 000E                   .dbline 228
 000E           ;       while(EECR&(1<<EEWE));          //等待写入前一个字节
 000E           L7:
 000E                   .dbline 228
 000E E199              sbic 0x1c,1
 0010 FECF              rjmp L6
 0012           X1:
 0012                   .dbline 229
 0012           ;       EEAR=uiAddress;                         //设置地址寄存器
 0012 1FBB              out 0x1f,R17
 0014 0EBB              out 0x1e,R16
 0016                   .dbline 230
 0016           ;       EEDR=ucData;                            //设置数据寄存器
 0016 2DBB              out 0x1d,R18
 0018                   .dbline 231
 0018           ;       EECR |= (1<<EEMWE);                     //将EEMWE写入高
 0018 E29A              sbi 0x1c,2
 001A                   .dbline 232
 001A           ;       EECR |= (1<<EEWE);                      //通过设置EEWE,开始写EEPROM
 001A E19A              sbi 0x1c,1
 001C                   .dbline -2
 001C           L5:
 001C                   .dbline 0 ; func end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -